Iptables
使用 iptables 設置 firwall 以僅允許 VPN
我將 IPredator VPN 與 openVPN 一起使用,我想確保如果連接斷開,我不會在沒有 VPN 的情況下從網際網路送出數據。我聽說我可以用 iptables 和一個範圍來做到這一點。我怎樣才能做到這一點?以及如何找出我的 VPN 分配給我的 IP 範圍?
在開始您的 VPN 之前,請先複製
netstat -rn
和ifconfig -a
. 啟動您的 VPN,這兩個命令的差異將告訴您 VPN 根據路由創建哪些網路,以及為您分配了哪些 IP 以獲得這些網路的可見性。您還需要獲取提供 VPN 的伺服器的 IP(否則到VPN 伺服器的流量將無法到達)。我還假設您的 VPN 伺服器使用udp
而不是tcp
,如果確實使用tcp
,您將需要更新第二條規則以反映這一點。一旦你有了這些,你就可以
OUTPUT
在 iptables 中添加規則來設置你的主機可以看到的內容iptables -F OUTPUT iptables -I OUTPUT -d VPNSERVER -p udp -j ACCEPT -m comment --comment "Allow traffic to VPN SERVER" iptables -I OUTPUT -s VPNIP -d VPNNETWORK/CIDR -j ACCEPT -m comment --comment "Allow all traffic to VPN newtork" iptables -I OUTPUT -j DROP -m comment --comment "Drop all other traffic"
iptables -F OUTPUT
刷新您現有的規則,請注意這一點,但必須按照您最初提出的問題進行操作。
VPNSERVER
將是您的 vpn 伺服器的 ip。VPNIP
將是 VPN 分配給您的 IP。VPNNETWORK/CIDR
將是出現在netstat -rn
類似的路由網路10.1.0.0/24
在調試這些規則時,記錄被丟棄的內容可能會很方便,因為某些協議可能需要一些額外的按摩:
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
這應該足以阻止
OUTBOUND
從您的 PC 到 Internet 的流量,並且只允許到 VPN 伺服器及其提供的網路的流量。OP 指出 Arch Linux 不附帶
netstat
orifconfig
。在這種情況下,替代方案是:
ip addr show
將向您顯示界面,並向ip route show
您顯示您擁有的路線。