我正在尝试拒绝数据包iptables
(我想返回一个 ICMP 消息)。
iptables -A FORWARD [...] -j REJECT --reject-with icmp-port-unreach
数据包被丢弃了,但是使用时tcpdump
我看不到ICMP
。怎么回事?我做错了什么吗?我需要翻转一些sysctl
还是其他什么?
内核是:2.6.32-5-openvz-686
请不建议“用……DROP
代替REJECT
”。
答案1
iptables --list --verbose
您确定有问题的数据包符合您要拒绝的规则吗?当您查看详细输出 ( )时,您是否看到与该规则相关的计数器在增加?
您是否尝试过禁用除该规则之外的所有其他 iptables 规则,以确保没有其他规则干扰?
答案2
你确定你击中了 FORWARD 链吗?你可以添加一条规则来记录所有匹配的数据包。
iptables -I FORWARD [...] -j LOG --log-prefix "FORWARDED"
如果添加该规则后您无法在 /var/log/messages 上看到任何内容,则您可能使用了错误的链(INPUT 而不是 FORWARD?)或错误的条件。