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

Настройка таблицы маршрутизации с 2-мя сетевыми интерфейсами

У меня 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.