ping 没有收到数据包,但 tcpdump 可以看到它们进来

ping 没有收到数据包,但 tcpdump 可以看到它们进来

我正在将旧的 Ubuntu OpenVZ 实例 (Jaunty) 迁移到新的 CentOS 6.3 主机(使用 vzdump/vzrestore)。

现在网络无法正常工作。事实:

  • 如果设置一个新的 OpenVZ 实例,它就可以正常工作。
  • 我可以很好地连接到旧实例,但它无法连接到外部。
  • 它无法 ping 主机,也无法执行其他任何操作。
  • 我已经清除了主机上和 VE 内部的所有 iptables 规则。

平:

root@dolores:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 9999ms

同时在VE内:

17:49:12.730360 IP dolores > 8.8.8.8: ICMP echo request, id 59701, seq 1, length 64
17:49:12.735095 IP 8.8.8.8 > dolores: ICMP echo reply, id 59701, seq 1, length 64
17:49:13.730305 IP dolores > 8.8.8.8: ICMP echo request, id 59701, seq 2, length 64
17:49:13.735524 IP 8.8.8.8 > dolores: ICMP echo reply, id 59701, seq 2, length 64
17:49:14.730411 IP dolores > 8.8.8.8: ICMP echo request, id 59701, seq 3, length 64

此输出偶尔会出现一些延迟,我相信是因为 tcpdump 尝试对涉及的 ips 进行反向 DNS 处理:

17:47:20.977819 IP dolores.40623 > 213.133.98.97.domain: 60247+ PTR? 8.8.8.8.in-addr.arpa. (38)

我可以在主机上运行 tcpdump 并立即获得相同的输出。

当然,/sys/devices/virtual/net/venet0/statistics/rx_bytes正在更新,并且没有任何/sys/devices/virtual/net/venet0/statistics/rx_错误文件让人窥视。

这是怎么回事?我现在该看哪里?我认为这个问题一定与 Ubuntu VE 本身有关,因为它适用于新创建的版本。

更多输出以防有帮助:

root@dolores:/# ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:39652 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39398 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3344760 (3.3 MB)  TX bytes:3303115 (3.3 MB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:78.46.236.xxx  P-t-P:78.46.236.xxx  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

root@dolores:/# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         *               0.0.0.0         U     0      0        0 venet0

在主机上:

[root@olive ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
static.xxx.236. *               255.255.255.255 UH    0      0        0 venet0
78.46.236.xxx   *               255.255.255.224 U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         gw-wan2.little- 0.0.0.0         UG    0      0        0 eth0

答案1

有相同的症状,但不是虚拟机。我已经修好了。我的 SNAT 设置有问题并且ip rule不匹配。

运行ip route,应该有一行...

default dev venet0  scope link 

运行ip rule,应该有3行...

0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

相关内容