了解某些 ICMP 错误数据包的来源

了解某些 ICMP 错误数据包的来源

在我的防火墙/路由器 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 不会阻止主机不可达请求,它生成以响应某些条件。

干杯,

相关内容