如何使用 dhcpcd 设置静态 IPv6 默认路由?

Dum*_*mmy 8 networking route dhcpcd

我将设置一个静态 IPv6 地址和一个相应的 IPv6 默认路由dhcpcd。我已经浏览过man dhcpcd.conf,但找不到任何地方提到如何设置 IPv6 默认路由。

我的当前dhcpcd.conf

hostname
duid
persistent
option rapid_commit
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
require dhcp_server_identifier

interface eth0
noipv6rs
static ip6_address=2001:xxx::xxx/128
Run Code Online (Sandbox Code Playgroud)

我想做的dhcpcd是:

ip addr add 2001:xxx::xxx/112 dev eth0
ip -6 route add 2001:xxx::xxxx dev eth0
ip -6 route add default via 2001:xxx::xxxx
Run Code Online (Sandbox Code Playgroud)

但是,以我当前的配置,dhcpcd只为我做前两行而不是第三行。

man dhcpcd.conf只告诉 IPv4 默认路由器可以通过类似static routers=192.168.0.1.

我知道它可以通过ip -6 route add手动完成,使用 的钩子dhcpcd,或者干脆把 放在一边dhcpcd。但是我靠dhcpcd处理DHCPv4。而且我认为如果 dhcpcd 可以同时处理 IPv4 和 IPv6 配置,那就不会那么麻烦了。

我的问题:

是否有更直接的方法dhcpcd通过在 中指定一些选项/命令来自动设置 IPv6 默认路由dhcpcd.conf

dir*_*rkt 10

您不能使用 DHCPv4 来提供默认 IPv6 路由。你甚至不能使用DHCPv6来给出默认的 IPv6 路由。

原因是 IPv6 在许多方面与 IPv4 不同,其中之一是路由器的行为方式:每个 IPv6 路由器都将自己声明为可以将其用作网关的网段的网关。并且您可以有多个路由器用于分段,它不像 IPv4 那样仅限于单个网关。

因此,这不会通过交换 DHCP 广播和回复来实现,而是通过在主机和路由器之间交换路由器请求(RS) 和路由器广告(RA) 消息来实现,如 IPv6邻居发现协议 中所定义。

因此,让您的 IPv6 主机使用正确的路由进行自我配置的唯一方法是在您的路由器/网关radvp之外运行(正确配置)dhcpd。在此期间,您可以再次启用 RS 消息(删除noipv6rs),因为如果 Linux 将自己视为路由器(启用转发),它就不会(或至少不应该)发送 RS 消息。

并使用radvp 真正的“少乱”的方式-它允许你添加路由器从段或删除路由器,而不必更新中央配置文件。

此外,无状态自动配置 (SLAAC) 将允许您的主机根据可路由前缀本身生成 IPv6 地址。


slm*_*slm 4

谷歌搜索“dhcp ipv6 defaultroute”让我找到了这个标题为:如何在 dhcpd6.conf 中设置默认网关的AU 问答。根据此问答 IPv6:

DHCPv6 不支持设置路由器/网关的选项。