Я пытаюсь настроить простую систему enogh с 3 виртуальными машинами debian jessie: первая подключена ко второй, а вторая подключена к третьей. Я хочу, чтобы первый мог пинговать третий.
Для этого я установил статические IP-адреса (через / etc / network / interfaces) следующим образом:
#FIRST:
eth0 inet static address 172.28.11.2 netmask 255.255.255.0
#SECOND:
eth0 inet static address 172.28.11.1 netmask 255.255.255.0
eth1 inet static address 172.28.18.2 netmask 255.255.255.0
#THIRD:
eth0 inet static address 172.28.18.1 netmask 255.255.255.0
Также я включил опцию ipv4_forward на всех этих машинах:
net.ipv4.ip_forward=1 # /etc/sysctl.conf, all machines
и проверил, что он работает (вызвав cat /proc/...../ip_forward и убедившись, что 1
на выходе)
Первый может пинговать второй (проверено, работает). Второй может пинговать третий (проверил, работает).
Теперь я пытаюсь настроить простую таблицу маршрутизации: я добавляю этот маршрут на первом узле:
route add -net 172.28.18.0 netmask 255.255.255.0 dev eth0 gw 172.28.11.1
После этого я могу пинговать 172.28.11.2 (второй узел в другой сетевой маске), но все еще не могу достичь 172.28.11.1 (третий узел).
Если я сделаю traceroute, я увижу, что там ЯВЛЯЕТСЯ а 172.28.11.1
прыгать по маршруту (чтобы он ПЫТАЕТСЯ подключиться там), но не повезло.
Что я пропустил?
P.S. Моя конфигурация: windows 10 как хост, vmware player как виртуализация, debian 8 как все гости
Поскольку вы не упомянули, что добавили маршрут в третью систему, я предполагаю, что проблема в том, что третья система не знает, как маршрутизировать ответные пакеты на 172.28.11.0/24. Значит, вам нужно добавить туда маршрут.
Обратите внимание, что route
Команда в Linux очень давно устарела. Вам следует ознакомиться с ip
команда, она очень мощная и с ее помощью можно выполнять всевозможные интересные трюки.
Вы можете добавить требуемый маршрут в третью систему таким образом:
ip route add 172.28.11.0/24 via 172.28.18.2