Trasa OpenBSD przez różne bramy, które mają ten sam adres IP, ale na różnych interfejsach


9

Mam wiele połączeń VPN, które używają tego samego adresu IP bramy (nie mam możliwości zmiany tego, ponieważ jest poza moją kontrolą). Wszystkie te sieci VPN zapewniają dostęp do różnych sieci, a sieci mają co najmniej jeden lub dwa przeskoki w górę, więc we wszystkich przypadkach wymagany jest adres IP bramy. W systemie Linux, aby kierować do sieci, mogę po prostu zrobić:

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

itp.

Linux umieści następnie ruch dla każdej sieci docelowej na właściwych interfejsach, kierując się do właściwej bramy, więc nie ma znaczenia, że ​​adres IP bramy jest taki sam dla każdego interfejsu.

Moje pytanie brzmi: jak mogę to osiągnąć w OpenBSD? Próbowałem i nie udało mi się. Moje ustalenia są takie, że dla konkretnego miejsca docelowego mogę:

  • określić interfejs (jeśli miejsce docelowe jest osiągalne bezpośrednio na tym łączu - czego w moim przypadku nie ma)
  • określ adres IP bramy, ponieważ miejsce docelowe nie znajduje się bezpośrednio na łączu

Ale nie mogę wymyślić, jak określić oba.


Czy na pewno wymagana jest brama? Jeśli łączem jest Ethernet, a celem jest więcej niż jeden przeskok, wymagana jest brama. Ale sieci VPN często zachowują się jak interfejsy typu punkt-punkt, które nie potrzebują bramy.
— kasperd

Tak, jest to zdecydowanie wymagane, ponieważ chociaż interfejsy są punkt-punkt, wszystkie sieci docelowe znajdują się w odległości większej niż jeden przeskok, a przesyłanie adresów IP i translacja NAT są zaangażowane
— bao7uo

Połączenia punkt-punkt nie dbają o bramy.
— kasperd

ok, ale jak mogę to zrobić?
— bao7uo

Co powiesz na skorzystanie z -Topcji routei zdefiniowanie tabeli routingu dla każdego miejsca docelowego? Myślę, że zapewnia lepszą „izolację” dla reguł poszczególnych interfejsów.
— gmelis,

Odpowiedzi:


1

Do zmiany trasy użyj modyfikatora -ifp . Od strony man :

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.

Więc coś takiego działa:

# 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

Jeśli trasy docelowe się pokrywają, możesz użyć etykiet pf i tras do dopasowania lub trasowania domen .


Dzięki za to. Próbowałem i nie udało mi się uruchomić. Nie sądzę, żeby miało to -ifacezastosowanie, ponieważ adres bramy dotyczy routera wysyłającego (następnego przeskoku), a nie adresu IP interfejsu na samym pudełku openbsd. Kiedy usunąłem -iface, zadziałało, ale tylko dla pierwszego interfejsu VPN. Mogę to zrobić -ifp tap0i działa, ale jeśli to zrobię, -ifp tap1nie powiedzie się, no route to hostgdy spróbuję dodać trasę.
— bao7uo

Chociaż nie rozwiązało to problemu, przyznałem ci nagrodę, ponieważ jestem wdzięczny, że próbowałeś pomóc.
— bao7uo

Jestem szczerze zdziwiony tym, co Linux robi pod maską ... BSD robi to, co właściwe, narzekając, że gw nie jest lokalny. Czy próbowałeś -link -llinfoflagi do polecenia trasy? Myślę też, że -ifacema to zastosowanie (jak zauważyłeś, błąd pojawia się bez routingu tabel / domianów, ponieważ trasa sieci powoduje konflikt i nie można go dodać ponownie). OpenVPN / dotknij? Zastanawiasz się, co zapewnia „drugi” koniec, jeśli jest to fałszywy ptp.
— quadruplebucky
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.