我正在使用 Openvpn 让人们上网。一切正常,但我想限制使用 torrent/P2p 流量。我不想试图通过分别识别它们来阻止它们,而是只允许 http 和 https,并限制或拒绝其余的。我现在拥有的 iptables 配置是:
# Generated by iptables-save v1.4.21 on Mon Dec 26 16:45:34 2016
*mangle
:PREROUTING ACCEPT [1412:290307]
:INPUT ACCEPT [668:148793]
:FORWARD ACCEPT [744:141514]
:OUTPUT ACCEPT [528:166065]
:POSTROUTING ACCEPT [1182:293750]
COMMIT
# Completed on Mon Dec 26 16:45:34 2016
# Generated by iptables-save v1.4.21 on Mon Dec 26 16:45:34 2016
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [343:139236]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1195 -j ACCEPT
-A INPUT -i eth0 -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Dec 26 16:45:34 2016
# Generated by iptables-save v1.4.21 on Mon Dec 26 16:45:34 2016
*nat
:PREROUTING ACCEPT [55:4133]
:INPUT ACCEPT [12:1368]
:OUTPUT ACCEPT [1:76]
:POSTROUTING ACCEPT [1:76]
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 145.131.3.243
-A POSTROUTING -s 10.8.1.0/24 -j SNAT --to-source 145.131.17.88
COMMIT
# Completed on Mon Dec 26 16:45:34 2016
我只读到过允许仅 http 和 https 的可能性,但找不到以这种方式实际实现它的方法。我的猜测是我必须向 FORWARD 链添加规则,该链现在表示您可以通过 tun 接口执行您想要的操作。由于 FORWARD 链的默认策略设置为丢弃除规则明确允许的流量之外的所有内容。我对应该将规则放在哪个链上的看法正确吗?
答案1
测试了一下,当你把它们放在前向链中时,它就能正常工作。通过 openvpn 测试了它,并将此规则(用于测试!)放在链的顶部。所有其他网络都可以通过,只有来自 10.8.1.0/24 网络的流量不会超过 443 :
-A FORWARD -s 10.8.1.0/24 -p tcp --dport 443 -j DROP
-A FORWARD -i tun+ -j ACCEPT
所以我是对的,现在可以进一步解决这个问题。
感谢您和我一起思考。;)