好吧,对于这个问题有很多不同的答案。某人和我有同样的问题。
以下是我从所有现有答案中尝试过的方法:
- 禁用 DAD 并启用非本地绑定:
sysctl net.ipv6.conf.eth0.dad_transmits=0
sysctl net.ipv6.ip_nonlocal_bind=1
- 然后我尝试做一些事情这里:
ndppd
# (warning) Low prefix length (64 <= 120) when using 'static' method
# it's running in a seperate screen btw, i didn't terminate it
ip add add local 2a09:7c40:0:f::/64 dev lo
# ignored the route command, because i already had it configured
# ignored the sysctl, because i already had it enabled
curl --interface 2a09:7c40:0:f::2145 https://api64.ipify.org/
# the curl command didnt work, it timeouted
# had the same ip assigned to loopback and ens3, so i tried removing it from ens3:
ip addr del 2a09:7c40:0:f::/64 dev ens3
curl --interface 2a09:7c40:0:f::2145 https://api64.ipify.org/
# the curl command still didnt work, it timeouted
也许该curl --interface
选项不适用于非本地绑定,所以我尝试执行相同的先前命令,但我将 curl 替换为自由绑定:
freebind -r 2a09:7c40:0:f::/64 -- wget -qO- ipv6.wtfismyip.com/text
但就像之前的所有事情一样,它也不起作用。
对于厌倦了这个问题的人来说,有一个解决这个问题的方法,你可以在每次需要时添加一个地址,如下所示:
ip -6 address add 2a09:7c40:0:f::2145/64 dev ens3
curl --interface 2a09:7c40:0:f::2145 https://api64.ipify.org/
ip -6 address del 2a09:7c40:0:f::2145/64 dev ens3
但对于同时使用大量 IP 的情况,这种解决方法并不奏效。
因此,问题是:我怎样才能让这个东西最终发挥作用呢?
编辑:这是 ip -6 route 的输出
root@ghp:~# ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2a09:7c40:0:f::/64 dev lo proto kernel metric 256 pref medium
fe80::/64 dev ens3 proto kernel metric 256 pref medium
default via 2a09:7c40::1 dev ens3 metric 1024 onlink pref medium
如果在路由表中设置了 lo 接口,则会出现无法路由到主机的情况;
如果设置了 ens3 接口,则会出现超时的情况