我有两个 Raspberry Pi(运行 2016 年 27 月 5 日的 Raspbian),我尝试将它们设置为使用 IPv6 ULA 地址进行 LAN 内限制的通信。
一切都很好,但有一个非常重要的细节:如果我使用 ULA(唯一本地地址)从一个连接到另一个,并打印目的地的源地址,则会显示“全局”地址。因此,不知何故,它被选为源地址。
我已阅读这两本指南并尝试了各种方法但无济于事:
里面的所有内容/etc/gai.conf
都有评论。
我也会考虑Global
完全删除该地址,如果我知道怎么做就好了。我的意思是,首先阻止系统获取,然后再将其删除并不是一个可行的解决方案。
删除该eth0:1
节并直接将 ULA 分配给 eth0 即可ifconfig eth0 inet6 add fc00::6666/64
。也许这是因为源地址选择算法现在正确地使用了可用的最小范围。看来使用别名接口会在某种程度上搞乱源地址选择算法。也许可以使用 来解决route -6
?
/etc/网络/接口
<--- IPv4 ellipsized --->
auto eth0:1
iface eth0:1 inet6 static
address fc00::6666
netmask 64
autoconf 1
当前前缀和路由:
# ip addrlabel list
prefix ::1/128 label 0
prefix ::/96 label 3
prefix ::ffff:0.0.0.0/96 label 4
prefix 2001::/32 label 6
prefix 2001:10::/28 label 7
prefix 3ffe::/16 label 12
prefix 2002::/16 label 2
prefix fec0::/10 label 11
prefix fc00::/7 label 5
prefix ::/0 label 1
# route -6
Kernel IPv6 routing table
Destination Next Hop Flag Met Ref Use If
::1/128 :: U 256 0 0 lo
2001:760:XXXX:XXXX::/64 :: U 202 0 0 eth0
fc00::/64 :: U 256 0 0 eth0
fe80::/64 :: U 256 0 0 eth0
::/0 fe80::210:WWWW:WWWW:WWWW UG 202 1 8 eth0
::/0 :: !n -1 1 9 lo
::1/128 :: Un 0 2 2 lo
2001:760:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/128 :: Un 0 1 0 lo
fc00::6666/128 :: Un 0 1 0 lo
fe80::ba27:ZZZZ:ZZZZ:ZZZZ/128 :: Un 0 2 2 lo
ff00::/8 :: U 256 1 35 eth0
::/0 :: !n -1 1 9 lo
答案1
在 IPv6 之前,别名用于允许多个地址。多个地址是 IPv6 的关键部分,因此别名现已过时。
我不知道为什么它们会在这里造成混乱,但既然您已经确定它们会造成混乱,那么解决方案就是不要使用别名。
您应该能够在您的配置中逐字替换eth0:1
,eth0
并且它会起作用。 (还有一个更手动的替代方案,带有脚本挂钩)。
https://wiki.debian.org/NetworkConfiguration#iproute2_method
批评:显然你的地址缺少 UL 的 U 部分。
工作示例/etc/网络/接口:
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address aaa.aaa.aaa.aaa
netmask 255.255.255.0
broadcast aaa.aaa.aaa.255
gateway aaa.aaa.aaa.254
dns-nameservers aaa.aaa.aaa.254
post-up /etc/firewallup.sh
auto eth0
iface eth0 inet6 static
address fc00::6666
netmask 64
autoconf 1