Weiterleiten des tun0-Verkehrs über tun1 (Double-Hop-VPN)

Weiterleiten des tun0-Verkehrs über tun1 (Double-Hop-VPN)

Ziel: Routing des gesamten Internetverkehrs von eth0 -> tun0 -> tun1 für Double-Hop-VPN. Ist die folgende Routing-Tabelle für dieses Ziel richtig?

$ IP-Route anzeigen:

0.0.0.0/1 via 10.8.1.1 dev tun1 
default via 10.8.3.1 dev tun0 proto static metric 50 
10.8.1.0/24 dev tun1 proto kernel scope link src 10.8.1.6 
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.4 metric 50 
101.133.213.73 via 10.8.3.1 dev tun0 
127.0.0.0/8 dev lo scope link 
128.0.0.0/1 via 10.8.1.1 dev tun1 
191.72.65.45 via 182.160.0.1 dev eth0 proto static metric 100 
182.160.0.0/24 dev eth0 proto kernel scope link src 182.160.0.19 metric 100 
182.160.0.0/24 dev eth0 proto dhcp scope link src 182.160.0.19 metric 208 
182.160.0.1 dev eth0 proto static scope link metric 100

Antwort1

eth0 : 182.160.0.19/24 (GW: 182.160.0.1)
tun0 : 10.8.3.4/24 (GW: 10.8.3.1 / VPN endpoint : 191.72.65.45 via eth0)
tun1 : 10.8.1.6/24 (GW: 10.8.1.1 / VPN endpoint : 101.133.213.73 via tun0)

Auf diese Weise wird der gesamte Datenverkehr (einschließlich des von tun0 eingehenden) über tun1 geleitet, mit Ausnahme des lokalen Datenverkehrs über Ethernet (182.160.0.0/24) und des lokalen Datenverkehrs über tun0/„VPN1“ (10.8.3.0/24).

Mit dieser Routingtabelleaußerdem wird der gesamte Verkehr von eth0 über tun1 geleitetwas in der Frage nicht erwähnt/angefordert wird... Ist diese Situation für Sie in Ordnung? Falls die Antwort ja ist, können Sie diese Einstellung beibehalten.

Falls dies nicht der Fall ist (Sie möchten den Datenverkehr nicht von eth0 nach tun1/tun0 umleiten), haben Sie (mindestens) zwei Möglichkeiten, damit umzugehen.

  • "benutzerdefinierte" Routing-Tabelle

Es kann mehr als nur eine Routing-Tabelle geben und Sie können anhand der Regel/Richtlinie verwalten, welcher Datenverkehr von der anderen als der Standardtabelle verarbeitet wird. Auf diese Weise können Sie eine benutzerdefinierte Routing-Tabelle einrichten, bei der der Standard-GW tun1 wäre und nur von tun0 kommender Datenverkehr auf diese benutzerdefinierte Routing-Tabelle geleitet würde.

  • Netzwerk-Namespace

Auf diese Weise können Sie ganze Tun-Schnittstellen von eth0 isolieren (mit internem Routing zwischen Namespaces), sodass Sie eine einfache (Standard-)Routingtabelle im Namespace einrichten können, sodass nur Datenverkehr von Tun0 Tun1 erreichen kann.

Antwort2

Angenommen, die gewünschte Reihenfolge ist der Datenverkehr aus Ihrem LAN, der vom lokalen Computer -> tun0 -> tun1 gehen soll. Dies ist wahrscheinlich der Fall, allerdings auf eine Weise, die auf einem Tracerroute nicht sichtbar ist.

Nehmen wir ein Paket, das an eine beliebige Internetadresse bestimmt ist – in diesem Beispiel verwende ich 8.8.8.8.

Der Computer nimmt das Paket auf und sucht nach einer Möglichkeit, es zu senden. Er sieht, dass es über tun1 gesendet werden sollte (weil die beiden folgenden Routen einer Standardroute entsprechen, aber eingeschränkter sind und daher der Standardroute vorgezogen werden - in diesem Fall wird die erste Route gewählt) -

 0.0.0.0/1 via 10.8.1.1 dev tun1
 128.0.0.0/1 via 10.8.1.1 dev tun1

Aber hier ist der Teil, der vielleicht nicht offensichtlich ist. Wenn Sie sich die Konfiguration für tun1 ansehen, werden Sie feststellen, dass es einen Endpunkt gibt, der 101.133.213.73 ist. Es gibt eine spezielle Route für diese IP-Adresse, die über tun0 geht.

 101.133.213.73 via 10.8.3.1 dev tun0

Ebenso gibt es eine andere Route

  191.72.65.45  via 182.160.0.1 dev eth0 proto static metric 100 

Diese Route macht den über tun0 gesendeten Datenverkehr direkt über die Ethernet-Schnittstelle zugänglich.

Da es sich um eine sehr spezielle Route handelt, wird der Verkehr zu 101.133.213.73 durch tun0 geleitet. Daher muss der gesamte Verkehr, der ins Internet fließt (über tun1), durch 101.133.213.73 geleitet werden, was selbst ein Tunnel ist.also ja, die Daten werden durch beide Tunnel fließen.

Ein Traceroute zeigt dies nicht an, da das Paket nicht weiß, dass es durch einen Tunnel getunnelt wird. Sie können jedoch überprüfen, ob dies geschieht, indem Sie sich die unteren Ebenen ansehen – Generieren Sie Datenverkehr, während Sie in einem anderen Fenster „sudo tcpdump -n -i any“ ausführen. Sie werden sehen, dass jedes Mal, wenn ein Paket an das Internet gesendet wird, ein Paket durch eth0, tun0 und tun1 gesendet wird, und dasselbe gilt für zurückgegebene Pakete. Die mit tun0 verknüpften Pakete haben alle das Ziel 101.133.213.73.

verwandte Informationen