![iptables 如何阻止 bittorrent?](https://linux22.com/image/777697/iptables%20%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20bittorrent%EF%BC%9F.png)
我需要使用 iptables 阻止所有 bittorrent 流量。据我所知,bittorrent 可以适应现有的防火墙过滤器并根据规则发送数据包。但我不知道如何解决这个问题。所以我尝试了一些在互联网上找到的 iptables 规则,但没有什么帮助。有时 bittorrent 协议包停止接收,但无论 bittorrent 协议包是什么,流量仍然会来。我应该提到,我不能只阻止我需要的几个端口以外的所有端口。我只能阻止 bittorrent 流量。
所以我尝试了这个:
sudo iptables -A INPUT -m string --string "BitTorrent" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "BitTorrent protocol" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "peer_id=" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string ".torrent" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "announce.php?passkey=" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "torrent" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "announce" --algo kmp --to 65535 -j DROP
sudo iptables -A INPUT -m string --string "info_hash" --algo kmp --to 65535 -j DROP
我还复制了这些规则,但将 INPUT 改为 OUTPUT 并改成了 FORWARD。所以目前我同时拥有 8 * 3 = 24 条规则。之后我添加了相同的规则,但使用 ip6tables 而不是 iptables 来阻止所有 ipv6 流量。
之后我尝试添加一些额外的规则:
sudo iptables -I INPUT -p tcp -m ipp2p --bit -j DROP
sudo iptables -I INPUT -p udp -m ipp2p --bit -j DROP
我还使用 ip6tables、OUTPUT 和 FORWARD 复制了这些规则。
总而言之,我根据两种方法添加了阻止 bittorrent 流量的规则:
- 根据包装中的具体图案
- 使用 ipp2p 模块
但实际上没有什么帮助。我同时分别尝试了第一种方法和第二种方法。我能得到的最好结果(同时使用所有规则)是 torrent 文件下载开始延迟 1 分钟,但一分钟后连接就建立了。
此外,当我尝试第一种方法(使用模式)时,我发现很有趣包裹。由于某种原因,它具有我刚刚过滤掉的模式。也许我按模式过滤的方式是错误的?(--algo kmp/bm 标志似乎没有改变任何东西)
也许有人已经解决了这个问题?
我在 VirtualBox 中使用 Ubuntu 22。我使用 qBittorrent、Wireshark。
我应该提供任何其他信息吗?
PS:我开始担心这根本就不可能,但无论如何,我想尝试一下