![什么是“虚拟设备上的死循环”以及如何修复它?](https://linux22.com/image/489802/%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E8%99%9A%E6%8B%9F%E8%AE%BE%E5%A4%87%E4%B8%8A%E7%9A%84%E6%AD%BB%E5%BE%AA%E7%8E%AF%E2%80%9D%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%E5%AE%83%EF%BC%9F.png)
我最近刚从 Cisco/Linksys 买了一台新路由器,即 RVS4000。我不断在日志中收到消息,说“虚拟设备 sit1 死循环,紧急修复!”但我不确定这是什么意思,也不知道我需要做什么来修复它。这是我应该担心的事情吗?
答案1
搜索后发现,在 Linux 相关系统上有很多类似的问题。实际答案并不多(或者说,我能理解的答案也不多)。有些答案指出了桥接和隧道设置不当,而其他答案则是普通设置,与此无关。
我的建议是先升级固件(如果可用)。然后,就我而言,我可能会忽略它,除非它导致问题或我注意到性能问题。
我认为生活中有太多实际问题,没必要去追查虚假日志条目。另外,如果真的很重要,我本希望找到更明确的东西。
如果这确实是一个关键系统,我可能会换用其他设备。要么是 Cisco 或 Sonicwall 的产品,要么是类似质量的产品。它们更贵,但在适当的情况下提供值得的支持。
答案2
我知道这是一个老问题,但由于我最近被这个问题困扰,请允许我在这里记录一下:如果您有一个 6to4 接口但缺少一些通往内部网络的路由,则可能会触发此错误。就我而言,我将一些虚拟机放在一个单独的子网中,但忘记告诉路由器我的机器是这个子网的网关。
我只能猜测路由器中会发生什么:发往内部网络的数据包被默认的 2002::/16 路由捕获,被推入 6to4 隧道,在那里它们被封装在 IPv4 数据包中,然后它们会遇到障碍,因为目标地址将是您的公共 IPv4 地址。由于我们已经处于出站队列中,我可以理解为什么这会让内核感到困惑。
答案3
ttl 64
我的一个 Debian Squeeze 系统上的两个 sit 设备都遇到了这个问题。我通过在设备的配置节中指定以下内容来消除消息泛滥:
auto sit1
iface sit1 inet6 v4tunnel
address ................
netmask 64
endpoint ................
local .................
gateway ..................
ttl 64 <=================================
答案4
我对 Cisco/Linksys 路由器不感兴趣。我只知道其中一些路由器基于 Linux,所以我决定查看代码。当软件设备陷入某种无限循环时,会显示此消息。在代码中,“软件设备”一词指的是环回设备和隧道。
仔细检查任何 IP 隧道配置(如果有),并尝试升级固件,正如 hunterji 上面所说的那样。