Linux - Blockieren Sie alle Verbindungen außer der dynamischen VPN-IP-Domäne

Linux - Blockieren Sie alle Verbindungen außer der dynamischen VPN-IP-Domäne

Ich habe ein VPN, mit dem ich mich über einen Domänennamen verbinde (OpenVPN), nicht über eine IP. Die IP eines VPN ist dynamisch und kann sich jederzeit ändern. Ich möchte, dass die einzige Kommunikation meines Computers mit dem Internet ist my.vpn.domain.comundNichtsanders.

Ich würde eine OpenDNS-Suche als Suche verwenden my.vpn.domain.comund glaube, dass das sicher genug ist (vorausgesetzt, es blockiert auch alle IPs/Verbindungen, die nicht zur VPN-Domäne gehören), und ich sehe keine besseren/anderen auf IP-Ebene basierenden Optionen.

Mein Ziel ist es, einen VPN-Killswitch zu haben, der wirklich gut ist (ohne Lecks oder manuelle Eingriffe).

Sobald ich über die Domäne mit dem VPN verbunden bin, sollte ich die my.vpn.domain.comEinschränkung aufheben können und meine Firewall/iptables nur Verbindungen über tun0 zulassen. Wenn die VPN-Verbindung dann abbricht, starte ich sie erneut my.vpn.domain.com, stelle dann eine VPN-Verbindung her, lasse dann alle tun0-Verbindungen zu usw.

Kann dies über die Hosts-Datei oder wie anders erfolgen? Ich bin neu im Linux-Scripting.

Antwort1

Versuchen Sie es doch einmal mit Folgendem:

Richten Sie iptables so ein, dass alle DNS-Abfragen auf Ihrer Nicht-Tunnel-Schnittstelle gelöscht werden, aber my.vpn.domain zugelassen wird.

iptables -A INPUT -o eth0 -p udp -s $your_dns_server --sport 53 -m state --state ESTABLISHED     -j ACCEPT
iptables -A INPUT -o eth0 -p udp --dport 53 -j DENY

iptables -A OUTPUT -o eth0 -p udp --dport 53 -m string --string my.vpn.domain --algo bm -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -d $your_dns_server --dport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 53 -j DROP

Konfigurieren Sie OpenVPN so, dass der gesamte Datenverkehr nach der Einrichtung durch den Tunnel gesendet wird.

OpenVPN leitet standardmäßig nicht den gesamten Datenverkehr durch den Tunnel, kann aber mit so konfiguriert werden redirect-gateway. Lesen Sie den Abschnitt „Routing des gesamten Client-Datenverkehrs (einschließlich Web-Datenverkehr) durch das VPN“Hier.

Konfigurieren Sie OpenVPN für die automatische Wiederherstellung der Verbindung

Probieren Sie die Konfigurationswerte für Ping-Restart und Keepalive aus.

ping 10
ping-restart 120
push "ping 10"
push "ping-restart 60"

or equivalently:

keepalive 10 60

Nehmen Sie die erforderlichen Anpassungen vor. In einer perfekten Welt sollte Ihr Computer jedoch, wenn Sie Ihre iptables-Einstellungen und die OpenVPN-Keepalive-Einstellungen wählen, nur in der Lage sein, nach my.vpn.domain zu fragen, eine OpenVPN-Verbindung herzustellen und wiederherzustellen und diese Verbindung nur dann umzuleiten, wenn sie verfügbar ist.

Wenn Sie das OpenVPN-Dokument noch nicht gelesen haben überAusführen eines OpenVPN-Servers auf einer dynamischen IP-Adresseum sicherzustellen, dass Ihre serverseitige Konfiguration korrekt ist.

... und wenn der Client-Rechner remote ist, stellen Sie sicher, dass Sie SSH über iptables zulassen, damit Sie sich nicht aussperren. Gehen Sie vorsichtig vor, wenn Sie mit iptables noch nicht vertraut sind.

verwandte Informationen