在阅读iptables 中表的NOTRACK
目标时raw
,我遇到了一篇文章,建议对于某些流量,您可以(甚至应该)禁用连接跟踪。这两个例子是:(1)所有类型的路由数据包,(2)如果你有一个网络服务器,或者其他消耗资源的服务,你也应该禁用此类服务的连接跟踪。我没有网络服务器,但我有一些 p2p 客户端。以下是连接跟踪的标准规则:
iptables -t filter -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -t filter -A INPUT -p udp -m conntrack --ctstate NEW -j udp
iptables -t filter -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j tcp
在udp
和tcp
链中,我使用以下命令为 torrent 客户端打开端口:
iptables -t filter -A udp -p udp --dport 33333 -m conntrack --ctstate NEW -j ACCEPT
iptables -t filter -A tcp -p tcp --dport 33333 -m conntrack --ctstate NEW -j ACCEPT
当我检查 conntrack 条目时:
# cat /proc/net/nf_conntrack | wc -l
3569
现在可以选择NOTRACK
在raw
表格中为这种流量设置,例如:
iptables -t raw -A notrack_in -p udp --dport 33333 -j NOTRACK
iptables -t raw -A notrack_in -p udp --dport 33333 -j ACCEPT
iptables -t raw -A notrack_in -p tcp --dport 33333 -j NOTRACK
iptables -t raw -A notrack_in -p tcp --dport 33333 -j ACCEPT
它还需要过滤表中的两条规则:
iptables -t filter -A INPUT -p udp --dport 33333 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 33333 -j ACCEPT
操作后,入口数/proc/net/nf_conntrack
下降到150-200,33333端口没有线路。
我的问题是:禁用连接跟踪是否安全?这样做是否需要向 iptables 添加规则?这种解决方案的优缺点是什么?