如何将IPv6 ULA子网的路由通告服务从Windows迁移至Ubuntu?
如何将IPv6 ULA子网的路由通告服务从Windows迁移至Ubuntu?
我完全懂你不想依赖Windows做路由通告的心情,把这个服务迁移到Ubuntu其实很简单,咱们主要用radvd(Router Advertisement Daemon)这个工具就能搞定,这是Linux上专门用来发送IPv6路由通告的标准服务。下面是一步步的操作指南:
第一步:安装radvd
先更新系统的软件包列表,然后安装radvd:sudo apt update && sudo apt install radvd第二步:配置radvd
接下来要编辑radvd的配置文件,路径是/etc/radvd.conf。你需要把自己的FD开头的ULA前缀填进去,还要指定负责发送通告的网卡(比如你的LAN网卡是enp0s3或者eth0,根据实际情况替换)。这里给你一个基础的配置示例:interface enp0s3 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix fdxx:xxxx:xxxx::/64 { AdvAutonomous on; AdvOnLink on; AdvRouterAddr on; }; };解释下关键参数:
AdvSendAdvert on:开启路由通告发送MinRtrAdvInterval和MaxRtrAdvInterval:设置发送通告的最小和最大间隔时间(单位秒)AdvAutonomous on:允许客户端自动使用这个前缀生成IPv6地址(和你之前Windows上的效果一致)AdvOnLink on:告诉客户端这个前缀对应的网络是直连的AdvRouterAddr on:在通告里包含路由器自己的IPv6地址
第三步:验证配置文件
配置完后先检查语法有没有问题,避免启动失败:radvd -c /etc/radvd.conf如果没有报错,就说明配置没问题。
第四步:启动并启用radvd服务
现在启动服务,同时设置开机自启,这样Ubuntu重启后服务会自动运行:sudo systemctl start radvd sudo systemctl enable radvd第五步:验证服务运行
你可以用下面的命令查看服务状态,确认是否正常运行:sudo systemctl status radvd也可以抓包看看有没有发送路由通告包:
sudo tcpdump -i enp0s3 icmp6正常情况下会看到类型为134(Router Advertisement)的ICMPv6包。
最后还有几个小提醒:
- 确保Ubuntu机器本身已经配置了对应的ULA地址,不然没法发送有效的通告
- 检查防火墙设置,要允许ICMPv6的路由通告(类型133和134)通过,不然客户端收不到通告
- 记得关掉Windows上之前的路由通告服务,避免LAN里出现多个路由通告源导致冲突
备注:内容来源于stack exchange,提问作者Robert Chapin
相关产品推荐
相关产品推荐

