Image

知识库 → 登录 dmesg icmp: ip Source Route Failed

[虚拟服务器]
出版日期: 22.05.2025

在 Linux 日志中,运行 dmesg 命令时,可能会遇到以下事件:

icmp6_send: no reply to icmp error
icmp6_send: no reply to icmp error
icmp6_send: no reply to icmp error
icmp: xxx.xx.xxx.xx: Source Route Failed
icmp: xxx.xx.xxx.xx: Source Route Failed
icmp: xxx.xx.xxx.xx: Source Route Failed

1. icmp6_send: no reply to icmp error

操作系统尝试发送 ICMPv6 错误消息(例如,“目标不可达”、“时间超限”等),但未收到响应。

在大多数情况下,这是因为错误消息被防火墙阻止。

2. icmp: xxx.xx.xxx.xx: Source Route Failed

节点 xxx.xx.xxx.xx(路由器或主机)尝试使用源路由(在 IP 数据包头中指定路由),但失败了。

源路由被认为是一种安全漏洞,在现代操作系统和网络设备中通常已被禁用。

3. 原因

  • 尝试使用源路由进行攻击(例如,伪装)。
  • 网络扫描(例如,通过带有源路由选项的 traceroute)。

4. 结论与行动

4.1 对于 icmp6_send: no reply to icmp error

检查 IPv6 协议的设置和运行情况,例如使用 ping6。您还可以在 iptables 防火墙中设置 IPv6 流量的限制:

iptables -A INPUT -p ipv6-icmp -m limit --limit 80/sec --limit-burst 80 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited

如果已设置限制,该消息表明有人尝试超过这些限制,作为通知。

4.2 对于 icmp: xxx.xx.xxx.xx: Source Route Failed

确保源路由已被禁用,运行以下命令:

sysctl net.ipv4.conf.all.accept_source_route

响应应为 0(net.ipv4.conf.all.accept_source_route = 0)。

检查日志,查找来自 IP xxx.xx.xxx.xx 的可疑活动——很可能是一个扫描器或恶意行为者。

通常无需采取任何行动,该消息仅为通知。

5. 附加操作(可选)

5.1 阻止 IP

您可以阻止该 IP 地址,但攻击者通常拥有整个子网,这可能无效。上述措施通常已足够,但如果需要,可以这样阻止:

iptables -A INPUT -s xxx.xx.xxx.xx -j DROP

5.2 启用日志记录

iptables -A INPUT -m policy --pol ipsec --dir in -j ACCEPT
iptables -A INPUT -m rt --rt-type 0 -j LOG --log-prefix "SRC ROUTE ATTEMPT: "
iptables -A INPUT -m rt --rt-type 0 -j DROP

尝试记录将出现在 /var/log/syslog 文件中。

5.3 检查所有接口的设置

sysctl -a | grep accept_source_route

对于 IPv4 的输出应类似于:

net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0

对于 IPv6 类似:

net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.eth0.accept_source_route = 0

请注意,IPv6 和 IPv4 的最后两个命令使用 eth0 ——您的网络接口名称可能不同。可以使用 ifconfig 或 ip link show(ip l)命令检查。

5.4 修改 sysctl 设置

要更改操作系统设置并在重启后保留这些设置,需要编辑 /etc/sysctl.conf 文件。要应用更改,使用以下命令:

sysctl -p

在这种情况下,文件中的行将如下所示:

net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0




No Comments Yet