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

У меня есть несколько 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-адрес шлюза, поскольку пункт назначения является не прямо по ссылке

Но я не могу понять, как указать оба.

9
задан 2 August 2017 в 11:20
1 ответ

Используйте модификатор -ifp для -маршрута . Со страницы man page:

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 и маршрутные метки для совпадения, или маршрутные домены.

.
1
ответ дан 2 December 2019 в 22:37

Теги

Похожие вопросы