У меня Linux-сервер с двумя сетевыми интерфейсами: eth0
(подключен к Интернету с помощью общедоступного IP-адреса A.B.C.208
) и eth1
(ни к чему не подключен, привязать к частному IP-адресу 10.U.V.159
). Часть частной сети требуется, потому что я настроил VPN (OpenSwan), конфигурация которой требует этого.
Мой OpenSwan VPN связывает мой 10.U.V.*
частная сеть на удаленный 10.X.Y.*
частная сеть. Канал VPN установлен и работает нормально.
Но когда я пингую сервер на удаленном 10.X.Y.*
сети, мне нужно заставить исходный интерфейс eth1
чтобы заставить его работать:
$ ping -I eth1 10.X.Y.31
PING 10.X.Y.31 (10.X.Y.31) from 10.U.V.159 eth1: 56(84) bytes of data.
64 bytes from 10.X.Y.31: icmp_seq=1 ttl=60 time=29.0 ms
...
В противном случае OpenSwan / VPN не будет перенаправлять пинг.
Как я могу настроить мой сервер для автоматической установки исходного адреса на eth1/10.U.V.159
при доступе к любому 10.X.Y.*
адрес? Стоит добавить маршрут? Я не хочу вмешиваться в собственный механизм маршрутизации VPN ...
Моя таблица маршрутизации:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default A.B.C.254 0.0.0.0 UG 0 0 0 eth0
10.U.V.0 * 255.255.255.0 U 0 0 0 eth1
A.B.C.0 * 255.255.255.0 U 0 0 0 eth0
10.X.Y.31 не существует в вашей таблице маршрутизации. Таким образом, используется маршрут по умолчанию, а пакет отправляется через eth0. Если вы хотите отправить его через eth1, вам понадобится следующий шлюз, вы можете использовать route add -net 10.X.Y.0 netmask 255.255.255.0 gw 10.U.V.159
команда
Возможно, это проблема маски, сеть 10.0.0.0 обычно находится в / 8.