Instrada OpenBSD tramite gateway diversi che hanno lo stesso IP ma su interfacce diverse


9

Ho più connessioni VPN che usano lo stesso IP gateway (non ho la possibilità di cambiarlo perché è fuori dal mio controllo). Tutte queste VPN forniscono accesso a reti diverse e le reti sono almeno uno o due hop a monte, quindi è richiesto un IP gateway in tutti i casi. Con Linux, per instradare verso le reti, posso semplicemente fare:

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

eccetera.

Linux quindi posizionerà il traffico per ciascuna rete di destinazione sulle interfacce corrette, dirette verso il gateway corretto, quindi non importa che l'IP del gateway sia lo stesso per ciascuna interfaccia.

La mia domanda è: come posso raggiungere questo obiettivo in OpenBSD? Ho provato e fallito. Le mie scoperte sono che per una destinazione particolare, posso:

  • specifica un'interfaccia (se la destinazione è direttamente raggiungibile su quel link - cosa che non è nel mio caso)
  • specificare un IP gateway perché la destinazione non è direttamente sul collegamento

Ma non riesco a capire come specificare entrambi.


Sei sicuro che sia richiesto un gateway? Se il collegamento è Ethernet e la destinazione è a più di un hop è necessario un gateway. Ma le VPN spesso si comportano come interfacce punto-punto che non necessitano di un gateway.
Kasperd,

Sì, è sicuramente necessario poiché, sebbene le interfacce siano point-to-point, le reti di destinazione sono tutte a più di un salto di distanza e sono coinvolti inoltro IP e NAT
bao7uo

Ai collegamenti punto-punto non interessano i gateway.
Kasperd,

ok, ma come posso farlo funzionare allora?
bao7uo,

Che ne dici di usare l' -Topzione routee definire una tabella di routing per ogni destinazione? Penso che fornisca un migliore "isolamento" per le regole per interfaccia.
gmelis,

Risposte:


1

Utilizzare il modificatore -ifp per instradare . Dalla pagina 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.

Quindi qualcosa del genere funziona:

# 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

Se i percorsi di destinazione si sovrappongono, è possibile utilizzare le etichette pf e route per abbinare o instradare i domini .


Grazie per questo. L'ho provato e non sono riuscito a farlo funzionare. Non credo che si -ifaceapplichi perché l'indirizzo gateway è per un router a monte (hop successivo), non un IP di un'interfaccia sulla stessa casella openbsd. Quando ho rimosso -iface ha funzionato, ma solo per la prima interfaccia VPN. Quindi posso fare -ifp tap0e funziona, ma se lo faccio -ifp tap1fallisce no route to hostquando provo ad aggiungere il percorso.
bao7uo,

Anche se non ha risolto il problema, ti ho assegnato la generosità perché sono grato che tu abbia cercato di aiutarti.
bao7uo,

Sono sinceramente perplesso da ciò che Linux sta facendo sotto il cofano ... BSD sta facendo la cosa "giusta" lamentandosi del fatto che GW non è locale. Hai provato i -link -llinfoflag al comando route? Inoltre, penso -ifaceche si applichi (ottieni l'errore senza instradare tabelle / domian, come hai notato, perché il percorso di rete è in conflitto e non può essere aggiunto di nuovo). OpenVPN / toccare? Chiedendosi cosa sta effettuando il provisioning dell'altra "fine", se si tratta di un ptp falso.
quadruplebucky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.