你好呀。
我管理一些 Wheezy 服务器,所有服务器都启用了 IPv6。它们都有一个全局 IPv6 /64 块,使用块中的第一个地址作为主地址,即:
root@Host /h/david# ifconfig
eth0 Link encap:Ethernet HWaddr 4c:72:b9:56:03:6e
[…]
adr inet6: fe80::4e72:b9ff:fe56:36e/64 Scope:Lien
adr inet6: 2001:1234:1234:1234::1/64 Scope:Global
[…]
我最近发现,即使在接口上配置了整个块,也只有块定义中的块(此处2001:1234:1234:1234::1
)会响应 IPv6 请求。例如,如果我 ping2001:1234:1234:1234::2
或,则不会得到任何响应。我已经检查了防火墙,它允许所有 ICMPv6 请求通过,包括 NDP 请求,但 NDP 对我来说仍然是个问题:Wheezy 不会响应邻居请求。以下是我在ing时收听时2001:1234:1234:1234::42
得到的结果:tcpdump
ping
root@Host /h/david# tcpdump icmp6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:55:23.224447 IP6 fe80::264:40ff:fe3a:fac0 > ff02::1:ff00:55: ICMP6, neighbor solicitation, who has 2001:1234:1234:1234::55, length 32
10:55:24.311669 IP6 fe80::264:40ff:fe3a:fac0 > ff02::1:ff00:55: ICMP6, neighbor solicitation, who has 2001:1234:1234:1234::55, length 32
10:55:25.392511 IP6 fe80::264:40ff:fe3a:fac0 > ff02::1:ff00:55: ICMP6, neighbor solicitation, who has 2001:1234:1234:1234::55, length 32
^C
如您所见,Wheezy 不会响应邻居请求。我考虑过内核参数,但我没有更改任何参数,我不明白为什么默认配置会忽略 NDP 数据包,而据我所知,这些数据包至关重要。此外,我尝试更改以下参数:
root@Host /h/david# sysctl -w net.ipv6.conf.all.accept_ra=1
net.ipv6.conf.all.accept_ra = 1
root@Host /h/david# sysctl -w net.ipv6.conf.default.accept_ra=1
net.ipv6.conf.default.accept_ra = 1
root@Host /h/david# sysctl -w net.ipv6.conf.eth0.accept_ra=1
net.ipv6.conf.eth0.accept_ra = 1
这也不起作用。有人知道为什么 Wheezy 不回应邻居的请求吗?
希望了解问题出在哪里,
问候。
答案1
您没有在接口上配置整个地址块。在您的示例中,您仅配置了一个来自 /64 子网的地址。
例如,当您配置时192.168.1.1/24
(192.168.1.1/255.255.255.0
采用预 CIDR 表示法),您会192.168.1.1
在子网 ( 192.168.1.0/24
) 中配置一个地址 ( )。IPv6 的工作方式完全相同。
Wheezy 在这里做了正确的事情。