Mikrotik und VPN nur für bestimmte Websites

6

Tag für Tag gewinnt die Web-Zensur in meinem Land an Stärke. Die naheliegende Lösung besteht in der Verwendung von VPN, verlangsamt jedoch die Verbindung, und die Unbedenklichkeit öffentlicher VPN-Dienste kann nicht garantiert werden.

Also habe ich mir folgende Lösung überlegt:

Der Router greift auf die meisten Websites auf herkömmliche Weise zu, behält jedoch eine konstante VPN-Verbindung bei, die vorgibt, eine zusätzliche Netzwerkschnittstelle zu sein. Wenn ich auf eine zensierte Website zugreife, leitet der Router den Datenverkehr über diese virtuelle Schnittstelle weiter.

Ist das mit RouterOS möglich? Wie geht das?

Mein Router ist RB2011UiAS-2HnD-IN, RouterOS v 6.30.2.

Paul
quelle
Tatsächlich wäre diese Frage für die Unterwebsite "Netzwerktechnik" geeignet. Sie werden Ihnen sagen, dass das, was Sie wollen, nicht erreicht werden kann - eine Verbindung kann entweder getunnelt werden oder nicht. Es kann nicht beides sein. Verwenden Sie einen guten VPN-Dienst direkt von Ihrem Desktop-Betriebssystem und schalten Sie ihn bei Bedarf ein und aus.
11.
2
@vic Vielleicht kann RouterOS das nicht, aber das heißt nicht, dass es unmöglich ist. Das Routing von Linux-Richtlinien kann Sie zum Beispiel am meisten dahin bringen, obwohl es in IP / CIDR-Bereichen funktioniert. Aber dann haben Sie die Frage, ob Sie den erhaltenen DNS-Einträgen vertrauen können ...
Michael Hampton
1
RouterOS kann es gut. Einfache einzeilige Iptables-Regel.
Qasdfdsaq

Antworten:

8

Nehmen wir an, dass Sie ein PPTP-VPN verwenden, um nur die Befehle zu demonstrieren, die Sie ausführen müssen.
Da die PPTP-Verschlüsselung schon lange nicht mehr funktioniert, empfehle ich, etwas Sichereres (wie OpenVPN) zu verwenden. Das Prinzip ist das gleiche, unabhängig davon, welche VPN / Tunnel-Technologie Sie verwenden.

Zunächst erstellen Sie das VPN, ohne eine Standard-Gateway-Route hinzuzufügen.

/interface pptp-client
add add-default-route=no allow=pap,chap,mschap1,mschap2 connect-to=VPN_SERVER_IP \
dial-on-demand=no disabled=no max-mru=1440 max-mtu=1440 mrru=dis \
name=VPN_NAME password="MY_STRONG_PASSWORD" profile=default-encryption user=USERNAME

Anschließend erstellen Sie eine neue Routing-Tabelle, indem Sie ein Standard-Gateway über das VPN mit einer neuen Routing-Markierung hinzufügen vpn. Auf diese Weise können Sie Pakete über das VPN weiterleiten.

/ip route add dst-address=0.0.0.0/0 distance=1 gateway=VPN_GATEWAY_IP routing-mark=vpn

Die nächste Route ist optional, wenn Sie den ausgehenden Verkehr blockieren möchten, wenn das VPN nicht funktioniert:

/ip route add dst-address=0.0.0.0/0 type=unreachable distance=2 routing-mark=vpn

Wir müssen auch etwas NAT für die Pakete machen, die über die VPN-Schnittstelle verlassen werden.

/ip firewall nat add chain=srcnat out-interface=VPN_NAME action=masquerade

Jetzt fügen wir die mangleRegel hinzu, die mit den gewünschten Ziel-IPs übereinstimmt, und fügen eine Regel hinzu, mark-routingdamit sie die von vpnuns erstellte Routentabelle verwenden.

/ip firewall mangle add chain=prerouting dst-address-list=VPN action=mark-routing new-routing-mark=vpn

Zum Schluss erstellen wir Address Listauf der Firewall eine mit den IPs, die wir über das VPN routen möchten.

/ip firewall address-list add list=VPN address=1.1.1.1
/ip firewall address-list add list=VPN address=2.2.2.2
/ip firewall address-list add list=VPN address=3.3.3.3
/ip firewall address-list add list=VPN address=4.4.4.4

Sie wiederholen die letzte Regel so oft, wie Sie für so viele IPs benötigen, wie Sie über das VPN routen möchten.

Beachten Sie, dass die oben genannten Regeln keine Sicherheit bieten, wer hinter Ihrem Router auf das VPN usw. zugreifen kann. Möglicherweise müssen Sie die Regeln durch entsprechende Quell-IP-Überprüfungen schützen.

Auch diese Methode leitet ganze IPs über das VPN weiter. Wenn Sie bestimmte Ports / Protokolle über das VPN routen müssen, erstellen Sie einfach zusätzliche Mangle-Regeln, die Ihren Anforderungen entsprechen und diese mark-routingbearbeiten.

Cha0s
quelle
1
Danke Mann, funktioniert einwandfrei! Als ich nat hinzufügte, musste ich auch spezifizieren chain=srcnatund als ich mangle hinzufügte, musste ich spezifizierenchain=prerouting
21.09.16
Vielen Dank für den Hinweis. Ich habe meine Antwort aktualisiert. :)
Cha0s
Ich frage mich , kann address listdurch ersetzt werden, layer 7 addressesdamit ich Anfragen für einen bestimmten Domainnamen über VPN
Mac
Dies war sehr praktisch, da ich für einige Remote-IPs das Routing über eine bestimmte Verbindung festlegen musste, aber zuvor nicht mit Mangle-Regeln gearbeitet hatte.
Zaunpfosten
@mac In neueren Versionen von RouterOS können Sie der Adressliste Domänen hinzufügen, die dann automatisch in Adressen in derselben Adressliste aufgelöst werden. Es folgt der TTL des DNS-Datensatzes, so dass es sich automatisch auf dem neuesten Stand hält, wenn sich eine IP-Adresse ändert. L7 Matching ist ein bisschen PITA und sehr ressourcenhungrig :(
Cha0s
-2

Das Folgende ist eine generische Linux-Antwort. Ich weiß nicht, ob Routeros über eine geeignete Funktionalität in der Benutzeroberfläche verfügt und ob Sie die Benutzeroberfläche umgehen und direkt mit den Routing- / Firewall- / NAT-Funktionen im Kernel interagieren können.

Das erste, was Sie tun müssen, ist, Ihre VPN-Software einzurichten und die VPN-Schnittstelle aufzurufen. Sie sollten Ihre VPN-Software anweisen , das VPN NICHT zum Standard-Gateway zu machen. Wie genau dies erfolgt, hängt von der verwendeten VPN-Software ab.

Anschließend können Sie der Routingtabelle bestimmte Routen hinzufügen, um den Datenverkehr über das VPN an bestimmte IP-Adressen zu leiten.

Sie müssen auch sicherstellen, dass NAT richtig konfiguriert ist, damit die Quelladresse der Pakete, die Ihren Router verlassen, mit der Schnittstelle übereinstimmt, von der sie ausgehen. Dies kann entweder mithilfe des "MASQURADE" -Ziels oder durch Einrichten separater "SNAT" -Regeln für jede Schnittstelle erfolgen.

Abhängig von der genauen Art der Blockierung ist es möglicherweise unumgänglich, einen Teil oder den gesamten DNS-Verkehr über das VPN zu senden. Das Senden Ihres gesamten DNS-Datenverkehrs über das VPN sollte einfach sein (richten Sie Ihre DNS-Servereinstellungen auf eine IP, die über das VPN weitergeleitet wird). Wenn Sie (aus Gründen der Leistung oder des Datenschutzes) möchten, dass nur einige Ihrer DNS-Abfragen das VPN verlassen, benötigen Sie einen DNS-Proxy, um die Anforderungen aufzuteilen.

Eine weitere Komplikation ist, wenn die Sites, auf die Sie zugreifen, keine stabilen IP-Adressen haben. In diesem Fall benötigen Sie einen DNS-Proxy, der Antworten überwachen und Routen dynamisch hinzufügen kann.

Plugwash
quelle
1
RouterOS bietet keine Möglichkeit, den Kernel oder iptables direkt zu bearbeiten. Die einzige Möglichkeit, MikroTik RouterOS zu verwalten, besteht in der Verwendung einer proprietären CLI (Telnet / SSH), Winbox (Desktop-GUI) oder API.
Cha0s