Linux - 阻止除 VPN 動態 IP 域之外的所有連接

Linux - 阻止除 VPN 動態 IP 域之外的所有連接

我有一個透過網域名稱而不是 IP 連接到的 VPN (OpenVPN)。 VPN的IP是動態的,隨時可能改變。我希望我的機器與互聯網的唯一通信my.vpn.domain.com沒有什麼別的。

我會使用 OpenDNS 查找作為查找my.vpn.domain.com,並且我相信這足夠安全(假設它還阻止所有不屬於 vpn 域的 IP/連接),並且我沒有看到更好/其他基於 IP 層的選項。

我的目的是擁有一個實際上很好的 VPN 終止開關(沒有洩漏或手動幹預)。

一旦我透過其網域連接到 VPN,我應該能夠my.vpn.domain.com解除限制,並讓我的防火牆/iptables 只允許透過 tun0 進行連線。然後,如果 VPN 連接斷開,僅透過僅重新啟動my.vpn.domain.com,然後 VPN 連接,然後允許所有 tun0 等。

這可以透過主機檔案或其他方式完成嗎?我是 Linux 腳本新手。

答案1

為什麼不嘗試這樣的事情:

設定 iptables 以刪除非隧道介面上的所有 dns 查詢,但允許 my.vpn.domain

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

設定 openvpn 在建立隧道後將所有流量傳送到隧道中

預設情況下,OpenVpn 不會沿著隧道路由所有流量,但可以使用 進行設定redirect-gateway。閱讀「透過 VPN 路由所有用戶端流量(包括 Web 流量)」部分這裡

設定openvpn自動重連

嘗試使用 ping-restart 和 keepalive 設定值。

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

or equivalently:

keepalive 10 60

根據需要進行調整,但在完美的世界中,如果您撥入 iptables 設定和 openvpn keepalive 設定,您的電腦應該只能查詢 my.vpn.domain,建立和重新建立 openvpn 連接,並僅沿著該連接路由有空的時候。

如果您還沒有閱讀 openvpn 文檔在動態 IP 位址上執行 OpenVPN 伺服器確保您的伺服器端配置正確。

....如果客戶端電腦是遠端的,請確保您允許透過 iptables 進行 SSH,這樣您就不會將自己鎖定在外。如果你是 iptables 新手,請小心謹慎。

相關內容