我将使用IPv6设置一个静态IPv6地址和相应的IPv6默认路由。我看过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手工完成,可以使用dhcpcd的钩子,也可以简单地搁置dhcpcd。但是我依赖dhcpcd来处理DHCPv4。我认为如果dhcpcd能够同时处理IPv4和IPv6配置,就不会那么麻烦了。
我的问题是:
dhcpcd是否有更直接的方式通过在dhcpcd.conf中指定一些选项/命令来自动设置IPv6默认路由?
发布于 2018-07-06 10:32:10
您不能使用DHCPv4提供默认的IPv6路由。您甚至不能使用DHCPv6提供默认的IPv6路由。
原因是IPv6在许多方面与IPv4不同,其中之一就是路由器的行为:每个IPv6路由器都宣布自己是通往可用作网关的段的网关。而且您可以有多个路由器的段,它不限于一个网关,如在IPv4。
因此,这并不是通过交换DHCP广播和响应来实现的,而是通过在主机和路由器之间交换路由器请求(RS)和路由器广告(RA)消息来实现的,就像IPv6 邻居发现协议中定义的那样。
因此,让您的IPv6主机使用正确的路由配置自己的唯一方法是在路由器/网关上运行radvp (配置正确)和dhcpd。您可以再次启用RS消息(删除noipv6rs),因为如果Linux认为自己是一个路由器(已启用转发),它不会(或至少不应该)发送RS消息。
使用radvp实际上是一种“不那么麻烦”的方式--它允许您在不需要更新中央配置文件的情况下向段中添加路由器或将路由器移除。
此外,无状态自动配置(SLAAC)将允许您的主机从可路由前缀本身生成IPv6地址。
发布于 2018-07-05 20:37:01
谷歌的"dhcp ipv6拖欠“引导我到这个非盟问答题为:如何在dhcpd6.中设置默认网关。根据这个Q&A IPv6:
DHCPv6不支持设置路由器/网关的选项。
https://unix.stackexchange.com/questions/433439
复制相似问题