路由器通告后,Debian 主机回复 ICMP 端口不可达(ISATAP)

路由器通告后,Debian 主机回复 ICMP 端口不可达(ISATAP)

我正在尝试配置 Debian Wheezy 主机以通过 ISATAP(使用 isatapd)获取 IPv6 地址。此机器有两个传出接口:eth0 和 eth0.20(使用 VLAN 20 的虚拟接口):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:30:05:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.xxx.xxx.12/24 brd 10.xxx.xxx.255 scope global eth0
    inet 10.xxx.xxx.100/24 brd 10.xxx.xxx.255 scope global secondary eth0
3: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:30:05:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 129.187.xxx.xxx/28 brd 129.187.xxx.xxx scope global eth0.20
    inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN 
    link/sit 0.0.0.0 brd 0.0.0.0

10.xxx.xxx.12 是此主机的网络唯一 IP,10.xxx.xxx.100 是用于负载平衡的在两个主机之间跳转的虚拟 IP。129.187.xxx.xxx 也是一个虚拟 IP,但(显然)可以使用标记的 VLAN 进行全局访问。测试期间没有设置防火墙规则。

我使用以下命令启动了 isatapd,其中 isatap 域指向 10.0.0.0/8 内的地址:

root@host:~# isatapd -l eth0.20 -n isa0 -v isatap.example.com
isatapd[25007]: Adding internal PDR 10.xxx.xxx.xxx
isatapd[25007]: isa0 created (local 129.187.xxx.xxx, pmtudisc)
isatapd[25007]: interface isa0 up
isatapd[25009]: Soliciting fe80::xxxx:xxxx:xxxx
isatapd[25009]: Soliciting fe80::xxxx:xxxx:xxxx
[...]

是的,主机的 IP 是全局 IP,而 ISATAP 路由器的 IP 在本地网络内。我已经怀疑这是问题所在,但在我的计算机上 ping 和 traceroute 都可以正常工作。

当查看 wireshark 中的流量时,我可以看到以下内容:

[Host] -> [ISATAP-Router]    ICMPv6 Router Solicitation
[ISATAP-Router] -> [Host]    ICMPv6 Router Advertisement
[Host] -> [ISATAP-Router]    ICMP Destination unreachable (Port unreachable)

路由器请求和广告看起来都很好。它们(至少据我所知)设置了正确的 IP(在 IPv4 标头中以及封装的 IPv6 标头中,并且我在广告中收到了正确的前缀),但我的主机立即拒绝了广告。有人知道为什么会发生这种情况吗?

相关内容