Eingehende / ausgehende Trennung für VPN


7

Meine Situation ist, dass ich möchte, dass alle meine ausgehenden Verbindungen von meinem Debian-Server über einen kommerziellen VPN-Dienst geleitet werden, den ich abonniert habe, aber ich möchte weiterhin öffentlich zugängliche Dienste auf diesem Server ausführen und nicht über das VPN.

Das heißt, auf diesem Server wird BIND9 (autorisierend), SMTP, Apache, SSH usw. ausgeführt, und ich möchte, dass eingehende Verbindungen diese Dienste ohne Verwendung des VPN erreichen können.

Zur Verdeutlichung möchte ich das VPN nur zum Ausblenden meiner ausgehenden Verbindungen verwenden, aber dennoch in der Lage sein, Anfragen auf meiner realen IP für alles zu beantworten, was auf diese Weise geschehen ist.

Um die Sache noch komplizierter zu machen, verwende ich BIND sowohl als autorisierenden Server für meine Domain (im öffentlichen Internet) als auch als aktivierte Rekursion, damit ich sie als Resolver für mein lokales Netzwerk (privater IP-Bereich) verwenden kann. Ist es möglich, die ausgehenden DNS-Verbindungen von BIND aus zu VPN zu machen, aber dennoch zuzulassen, dass eingehende Anforderungen das maßgebliche Bit erreichen?

Ich nehme an, das hat etwas damit zu tun iproute2, aber ich kann die richtige Konfiguration nicht herausfinden.

Ich bin auf Debian 6.0.7. Das VPN ist OpenVPN.

Antworten:


5

Sie sollten Richtlinienrouting verwenden, um dies zu implementieren. Die Regeln werden nicht zu kompliziert sein.

Ihre (Haupt-) Standardroute sollte auf die VPN-Schnittstelle zeigen. Sie werden wahrscheinlich die OpenVPN- --redirect-gateway def1Option verwenden, um dies automatisch für Sie zu verwalten, wenn das VPN gestartet wird. Dadurch überschreibt OpenVPN die Standardroute des Systems mit einigen /1Routen, die den gleichen Effekt haben, und stellt sicher, dass OpenVPN selbst seinen Remote-Peer auf normale Weise ohne die offensichtliche Routing-Schleife erreichen kann.

Diese Standardroute führt dazu, dass lokal erzeugter Datenverkehr über das VPN ausgeht und dass Antworten auf Datenverkehr, der über das VPN eingegangen ist, über das VPN ausgehen.

Jetzt möchten Sie dies mit einer Richtlinienregel für Pakete überschreiben, die Verbindungen zugeordnet sind, die über die Nicht-VPN-Schnittstelle eingegangen sind. Sie möchten, dass diese Pakete über die Nicht-VPN-Schnittstelle wieder ausgehen.

Das Folgende sollte dies erreichen, indem (1) Pakete abgeglichen werden, die die öffentliche Nicht-VPN-IP-Adresse als Quelladresse haben, und diese aufgefordert werden, über eine andere Routing-Tabelle weitergeleitet zu werden, (2) in dieser Routing-Tabelle alles an Ihr Original senden ( Nicht-VPN) Standardroute.

ip route add table 42 default via X.Y.Z.W
ip rule add from A.B.C.D/32 table 42

A.B.C.Dsollte Ihre öffentliche (Nicht-VPN-) IP-Adresse sein und X.Y.Z.Wsollte Ihre ursprüngliche Systemstandardroute sein (über Ihren ISP, nicht über Ihr VPN).

Die ähnliche Konfiguration für IPv6-Verkehr bleibt als Übung für Sie :-)


Nett! Das hat den Trick gemacht. Danke für Ihre Hilfe!
lloydsmart

Folgefrage: Gibt es eine Möglichkeit, meinen SMTP-Server (in diesem Fall Postfix) für die Verwendung der Nicht-VPN-Route zu konfigurieren? Ich meine sowohl für eingehende als auch für ausgehende . Vielleicht eine Möglichkeit, den gesamten Port-25-Verkehr ohne VPN zu betreiben? Vielen Dank!
lloydsmart

Ich denke, das könnte schon geschehen, wenn Sie Postfix einfach an die Nicht-VPN-Adresse anstatt an die Platzhalteradresse (Standardadresse) binden. Das heißt, versuchen zu ändern smtp inetin /etc/postfix/master.cfzu A.B.C.D:smtp inet.
Celada

Danke - das war die Grundidee, aber wie sich herausstellt, befindet sich die eigentliche Konfiguration für die Bindung von Postfix an die richtige Adresse in main.cf mit der Option "smtp_bind_address = ABCD". Requisiten auf dieser Seite für die Antwort: faqforge.com/tag/smtp_bind_address
lloydsmart

Ich habe diese Anweisungen auf einem Computer ausprobiert, der sich hinter einem Router in einem LAN befindet. Für ABCD habe ich die LAN-IP des Geräts (nicht die externe IP) und für XYZW die Adresse des Routers verwendet. Dies funktionierte für externe Verbindungen. Ich könnte jetzt von außen zu meinem Computer ssh, und Verbindungen, die von meinem Computer ausgehen, würden über das VPN erfolgen. Ich kann jetzt jedoch keine Verbindung von einem anderen Computer in meinem Netzwerk über ssh zum Computer herstellen (dies ist jedoch möglich, wenn ich über das externe Internet gehe). Wie müssen die Anweisungen geändert werden, um auf einem Computer hinter einem Netzwerkrouter zu funktionieren?
Daniel S.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.