我找了又找,没找到任何关于 iptables 参数如何组合的信息。
如果我想匹配发往或来自某个 IP 地址的流量,我可以这样做吗-s a.b.c.d -d a.b.c.d
?也就是说,-s
和-d
参数是否组合为或者(数据包匹配任意)或和(数据包匹配全部)?
有点相关,-m iprange
和-s
和如何-d
交互?也就是说,我可以使用-m iprange --src-range 10.0.0.1-10.0.0.8
来指定范围,然后添加-s !10.0.0.5
以做出例外吗?
答案1
最好的学习方法是测试。是的,你可以结合-s
和-d
,但是这是否有意义取决于你在哪个表中使用该规则。
一条规则的所有参数是AND
。如果您愿意OR
,可以创建一个将流量发送到的表。
有些组合会产生错误,最好再尝试一下。
假设您的策略是接受,并且您只想在规则匹配时进行匹配。添加规则,iptables -A OUTPUT -s x.x.x.x -d x.x.x.x -j ACCEPT
因为目标将与默认规则相同,它不会产生任何影响,但它会显示iptables -vnL
并具有计数器。
还有更高级的日志记录等,但这是一种快速测试规则的简便方法。(当然,tcpdump 是你的朋友)
关于这一点,iprange
我还是想说,最好的办法是测试。在最坏的情况下,尝试添加规则会导致错误。(希望其他人能就你问题的这一部分给你更好的答案)