![iptables:!匹配多个ip地址](https://linux22.com/image/171629/iptables%EF%BC%9A%EF%BC%81%E5%8C%B9%E9%85%8D%E5%A4%9A%E4%B8%AAip%E5%9C%B0%E5%9D%80.png)
我需要重定向来自网络外部 (5.9.0.0) 的数据包,因此我尝试在其中一台计算机上添加此操作(它具有三个接口 5.9.30.20、5.9.20.20、5.9.10.20),但我得到RTNETLINK answers: Network is unreachable
iptables -t nat -A PREROUTING –p icmp --icmp-type echo-reply ! -d 5.9.0.0/16 -j DNAT --to-destination 5.9.40.10
据我用谷歌搜索,那是因为我的计算机位于 5.9.30.0/24、5.9.20.0/24 和 5.9.10.0/24,而 5.9.0.0/16 是上一级。
所以我也尝试了这种方法:
iptables -t nat -A PREROUTING –p icmp --icmp-type echo-reply ! -d 5.9.30.0/24,5.9.10.0/24,5.9.20.0/24 -j DNAT --to-destination 5.9.40.10
但我得到了iptables: ! is not allowed with multiple IP addresses
我可以检查数据包的目的地/源不是 5.9.10.0/24、5.9.20.0/24 或 5.9.30.0/24 吗?
答案1
独立于我对你想在那里做什么的怀疑:
您可以分别检查多个地址:
iptables -t nat -N dnat_operation
iptables -t nat -A PREROUTING -j dnat_operation
iptables -t nat -A dnat_operation -d 5.9.30.0/24 -j RETURN
iptables -t nat -A dnat_operation -d 5.9.10.0/24 -j RETURN
iptables -t nat -A dnat_operation -d 5.9.20.0/24 -j RETURN
iptables -t nat -A dnat_operation # do whatever with the packets which are left