我想阻止所有互联网连接,除非我连接到我的 OpenVPN。当然,现在我需要允许连接到 VPN 服务器。
可以通过允许进出 VPN 服务器 IP 的流量来完成此操作,但随后使用 删除所有规则iptables
吗?
iptables
我尝试了@tachomi 提出的解决方案,但在设置规则时我没有互联网连接。iptables-save
状态:
# Generated by iptables-save v1.6.0 on Wed Feb 3 00:53:32 2016
*filter
:INPUT DROP [247:40343]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [153:25961]
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A INPUT -s <VPN_SERVER_IP>/32 -p udp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p tcp -j ACCEPT
-A OUTPUT -d <VPN_SERVER_IP>/32 -p udp -j ACCEPT
COMMIT
# Completed on Wed Feb 3 00:53:32 2016
答案1
首先允许您的本地连接和RELATED, ESTABLISHED
连接协议。
$ sudo iptables -A INPUT -p tcp -s 127.0.0.1 -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A INPUT -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
这将允许互联网连接。
设置默认链策略
$ sudo iptables -P INPUT DROP
$ sudp iptables -P OUTPUT DROP
这将拒绝所有类型的入站/出站流量。
允许您的 VPN 连接
$ sudo iptables -A INPUT -s [VPN ip connection] -j ACCEPT
$ sudo iptables -A OUPUT -d [VPN ip connection] -j ACCEPT
这将允许 VPN 连接。
如果您通过 SSH 连接,则必须允许您的 IP 地址也作为您的本地主机
更新:
对于其他连接规则,只需允许即可。
以HTTP为例:
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
个人推荐
我所做的是使用 备份我的 iptables 规则$ sudo iptables-save > iptables_backup
,然后对于任何更改,我使用 vim 编辑规则并使用 恢复 iptables $ sudo iptables-restore < iptables_backup
。这只是个人做法,避免重复规则。