如果 radvd 在同一主机上运行,​​Linux 路由器可以自动配置 IPv6 吗?

如果 radvd 在同一主机上运行,​​Linux 路由器可以自动配置 IPv6 吗?

我有一个运行 6to4 隧道的 Linux 网关路由器,并使用 radvd 在本地子网上广播 IPv6 前缀。可以将 Radvd 配置为自动从 6to4 接口获取网络前缀,但我找不到自动为本地网络接口 (eth0) 分配有效地址的方法。

例如,如果我的 6to4 接口自动配置为2002:4185:9dd4::1/16,则 eth0 需要一个地址2002:4185:9dd4:dead:<whatever>/64(其中“dead”是我在 radvd.conf 中配置的本地子网)。当 radvd 在本地计算机上运行时,是否有任何方法可以强制 linux 自动配置 eth0?

答案1

简短的回答:在您正在运行radvd的系统上,您需要使用与配置相同的方法来配置接口radvd;如果radvd.conf是静态生成的,那么您的本地以太网接口的 IPv6 地址也应该静态生成。但是,一切都没有丢失;请继续阅读以了解更多详细信息。

你可以使用一个小的 shell 脚本来配置两者。假设你有一个动态分配的全局 IPv4 地址,这是您的接口上唯一的 IPv4 地址;您可以使用以下 shell 脚本片段获取 IPv6 /48 前缀(注意:代码改编自艾林

IPV4=$(ip addr ls eth0 | grep 'inet ' | awk '{ print $2 }' | cut -f1 -d/)
PARTS=`echo $IPV4 | tr . ' '`
PREFIX48=`printf "2002:%02x%02x:%02x%02x" $PARTS`

现在,您有了 /48 前缀;获取 /64 前缀非常简单,因为您只需将其附加到变量即可$PREFIX48

现在,您要做的就是编写脚本来写出网络接口配置和 radvd 配置(可能来自每个配置的模板),并让该脚本在您的网络配置运行之前运行。我不会在这里包含该代码,因为我不知道您使用的是什么发行版,而且它会根据发行版而有所不同。

希望这可以帮助。

答案2

我不确定。但是如果你的 MAC 地址和前缀不变,为什么不使用自动分配的地址静态配置接口呢?

如果您的 MAC 地址或前缀确实定期更改,我很好奇想知道您在做什么。

答案3

你的路由器运行的是什么?如果是 Gentoo 这样的成熟发行版,OpenRC 有一个/etc/conf.d/net:6to4_suffix设置,如果#357929按照提议的方式进行修复,Debian 也会有一个/etc/network/interfaces:6to4subnet设置。

否则,我只能手动设置地址。我的路由器上的脚本包含以下内容:

IDEV=br0
ODEV=vlan2
WANIP =`ip -4 addr show dev“$ODEV”|awk'/inet / {print$2}'|cut -d/-f1`
V6PREFIX =`printf'2002:%02x%02x:%02x%02x'$ {WANIP//./}`
V6网络=16
网关=192.88.99.1

ip 隧道添加 6to4 模式坐远程任何本地“$IP”ttl 255 dev“$ODEV”
ip link 设置 6to4 up
ip 地址添加“$V6PREFIX::1/$V6NET” dev 6to4
ip 地址添加“$V6PREFIX:1::1/$((V6NET+48))” dev“$IDEV”
ip 路由添加 2000::/3 通过“::$GW” dev 6to4 度量 1

我猜你想要$V6PREFIX:dead::1/$((V6NET+48))或类似的东西。

答案4

只需在运行 Radvd 的主机上的 /etc/network/interfaces 文件中使用以下配置即可。

auto eth0
iface eth0 inet6 auto

这里的“自动”表示对接口 eth0 使用 SLAAC,它将以与其他客户端相同的方式从 Radvd 征求 IPv6 配置。

相关内容