linux关闭ipv6的ra

发布时间: 2023-08-14

前两天给一台机器配置ipv6的时候出现个奇怪的问题:

刚开始能ping通,过几分钟就不行了,重启systemd-networkd后能短暂恢复,过几分钟又嗝屁,如此反复。。

找半天原因最后通过查看路由表发现问题:

图中红框的这条路由就是问题所在,通过看到proto ra可以得知这条路由是上级路由器发的ra通告。机器收到ra后systemd-networkd就会自动加上这条路由。。这个时候你手动用ip -6 route del去删是没用的,过一会又给你自动加上。。

解决办法,编辑对应网卡的networkd配置文件:

nano /etc/systemd/network/20-wired.network

在[Network]里面加上IPv6AcceptRA=no:

[Network]
Address=xxx.xxx.xxx.xxx/24
Address=xxx:xxx:xxx:xxx:x::x/80
IPv6AcceptRA=no

重启networkd:

systemctl restart systemd-networkd

如果机器没用networkd,也可以通过修改内核配置来关闭ra:

echo 'net.ipv6.conf.all.accept_ra = 0' >> /etc/sysctl.d/99-sysctl.conf
sysctl --system

请在下方留下您的评论.加入TG吹水群