Назад | Перейти на главную страницу

Виртуальная сеть, может ping и traceroute, невозможно apt-get update

Я создаю виртуальную сеть с 6 виртуальными машинами в virtualBox. Один из них действует как роутер / нат / межсетевой экран. Эта первая машина использует 4 сетевые карты:

eth0 -> Internet
eth1 -> Subnet 1
eth2 -> Subnet 2 
eth3 -> Host-Only Network

Я дошел до точки, когда машины в подсетях могли подключаться к Интернету, установив nat в «маршрутизаторе», например:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Затем я начал настраивать третью подсеть, которая выходит из другой виртуальной машины в подсети 2 с этими сетевыми картами:

eth0 -> Subnet 2
eth1 -> Subnet 3

К подсети 3 подключается только один другой компьютер, но я собираюсь настроить на нем ssh-сервер, поэтому мне нужно маршрутизировать от маршрутизатора к машине в подсети 2 к этой другой. Для этого я использовал:

iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.20.46:22

В "роутере" и

iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.30.50:22

На машине ssh-сервера. Кроме того, чтобы заставить каждую машину «видеть» друг друга, я использовал:

route add default gw 192.168.20.46
route add -net 192.168.30.0 netmask 255.255.255.0 gw 192.168.20.46

На машине "роутер".

Теперь каждая машина может пинговать все, от других машин до 8.8.8.8, и трассировать их. Тем не мение,

apt-get update

на любой из машин, кроме маршрутизатора, отправляет пакет на маршрутизатор, и ответ не возвращается, поэтому он застревает в первой строке:

 0% Connecting ftp....(82.194.78.250)...

И никогда не идет дальше этого. (просто ошибки по истечении времени ожидания) Я предполагаю, что nat отправляет пакеты правильно, но на обратном пути они не могут добраться до компьютеров подсети.

Думаю, ошибалась. Машины отправляли запросы, и маршрутизатор перенаправлял их в другую подсеть, которая либо не знала, что с ней делать, либо возвращала их обратно на маршрутизатор. Решение заключается в добавлении -i eth0 в строку iptables, чтобы перенаправлялся только внешний трафик.