使用 iptables 在 OpenVPN 客戶端上配置 VPN Kill Swi
虛擬專用網絡通常用於通過加密隧道將互聯網流量從本地設備路由到遠程 VPN 服務器來逃避審查、監視或地理定位。在這種情況下,VPN 服務器是所有連接的客戶端設備的互聯網網關,它將來自客戶端的流量轉發到互聯網,然後接收流量並將其路由回客戶端設備。但是,始終存在 VPN 連接意外斷開的風險,這可能會導致您的流量通過公共互聯網而不是通過加密的 VPN 連接進行通信。https://www.linode.com/docs/guides/vpn-firewall-killswitch-for-linux-and-macos-clients/
因此,VPN 客戶端通常使用防火牆規則來確保互聯網流量僅允許到達 VPN 網關。這可以防止客戶端的流量在與 VPN 服務器突然斷開連接時受到影響。此功能有時被稱為終止開關,因為它具有在 VPN 連接失敗時立即阻止所有互聯網連接的效果。
在你開始之前
本指南假設您已經在 Linode 上運行了一台 OpenVPN 服務器,並且至少配置了一個客戶端來連接到該服務器。如果您需要幫助來執行此操作,請參閱我們有關設置 OpenVPN 環境的三部分系列:
收集客戶端設備信息
在配置客戶端設備之前,您需要了解:
- 設備的網絡接口名稱。
- 客戶端的本地網絡的子網。
您可以通過route
在 Linux 客戶端上運行命令來找到此信息。
|
|
輸出在Iface列 (eth0) 下顯示網絡接口名稱,在Genmask (255.255.255.0)下顯示 LAN 的子網。這些值將在本指南的其餘部分中使用,因此請將wlp6s0
和替換為在客戶端上198.168.0.1/24
運行時找到的接口和 IP 地址/子網。route
對於 macOS,命令networksetup -listallhardwareports
和ifconfig
將顯示所有可能的網絡接口和關聯的網絡信息。從該列表中,您可以找到以太網和 WiFi 設備名稱及其本地子網。
配置 client.ovpn
在您的客戶端上,更改client.ovpn
配置文件如下:
您應該已經有設置dev tun來指定虛擬網絡適配器。將其更改為 tun0,以便在防火牆規則中引用它:
- 文件:client.ovpn
1
dev tun0
確保您的 VPN 服務器按其 IP 地址而不是主機名列出。例如:
- 文件:client.ovpn
1
remote 198.51.100.0 1194
GNU/Linux 客戶端
大多數 GNU/Linux 用戶使用iptables
或ufw
來管理他們的防火牆。本指南將介紹這兩個選項的配置。
使用 iptables 的 VPN 防火牆
iptables-save
。使用以下
iptables
規則集創建 shell 腳本:- 文件:iptables-vpn.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/bin/bash iptables --flush iptables --delete-chain iptables -t nat --flush iptables -t nat --delete-chain iptables -P OUTPUT DROP iptables -A INPUT -j ACCEPT -i lo iptables -A OUTPUT -j ACCEPT -o lo iptables -A INPUT --src 192.168.0.0/24 -j ACCEPT -i wlp6s0 iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT -o wlp6s0 iptables -A OUTPUT -j ACCEPT -d 198.51.100.0 -o wlp6s0 -p udp -m udp --dport 1194 iptables -A INPUT -j ACCEPT -s 198.51.100.0 -i wlp6s0 -p udp -m udp --sport 1194 iptables -A INPUT -j ACCEPT -i tun0 iptables -A OUTPUT -j ACCEPT -o tun0
將腳本保存為
iptables-vpn.sh
,然後使用設置權限chmod
並執行腳本:chmod +x iptables-vpn.sh ./iptables-vpn.sh
此規則集取代了預先存在的iptables 規則,並指示防火牆丟棄除環回流量、本地網絡的子網以及在端口1194 上進出OpenVPN 服務器IP 的UDP 流量之外的所有傳出連接。此外,所有傳入和傳出連接都將被刪除。允許通過虛擬網絡接口tun0
。
您的 VPN 防火牆現已激活,但此規則集只是臨時的,當您重新啟動 Linode 時將會被清除。要使防火牆永久存在,您可以安裝iptables-persistent
Debian 或基於 Ubuntu 的發行版的軟件包,或者您可以查看我們的iptables或Firewalld指南來創建永久規則集和/或配置文件。
使用 ufw 的 VPN 防火牆
創建一個包含以下命令的新 shell 腳本:
- 文件:ufw-vpn.sh
1 2 3 4 5 6 7 8 9 10
ufw --force reset ufw default deny incoming ufw default deny outgoing ufw allow in on tun0 ufw allow out on tun0 ufw allow in on wlp6s0 from 192.168.0.0/24 ufw allow out on wlp6s0 to 192.168.0.0/24 ufw allow out on wlp6s0 to 198.51.100.0 port 1194 proto udp ufw allow in on wlp6s0 from 198.51.100.0 port 1194 proto udp ufw enable
將腳本保存為
ufw-vpn.sh
,然後使用設置權限chmod
並執行腳本:chmod +x ufw-ks.sh ./ufw-ks.sh
您的 VPN 防火牆現已啟用。ufw disable
如果您想禁用防火牆,請使用。
蘋果 OS X / macOS
Pf是較新版本的 OS X 和 macOS 使用的防火牆應用程序。
編輯
pf
配置文件:- 文件:/etc/pf.conf
1 2 3 4
block drop all pass on lo0 pass on utun0 pass out proto udp from any to 198.51.100.0 port 1194
導入新添加的規則如下:
pfctl -f /etc/pf.conf
打開防火牆:
pfctl -e
啟用後pf
,您的 VPN 防火牆就會處於活動狀態。pfctl -d
如果您需要停用防火牆,請使用。
在帶有 Tunnelblick OpenVPN 客戶端的最新版本的 OS X 或 macOS 中,您可能有未使用的utun
接口,在這種情況下您將無法連接到 VPN 服務器。您可以使用 檢查未使用的接口ifconfig
。
utun0
例如,如果您有未使用的,請更改pass on utun0
pf.conf:
pass on utun1
更多信息
您可能希望查閱以下資源以獲取有關此主題的更多信息。雖然提供這些內容是希望它們有用,但請注意,我們不能保證外部託管材料的準確性或及時性。
留言
張貼留言