So können Sie den FreeBSD-Netzwerkverkehr elegant von der OpenVPN-Schnittstelle nach Port ausschließen

1047
Polygonica

unerfahrene sysadmin hier.

Ich habe vor, einen Net-Daemon in einem FreeBSD-Gefängnis über OpenVPN auszuführen, möchte jedoch SSH direkt in das Gefängnis einbinden und den Daemon-Web-Interface-Daemon verwenden, ohne das VPN zu nutzen. Soweit ich es verstehe, wird ein OpenVPN-Tunnel normalerweise als standardmäßige virtuelle Internetschnittstelle eingerichtet, und der eingehende Datenverkehr wird standardmäßig auf der OpenVPN-Schnittstelle ausgegeben (was problematisch ist, da dies zu Latenzzeiten führt).

Ich dachte: "Natürlich, da der gesamte Datenverkehr auf einer Handvoll Ports verbleibt, leite ich diese einfach auf das Nicht-VPN-Gateway um." Ich habe versucht, nach Lösungen zu suchen, aber fast alle beinhalten iptables anstelle von ipfw (was für FreeBSD voreingestellt ist) und lösen leicht unterschiedliche Probleme. Und alternative Lösungen wie die Verwendung mehrerer Standardrouten, um sicherzustellen, dass eingehender Datenverkehr auf einer beliebigen Schnittstelle immer auf derselben Schnittstelle gesendet wird, erscheinen weitreichend und erfordern ein tiefes Wissen über alle beteiligten Tools.

Gibt es eine elegante Möglichkeit, sicherzustellen, dass der auf bestimmten Ports ausgehende Datenverkehr mit ipfw auf einer angegebenen nicht standardmäßigen Schnittstelle endet?

1

1 Antwort auf die Frage

1
Daniel B

Wenn nicht etwa Multipath-TCP verwendet wird, ändern TCP-Verbindungen ihre Schnittstelle nicht. Wenn der Datenverkehr vom entfernten Host A an der Schnittstelle Y ankommt, werden die Antworten (im Allgemeinen) die Schnittstelle Y verlassen, selbst wenn die am besten passende Route (zum Host A) an eine andere Stelle führen könnte. Vorausgesetzt natürlich, diese Schnittstelle Y hat eine Route, die zu Host A führt.

OpenVPN redirect-gateway def1überschreibt in seiner am häufigsten verwendeten Konfiguration keine Routen. Es nutzt stattdessen die Art und Weise, wie der Routenabgleich durchgeführt wird: Die spezifischste passende Route wird ausgewählt. Im Allgemeinen haben Sie eine 0.0.0.0/0Route (auch als Standardroute bezeichnet), die auf Ihr Internet-Gateway (oder was auch immer) verweist. Diese Route passt zu allem. In der Regel sind auch spezifischere Routen vorhanden, die zu Ihrem lokalen Netzwerk führen. OpenVPN erstellt zwei neue Routen: 0.0.0.0/1und 128.0.0.0/1. Diese Routen stimmen wiederum mit allem überein, werden jedoch über Ihrer vorherigen Standardroute ausgewählt, da sie genauer sind. Fazit: Die Schnittstelle Y kann immer noch "alles" erreichen.

Im Allgemeinen behindert eine VPN-Verbindung den eingehenden Datenverkehr auf anderen Schnittstellen nicht. Als solches sollte es ohne zusätzliche Einstellungen funktionieren.

Vielen Dank! Ich bin allerdings neugierig (obwohl ich das, was Sie sagen, für bare Münze nehme): Gibt es eine Dokumentation, die ich lesen kann und die mir sagt, dass TCP-Verbindungen an Schnittstellen gebunden sind? Ich habe einige relevante Dokumentationen gegoogelt, aber ich bin mir immer noch nicht sicher, wie ich das vorhergesagt haben könnte. Polygonica vor 10 Jahren 0
Definitionsgemäß: Ein TCP-Endpunkt wird durch die IP-Adresse und den TCP-Port definiert. TCP-Endpunkte in einer Verbindung sind festgelegt, da eine Verbindung von zwei Endpunkten definiert wird. In allen außer speziellen Konfigurationen verfügt jede IP-Schnittstelle eines Computers über eine eindeutige IP-Adresse. Wenn also keine neue Verbindung hergestellt wird, ist alles behoben. Daniel B vor 10 Jahren 0