我有一个 IPv6 隧道,它在流量出站之前拒绝工作。如果我打开设备并 ping 进去,我不会得到任何响应,直到我开始 ping 出去。如果我离开几个小时并尝试再次 ping 进去,我将得不到任何响应。
我在隧道中使用 Debian Lenny 和 Hurricane Electric。我甚至不知道从哪里开始调试这种行为,因为它太不寻常了。我使用了 Debian 配置http://www.tunnelbroker.net/forums/index.php?topic=18.0以及来自的配置http://wiki.debian.org/DebianIPv6以及其间的各种调整,但我仍然无法让设备持续接受入站流量。没有 ip6tables,但我确实有各种 iptable 规则。有没有其他人遇到过这种问题?我能做些什么来调试或解决这个问题?
编辑:没有涉及 NAT,而且都是 IPv4 Cisco 基础设施。我认为我、交换机和路由器之间没有任何 IPv6。
答案1
答案2
在不了解您的网络设计的情况下,我假设您的隧道端点位于 LAN 上的设备上,位于互联网路由器后面。我还假设该设备通过路由器上的 NAT 访问互联网。
入站问题可能由路由器上的 NAT 表引起。路由器不知道如何将入站 v6(协议 41)流量路由到隧道端点设备。只要您通过隧道向外发送 v6 流量,就会在 NAT 表中创建一个条目。此条目允许路由器将入站流量发送回隧道端点。
在没有流量的一段时间后,路由器会使条目过期并将其从其 NAT 表中清除,因此没有入站流量能够再到达您的隧道端点。
如何解决这个问题取决于您的路由器的功能。
- 在您的路由器上制定转发规则,将传入的“协议 41”流量转发到 LAN 上的隧道端点设备。大多数消费级路由器无法做到这一点。
- 或者确保有足够的出站流量来触发路由器,使 NAT 表条目永不过期。这可以通过设置 cronjob 以每 5 分钟 ping6 外部服务器来实现。
解决方案 2 的示例:将以下内容放入您的 crontab 中
# Ping6 every 5 minutes to keep NAT open
*/5 * * * * ping6 -c1 -q www.sixxs.net 2>&1 >/dev/null