我有两条规则。第一条是封锁所有端口范围:
-A 输入 -m 状态 --状态新 -m tcp -p tcp --匹配多端口 --dports 200:65535 -j DROP
并在此范围内第二次打开:
-A 输入 -i eth0 -p tcp --dport 5901 -m state --state NEW,ESTABLISHED -j 接受
但它不起作用。有人知道为什么吗?
答案1
IIRCiptables
规则依赖于顺序:如果第一条规则匹配,它将不再解析。反转顺序,你应该可以实现你想要做的事情。
扩大:但情况并非总是如此,有些规则 (fe -j LOG
) 允许数据包处理更进一步。但常见的ACCEPT
、REJECT
等规则则不然。最好将 iptables 视为一种过程编程语言:规则总是按顺序线性尝试匹配并执行。