我有一个 USB 以太网适配器,用于测试网络配置,Raspberry Pi 位于电缆的另一端。
我正在尝试设置 ipv6 连接,但从未设置过链路本地地址。在我的本地机器上:
$ ip -br a
ip a
enxa0cec855bd4d DOWN
$ sudo ip -6 addr add "fc00:7500:6700::1/64" dev enxa0cec855bd4d
$ ip a
enxa0cec855bd4d DOWN fc00:7500:6700::1/64
# Power up raspberry so iface comes up
$ ip a
enxa0cec855bd4d UP fc00:7500:6700::1/64
没有 fe80:: 地址 :(,让我们从头开始尝试 iface 是否启动:
$ ip -br a
ip a
enxa0cec855bd4d UP
$ sudo ip -6 addr add "fc00:7500:6700::1/64" dev enxa0cec855bd4d
$ ip a
enxa0cec855bd4d UP fc00:7500:6700::1/64
没有链路本地地址。
我的主要互联网 iface 正确获取了 ipv6 本地链接和全局地址,我有以下 sysctl
net.ipv6.conf.enxa0cec855bd4d.accept_dad = 1
net.ipv6.conf.enxa0cec855bd4d.accept_ra = 0
net.ipv6.conf.enxa0cec855bd4d.addr_gen_mode = 1
net.ipv6.conf.enxa0cec855bd4d.autoconf = 1
net.ipv6.conf.enxa0cec855bd4d.disable_ipv6 = 0
为什么这个 iface 没有获得链接本地地址?
答案1
我发现我的 RPI 将 addr_gen_mode 设置为 1,并且我没有运行 network-manager,因此没有设置地址。我在 sysctl.conf 中将其恢复为 0,并且成功了。这篇文章帮助我理解了这一点:https://medium.com/opsops/how-to-restore-link-local-ipv6-address-in-linux-737666a505f3
sysctl -w net.ipv6.conf.eth0.addr_gen_mode=0
答案2
经过多次尝试和失败后,我能够通过发出以下两个命令来解决此问题:
sudo ip -6 addr flush dev enxa0cec855bd4d scope link
sudo ip -6 link set enxa0cec855bd4d up
即使 iface 处于关闭状态,它也能正常工作,当它启动时,将正确分配一个链路本地地址。