在我的防火墙/路由器 Linux 机上,我经常看到 ICMP 主机/端口不可达错误,例如:
Jan 10 10:11:56 localhost kernel: [80413.542607] firewall-invl: IN=wan OUT=
MAC=c8:60:00:e1:0f:7c:00:01:5c:22:e0:c1:08:00 SRC=95.37.140.148 DST=my-public-ip
LEN=162 TOS=0x00 PREC=0x20 TTL=51 ID=2053 PROTO=ICMP TYPE=3 CODE=1
[SRC=my-public-ip DST=10.10.10.103 LEN=134 TOS=0x00 PREC=0x00 TTL=48 ID=0 DF
PROTO=UDP SPT=4608 8 DPT=13298 LEN=114 ]
此处,“my-public-ip”是 ISP 分配给 iface“wan”的外部动态 IP。另一个 iface“br0”连接到我的 10.0.0.0/24 LAN。
如果我理解正确的话,那么位于 95.37.140.148(俄罗斯,mts-nn.ru)的主机会向我发送一条 ICMP 主机不可达消息,以回复其中一台 LAN 机器对 10.10.10.103 的请求。
然而,这让我很困惑,因为在 FORWARD 链中有一条规则专门阻止来自 LAN 内部的此类请求(以及 192.168.0.0/16 和 172.16.0.0/12)
-A FORWARD -d 10.0.0.0/8 -i br0 -j REJECT --reject-with icmp-host-unreachable
例如,traceroute 返回正确的“!H”
$ traceroute 10.10.10.103
traceroute to 10.10.10.103 (10.10.10.103), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 2.534 ms 2.496 ms 2.499 ms
2 10.0.0.1 (10.0.0.1) 2.535 ms !H 2.617 ms !H 2.637 ms !H
那么,我该如何理解上述日志条目?
答案1
-A FORWARD -d 10.0.0.0/8 -i br0 -j REJECT --reject-with icmp-host-unreachable 不会阻止主机不可达请求,它生成以响应某些条件。
干杯,
抢