使用 Iptables 记录 ICMP 数据包

使用 Iptables 记录 ICMP 数据包

我正在学习 iptables,但我在这里碰壁了。

我的任务是记录从 192.168.1.2 到 192.168.1.1 的 ICMP 请求和回复

这就是我添加这条规则的原因

iptables -A INPUT -p icmp --icmp-type 8 --source 192.168.1.2 -j LOG

iptables -A OUTPUT -p icmp --icmp-type 0 -d 192.168.1.2 -j LOG

当我从 192.168.1.2 ping 192.168.1.1 时,它似乎记录了请求

但它无法记录回复。有什么想法吗?

// 编辑


bash-5.1# iptables-save -c
# Generated by iptables-save v1.8.7 on Fri Apr  1 09:20:45 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
[43:3612] -A INPUT -s 192.168.1.2/32 -p icmp -m icmp --icmp-type 8 -j LOG
[37:3108] -A OUTPUT -d 192.168.1.2/32 -p icmp -m icmp --icmp-type 0 -j LOG
COMMIT

不知道为什么这两个规则都在 OUTPUT ACCEPT 中,但看起来像这样iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
LOG        icmp --  192.168.1.2          anywhere             icmp echo-request LOG level warning

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
LOG        icmp --  anywhere             192.168.1.2          icmp echo-reply LOG level warning

答案1

当您尝试从 192.168.1.2 ping 到 192.168.1.1 时,OUTPUT 链将用于扫描发送请求,INPUT 链将用于扫描接收响应,因此将创建正确的 iptables,如下所示:

iptables -A OUTPUT -p icmp --icmp-type 8 -s 192.168.1.2 -j LOG
iptables -A INPUT -p icmp --icmp-type 0 -d 192.168.1.2 -j LOG

相关内容