我正在学习 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