尝试启用IPv6会导致“没有通往主机的路由”错误


8

我正在使用提供商提供的静态IPv4和IPv6地址在KVM服务器上配置双堆栈网络。

在安装Ubuntu时,我根据需要输入了所有地址,名称服务器和网关。在那之后,我检查了/etc/network/interfaces文件,发现没有IPv6节(ifconfig执行确认了这一点),因此我添加了相关行。这是最终文件:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 151.236.18.86
        netmask 255.255.255.0
        network 151.236.18.0
        broadcast 151.236.18.255
        gateway 151.236.18.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 91.227.204.227 91.227.205.227
        dns-search mydomainname.com
iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2001:b60:1000:151:236:18:86:0
        netmask 112
        gateway 2001:b60:1000::1
        dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
        dns-search mydomainname.com

然后,我通过重新启动网络,sudo /etc/init.d/networking stop && sudo /etc/init.d/networking restart并注意到在IPv4正常运行时,出站IPv6连接不可用(我尚未检查入站连接)。

ifconfigip -6 addr显示可识别的IPv6地址:

eth0      Link encap:Ethernet  HWaddr 52:54:00:b1:27:87  
          inet addr:151.236.18.86  Bcast:151.236.18.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:feb1:2787/64 Scope:Link
          inet6 addr: 2001:b60:1000:151:236:18:86:0/112 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16409 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1178 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1126656 (1.1 MB)  TX bytes:763658 (763.6 KB)

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:b60:1000:151:236:18:86:0/112 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feb1:2787/64 scope link 
       valid_lft forever preferred_lft forever

相反,IPv6堆栈不存在默认路由:

$ ip -6 route
2001:b60:1000:151:236:18:86:0/112 dev eth0  proto kernel  metric 256 
fe80::/64 dev eth0  proto kernel  metric 256 

尝试添加缺少的路由会导致“没有路由到主机”错误:

$ sudo ip -6 route add default via 2001:b60:1000::1
RTNETLINK answers: No route to host

可能出什么问题了,我该如何修复网络配置以使IPv6堆栈正常工作?

Answers:


6

在虚拟机内部,运行以下命令:

ping6 ff02::2%eth0

ff02::2是IPv6“所有路由器”的多播地址。链接路由器将使用其自己的地址来响应ping。例如:

64 bytes from fe80::56e6:fcff:fef4:66f1: icmp_seq=1 ttl=64 time=0.347 ms

然后,您可以将其添加为gateway地址。

iface eth0 inet6 static
        .....
        gateway fe80::56e6:fcff:fef4:66f1
        .....

我这样做了,三个路由器做出了响应(没有人匹配我的提供商给我的网关地址);我选择了延迟最小的服务器,并更改了网络配置。现在,名称解析有效,但是IPv6连接不起作用(我发出了ping6 -c 3 ipv6.google.com,DNS找到了该地址,但是有100%的数据包丢失)。有任何想法吗?
亚历山德罗·曼蒂

三个不同的路由器回应了吗?您的提供者的设置比我们想象的还要奇怪。在这一点上,我只能建议您尝试其中的每一种,然后看看其中一种是否有效。如果没有他们的工作,你就必须与供应商联系,要求他们亲切地解决他们的断网。:)
迈克尔·汉普顿

3

您的网络掩码应为64。对于IPv6,每个LAN通常为/ 64。我猜您的提供程序允许您使用该/ 64中的/ 112,但是您应该在接口上配置/ 64。


我将IPv6堆栈重新配置为使用/ 64 netblock,不幸的是,该问题仍然存在,但症状相同。
亚历山德罗·曼蒂

抱歉,我现在看到您的主机位于2001:b60:1000:151 :: / 64,而您的网关位于2001:b60:1000:0 :: / 64。CDLAN必须为您提供了错误的信息,否则它们的IPv6网络被弄乱和/或偏离了标准惯例……
Sander Steffann 2013年

1
不幸的是,这种奇怪的偏差在VPS提供商中太普遍了。
迈克尔·汉普顿

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.