我有一个运行6to4隧道的Linux网关路由器,并使用radvd在本地子网上广播IPv6前缀。 Radvd可以configuration为从6to4接口自动获取networking前缀,但我无法find一种方法来自动分配一个有效的地址到本地networking接口(eth0)。
例如,如果我的6to4接口自动configuration为2002:4185:9dd4::1/16 ,那么eth0需要的地址为2002:4185:9dd4:dead:<whatever>/64 (其中“dead”是本地子网I在radvd.conf中configuration)。 随着radvd在本地机器上运行,有没有办法迫使linux来autoconfigure eth0?
简短的回答:在你正在运行radvd的系统上,你需要使用与你用来configurationradvd相同的方法来configuration接口; 如果radvd.conf是静态生成的,那么你的本地以太网接口的IPv6地址应该是静态生成的。 但是,一切都不会丢失; 阅读更多的细节。
你可以做的是使用一个小的shell脚本来configuration两者。 假设您有一个dynamic分配的全局IPv4地址, 并且这是您的接口上唯一的IPv4地址; 你可以使用下面的shell脚本来获取IPv6 / 48前缀(注意:代码改编自ARIN :
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的前缀很简单,因为你可以把它附加到$PREFIX48variables。
现在,剩下的工作就是编写写出networking接口configuration和radvdconfiguration的脚本(大概是从每个模板中提取出来的),然后在networkingconfiguration之前运行该脚本。 我不会在这里包含这个代码,因为我不知道你使用的是什么发行版,而且根据不同而不同。
希望这可以帮助。
我不确定。 但是,如果您的MAC地址和使用的前缀没有更改,为什么不静态configuration接口的地址,否则将来自自动分配?
如果你的MAC地址或前缀经常改变,我很想知道你在做什么。
你的路由器在运行什么? 如果是像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 //./}`
V6NET = 16
GW = 192.88.99.1
IP隧道添加6to4模式坐在远程任何本地“$ IP”ttl 255开发“$ ODEV”
IP链路设置6to4了
ip addr add“$ V6PREFIX :: 1 / $ V6NET”dev 6to4
ip addr add“$ V6PREFIX:1 :: 1 / $((V6NET + 48))”dev“$ IDEV”
ip route通过“:: $ GW”dev 6to4 metric 1添加2000 :: / 3
我想你想$V6PREFIX:dead::1/$((V6NET+48))或类似的东西。