Вот эти Linux и IP:
В LinuxA я могу пинговать до 10.0.0.2 LinuxB.
В LinuxB я могу пинговать до 10.0.0.1 LinuxA.
В LinuxA я включил это:
/proc/sys/net/ipv4/ip_forward = 1
/proc/sys/net/ipv4/conf/tun0/forwarding = 1
В LinuxC я добавляю маршрут следующим образом:
route add -net 10.0.0.0 netmask 255.255.255.0 gw 188.9.5.2
И подтвердите, что LinuxC может пинговать как 10.0.0.1, так и 10.0.0.2
Однако в LinuxD я получаю эту ошибку «SIOCADDRT: Network is unreachable» при выполнении команды добавления маршрута, используемой в LinuxC (обратите внимание, что LinuxD может пинговать до 188.9.5.2).
Может кто-нибудь помочь мне с этой проблемой маршрута / шлюза?
@dmourati, спасибо за ответ. Все эти 4 Linux находятся в частной сети, хотя IP 188.x.x.x не относится к частному диапазону IP согласно RFC (скоро будет перенесен).
Похоже, что Linux D имеет только RFC 1918 частный адрес. Следовательно, Linux D не сможет напрямую достичь 188.9.5.2.
РЕДАКТИРОВАТЬ
Я предлагаю разместить все серверы в адресном пространстве RFC 1918 или все в публичной сети. Разобравшись с этим, вернитесь к проблеме туннеля / маршрутизации, которую вы подняли изначально.
да, вы должны добавить виртуальную сетевую карту для подключения к той же сети. Не рекомендуется использовать шлюз в другой сетевой маске (сегмент netowkr)
LinuxD не может подключиться к Linux C напрямую с этим адресом. Вы можете создать виртуальный интерфейс на LinuxC и LinuxD как часть той же подсети / 30 и передавать по нему трафик. Вам понадобится другой маршрут на каждом устройстве, которое должно с ним связываться.
Кажется, есть более простой способ сделать это, все ли они находятся на одном уровне Layer2? Не могли бы вы просто создать виртуальные устройства на каждом и поместить их в одну сеть? Если вы пытаетесь использовать адаптеры TUN как виртуальные вне физического, вам лучше использовать адаптеры eth0: 0 eth0: 1.