大家好
这是我当前的 iptables 设置
# Generated by iptables-save v1.4.7 on Wed Apr 9 13:50:31 2014
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :LOGDROP - [0:0]
-A INPUT -p tcp -m tcp --dport 5252 -m comment --comment "SSH_Secure Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m comment --comment "SSH Input" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m comment --comment "HTTP Input" -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o tun0 -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "torrent" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "announce" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j LOGDROP
-A FORWARD -m string --string "find_node" --algo bm --to 65535 -j LOGDROP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A LOGDROP -j LOG --log-prefix "LOGDROP "
-A LOGDROP -j DROP COMMIT
# Completed on Wed Apr 9 13:50:31 2014
# Generated by iptables-save v1.4.7 on Wed Apr 9 13:50:31 2014
*nat :PREROUTING ACCEPT [2121:189137]
POSTROUTING ACCEPT [18:1030] :OUTPUT ACCEPT [18:1030]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Apr 9 13:50:31 2014
我有一台运行 openvpn 的 centos 6 服务器,
我想要这样做的原因是,我有客户端连接,由于他们进行大量下载,并且在不需要时从不断开 VPN,所以我占用了大量带宽,因此账单金额很高
iptables 规则以“-A FORWARD -m string”和所有“log/logdrops”开头,我从一个网站获得了这些规则(其中可能有许多网站引用完全相同的规则来阻止 torrent 流量),唯一的问题是它不会阻止任何流量
我连接到了 vpn,启动了几个种子,它们的下载速度并没有减慢,就好像我没有连接到 vpn 一样……
请帮忙
答案1
这是一种不同的方法,但我成功地“保护”了我的家庭网络免受 p2p(和其他东西)的侵害 - 只允许 2 个远程端口(tcp 443+80)并使用 opendns FamilyShield DNS(208.67.222.123,208.67.220.123)来阻止很多网站,所以我在我的家庭网络中设置了一个本地 dns 解析器/缓存(dnsmasq),我可以在其中添加例外。
答案2
和知识产权保护。
apt-get install ipset
将此规则包含在 iptables 脚本的标头中:
# Block bittorrent (6881-6889 58251-58252,58687,6969)
# Block others P2P (1337,2760,4662,4672,8104)
# etc., etc. (any, port you want to block)
# variables
ipset=/sbin/ipset
iptables=/sbin/iptables
pathlst=/path_to/portslist.txt # your port list
$ipset -F
$ipset -N -! blockp2p bitmap:port range 0-65535
for ports in $(cat $pathlst); do
$ipset -A blockp2p $ports
done
# block rule (For TCP / UDP and for source or destination port)
for srcdst in `echo src dst`; do
$iptables -t mangle -A PREROUTING -m set --match-set blockp2p $srcdst -j DROP
$iptables -A INPUT -m set --match-set blockp2p $srcdst -j DROP
$iptables -A FORWARD -m set --match-set blockp2p $srcdst -j DROP
done
# example content of portslist.txt
1337
2760
4662
4672
8104
6969
6881
6882
6883
6884
6885
6886
6887
6888
6889
58251
58252
58687
PD:如果您想看到规则的实际作用,您必须添加规则以在 syslog 或 nflog 中记录端口阻塞
PD:由于 torrent 应用程序会轮换端口,因此你可以检查它们正在使用哪些端口TCP查看器并将它们添加到阻止列表中。例如:上图中未包含端口 59018-59019(但 bittorrent 无法启动下载)
来源:封锁端口