LINUX.ORG.RU

Классика. VirtualBox и сеть. tap0, br0, всё круто, но отвалился форвардинг через хост-ос. Непонятство.


0

0

На хост ОС (главная ос), есть br0, который воткнут в виртуальный хабосвитч, куда также воткнут tap0, представляющий собой просто виртуальный конец, ведущий в виртуалку. Короче, br0 - 192.168.2.1, а на виртуалке по DHCP успешно стоит 192.168.2.151 (неважно, по DHCP или нет). С виртуалки успешно пингуется хост-ос (ping 192.168.2.1). Также виртуалка знает, что 192.168.2.1 - это шлюз и посылает на него все пакеты для интернета.

Хочу пингануть с виртуалки адрес 217.69.128.44. Эти ICMP запросы я вижу приходящими от виртуалки на хост-ОС через br0, но я не вижу, чтобы таковые появлялись на eth0 (через который сделано подключение хост-ос с инетом).

Наблюдение за br0 также показывает, что виртуалка ничего не получает назад, никаких официальных ICMP-отказов и ICMP-объяснений. Просто для виртуалки всё выглядит как отправка пакетов в никуда без всякого ответа.

С виртуалки клёво виден 192.168.2.1 - например работа с smb, ftp, запущенными на 192.168.2.1 (хост-ОС) идёт отлично.

Для желаемого мною форвардЕнга, на хост ОС проделано вот это:

echo «1» > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -F -t nat
iptables -A FORWARD -i br0 -m multiport -p udp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -o br0 -m multiport -p udp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -i br0 -m multiport -p tcp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -o br0 -m multiport -p tcp --ports 10:65000 -j ACCEPT

Такая вот история.

Итого, wireshark показывает, что ICMP на 217.69.128.44 принимаются через br0, но не показываются на eth0. Напомню, eth0 - это интерфейс, через который виден интернет. И Хост-ОС при желании что-то отправить на 217.69.128.44, шлёт пакеты через eth0, так что с маршрутизацией порядок. Непорядок с непониманием форвардинга.

Спасибо за ответы.

Фиксед, однако.
Вот так (правда, я не понял, почему именно так):

iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
iptables -A FORWARD -o br0 -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


До этого у меня была MASQUERADE-строка, но всё выглядело вот так:


iptables -t nat -I POSTROUTING -j MASQUERADE
iptables -A FORWARD -i br0 -m multiport -p udp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -o br0 -m multiport -p udp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -i br0 -m multiport -p tcp --ports 10:65000 -j ACCEPT
iptables -A FORWARD -o br0 -m multiport -p tcp --ports 10:65000 -j ACCEPT

mriadus
() автор топика

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE (на хосте)

route add default gw 192.168.2.1 (в госте)

либо другой какой-то NAT, а иначе как вы собрались зарулить разные сети?

r0mik
()
Ответ на: комментарий от mriadus

да я уже и сам не пойму этого вопроса своего))
видать что-то хотел сказать, да не закончил фразы.. речь шла о том, что без NAT-а оно у вас на eth0 и не попадет, да вы уже и сами разобрались...

r0mik
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.