了解一些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分配给“wan”的外部dynamicIP。 另一个iface,“br0”,连接到我的10.0.0.0/24局域网。

如果我正确阅读,那么95.37.140.148(俄罗斯,mts-nn.ru)上的一台主机向我发送一个ICMP主机不可达消息,以回应10.10.10.103的LAN机器请求之一。

然而这对我来说是非常混乱的,因为在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 

那么,我如何理解上面的日志条目呢?

-A FORWARD -d 10.0.0.0/8 -i br0 -j REJECT –reject-with icmp-host-unreachable不会阻止主机无法访问的请求,它会响应某些条件生成它们。

干杯,