Ubuntu的IPv6模式“Automatic, DHCP only”工作机制及网络异常问题咨询
Ubuntu的IPv6模式“Automatic, DHCP only”工作机制及网络异常问题咨询
我来给你拆解下这个问题的来龙去脉,先把你的场景再理一遍:
- 本地网络是有状态IPv6,前缀/64,路由器RA的M/O位、前缀选项的L/A位都启用
- 用“Automatic”模式时,Ubuntu同时获取SLAAC地址+DHCPv6的/128地址+DNS信息,路由配置也正常,网络完全可用
- 切换到“Automatic, DHCP only”模式,只能拿到DHCPv6的地址和DNS,但链路路由没添加、默认路由为空,就像完全忽略了IPv6 RA一样,导致除了ff02::1组播地址外啥都访问不了
首先得明确:这个模式的设计逻辑就是完全忽略RA,所有网络配置全靠DHCPv6服务器提供。
你可能会纳闷,RA里明明有路由信息为啥不用?其实这个模式就是给那种管理员想要100%用DHCPv6管控所有IPv6配置的场景设计的——比如企业网里,管理员可能开了RA的M/O位,但希望某些特定客户端完全不依赖RA,只听从DHCPv6的配置,就会用到这个模式。
那你现在的问题根源很清晰:你的DHCPv6服务器没推送路由信息。它只分配了地址和DNS,但默认路由、/64前缀的链路路由这些关键配置都没下发。而“Automatic”模式是混合模式(SLAAC+无状态DHCPv6),它会同时接收RA的路由信息和DHCPv6的地址/DNS,所以能正常工作。
如果非要用“Automatic, DHCP only”模式,给你两个解决思路:
- 配置DHCPv6服务器:让它推送默认路由(指向路由器的链路本地地址)和/64前缀的链路路由。不同DHCPv6服务器的配置方式不同,比如ISC DHCPv6可以用
option routers <路由器链路本地地址>;来推送默认路由,前缀路由可通过对应选项配置。 - 手动在Ubuntu客户端补全路由:临时生效可以执行这两条命令:
要让配置持久化,可以把命令加到ip -6 route add default via <路由器链路本地地址> dev <你的网卡名> ip -6 route add <你的IPv6前缀>/64 dev <你的网卡名>/etc/rc.local(记得给文件添加执行权限),或者创建一个systemd服务来开机自动执行。
当然,如果你没有特殊的配置需求,其实用“Automatic”模式是最省心的,毕竟它适配了大多数IPv6网络的常规配置方式。
备注:内容来源于stack exchange,提问作者RichardLiu




