Маршрут OpenBSD через різні шлюзи, які мають однаковий IP, але на різних інтерфейсах


9

У мене є декілька VPN-з'єднань, які використовують один і той же IP-шлюз (я не маю змоги змінювати це, оскільки це поза моїм контролем). Усі ці VPN забезпечують доступ до різних мереж, а мережі є щонайменше одним або двома стрибками вгору за течією, тому IP-адреса шлюзу потрібна у всіх випадках. За допомогою Linux для маршрутизації в мережі я можу просто зробити:

ip route add $destination_1 via $gateway_ip dev $interface_1
ip route add $destination_2 via $gateway_ip dev $interface_2
ip route add $destination_3 via $gateway_ip dev $interface_3

тощо.

Тоді Linux розмістить трафік для кожної мережі призначення на правильних інтерфейсах, спрямованих на правильний шлюз, тому не має значення, що IP-шлюз для кожного інтерфейсу однаковий.

Моє запитання: як я можу досягти цього в OpenBSD? Я спробував і не вдався. Мої висновки полягають у тому, що для конкретного пункту призначення я можу:

  • вкажіть інтерфейс (якщо пункт призначення доступний безпосередньо за цим посиланням - чого це не в моєму випадку)
  • вкажіть IP шлюзу, оскільки призначення не знаходиться безпосередньо за посиланням

Але я не можу зрозуміти, як вказати обидва.


Ви впевнені, що потрібен шлюз? Якщо посиланням є Ethernet, а ціль більше, ніж один скачок, потрібен шлюз. Але VPN часто поводяться як точкові інтерфейси, яким не потрібен шлюз.
kasperd

Так, це обов'язково потрібно, оскільки, хоча інтерфейси є точками-точками, цільові мережі все більше, ніж один
скачок,

Посилання "точка-точка" не стосуються шлюзів.
kasperd

добре, але як я можу змусити його працювати тоді?
bao7uo

Як щодо використання -Tопції routeта визначення таблиці маршрутів для кожного пункту призначення? Я думаю, що це забезпечує кращу "ізоляцію" за правилами інтерфейсу.
gmelis

Відповіді:


1

Використовуйте модифікатор -ifp для маршруту . На чоловіковій сторінці :

In a change or add command where the destination and gateway are not
sufficient to specify the route, the -ifp or -ifa modifiers may be 
used to determine the interface name or interface address.

Так працює щось подібне:

# for  arg in tun0 tun1 tun2; do ifconfig $arg  192.168.11.1/24; done
# route add 10/8 -iface 192.168.11.1 -ifp tun0
add net 10/8: gateway 192.168.11.1
# route add 172.16/12 -iface 192.168.11.1 -ifp tun1
add net 172.16/12: gateway 192.168.11.1
# route add 192.168.254/24 -iface 192.168.11.1 -ifp tun2
add net 192.168.254/24: gateway 192.168.11.1
# route show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio 
Iface
10/8               192.168.11.1       GS         0        0     -     8 tun0
localhost          localhost          UHl        0       22 32768     1 lo0
172.16/12          192.168.11.1       S          0        0     -     8 tun1
192.168.11.1       192.168.11.1       UHhl       1        4     -     1 tun0
[...my real routes omitted...]
192.168.254/24     192.168.11.1       S          0        0     -     8 tun2

Якщо маршрути вашого пункту призначення перекриваються, ви можете використовувати мітки pf та маршрутів для відповідності або маршрутизації доменів .


Дякую за це Я спробував це і не зміг змусити його працювати. Я не думаю, що це -ifaceстосується, оскільки адреса шлюзу призначена для маршрутизатора висхідного потоку (наступний перехід), а не IP-інтерфейсу для самого вікна openbsd. Коли я видалив -iface, він працював, але лише для першого VPN-інтерфейсу. Так що я можу це зробити, -ifp tap0і це працює, але якщо мені -ifp tap1це не вдається, no route to hostколи я намагаюся додати маршрут.
bao7uo

Хоча це і не вирішило проблему, я нагородив вас винагородою, бо я вдячний, що ви намагалися допомогти.
bao7uo

Я чесно здивований тим, що Linux працює під кришкою там ... BSD робить "правильну" річ, скаржачись на те, що gw не є локальним. Ви пробували -link -llinfoпрапори команди команди? Крім того, я думаю, що -ifaceце застосовується (як ви зазначили, ви отримуєте помилку без маршрутизації таблиць / доміан, оскільки мережевий маршрут конфліктує і не може бути доданий знову). OpenVPN / натисніть? Цікаво, що забезпечує "інший" кінець, якщо це фальшивий ptp.
чотиримісний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.