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

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

我将使用 .ipv6 设置静态 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

我想做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

但是,根据我当前的配置,dhcpcd仅执行前两行,而不执行第三行。

man dhcpcd.conf仅告诉您可以通过类似 的方式设置 IPv4 默认路由器static routers=192.168.0.1

我知道这可以通过手动完成ip -6 route add,使用 的 hooks dhcpcd,或者干脆放在一边dhcpcd。但我依靠dhcpcdDHCPv4 来处理。我认为如果 dhcpcd 可以同时处理 IPv4 和 IPv6 配置,那就不会那么混乱了。

我的问题:

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

答案1

您无法使用 DHCPv4 发出默认 IPv6 路由。你甚至不能使用DHCPv6给出默认的 IPv6 路由。

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

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

因此,让 IPv6 主机使用正确的路由配置自身的唯一方法是除了在路由器/网关上运行radvp(正确配置)之外。dhcpd当你这样做时,你可以再次启用RS消息(删除noipv6rs),因为如果Linux认为自己是一个路由器(启用转发),它就不会(或至少不应该)发送RS消息。

并使用radvp 实际上是“不太混乱”的方式 - 它允许您在网段中添加路由器或从网段中删除路由器,而无需更新中央配置文件。

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

答案2

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

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

答案3

我想回答我自己的问题:

答案由德克特是这个问题的直接答案。答案由可持续发展管理给出了一些有用的解决方案和进一步的建议。

但是,他们都没有解决我遇到的问题。

我遇到的情况是网络环境完全不受我的控制。事实上,我从 VPS 提供商处购买了 VPS。他们提供的是预配置的网络。我只是想重新安装 VPS 并将操作系统从 Debian 更改为另一个发行版,除了在安装后复制完全相同的网络配置之外,我别无选择更改任何网络环境。

在互联网上搜索并询问其他人后,我发现配置静态 IPv6 路由器和地址的最佳解决方法是使用网络控制网络控制可以使用DHCPCD作为协商 DHCPv4 的后端,同时还提供静态配置 IPv6 的简单方法。这是我到目前为止的配置:

Description='A basic dhcp ethernet connection'
Interface=eth0
Connection=ethernet
IP=dhcp
#DHCPClient=dhcpcd
#DHCPReleaseOnStop=no

IP6=static
Address6=('2001:****:****::****/***')
Routes6=('2001:****:****::****')
Gateway6='2001:****:****::****'

相关内容