我在 xen 主机中创建了一个虚拟机。按照此操作指导,我已成功 ping 通 www.google.com,但只成功 ping 了两次就成功了Destination Host Unreachable
。如果我重新启动虚拟机,我可以再次 ping 两次,然后失败。
$ - ping www.google.com
PING www.google.com (216.58.208.228) 56(84) bytes of data.
64 bytes from par10s22-in-f4.1e100.net (216.58.208.228): icmp_seq=1 ttl=51 time=17.3 ms
64 bytes from par10s22-in-f4.1e100.net (216.58.208.228): icmp_seq=2 ttl=51 time=17.4 ms
From static.12.166.76.144.clients.your-server.de (144.76.166.12): icmp_seq=3 Redirect Host(New nexthop: 144.76.166.1)
64 bytes from 216.58.208.228: icmp_seq=3 ttl=51 time=17.3 ms
From wservervm (144.76.166.25) icmp_seq=4 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=5 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=6 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=7 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=8 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=9 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=10 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=11 Destination Host Unreachable
From wservervm (144.76.166.25) icmp_seq=12 Destination Host Unreachable
主机的 IP(用于从外部访问服务器的外部 IP)用作虚拟机的默认网关。我不知道该提供什么其他信息。这可能是什么原因造成的?
的输出arp -n
为客人是:
Address HWtype HWaddress Flags Mask Iface
144.76.166.12 ether d4:3d:7e:ec:ef:f8 C eth0
144.76.166.1 (incomplete) eth0
以及主持人:
Address HWtype HWaddress Flags Mask Iface
144.76.166.27 (incomplete) xenbr0
144.76.166.1 ether cc:e1:7f:ac:52:96 C xenbr0
144.76.166.25 ether 00:16:3e:b0:23:21 C xenbr0
144.76.166.28 (incomplete) xenbr0
144.76.166.29 (incomplete) xenbr0
/etc/网络/接口主持人
# loopback
auto lo
iface lo inet loopback
# physical network interface
auto eth0
iface eth0 inet manual
# bridge public
auto xenbr0
iface xenbr0 inet static
address 144.76.166.12
netmask 255.255.255.224
gateway 144.76.166.1
bridge_ports eth0
bridge_stp off # disable Spanning Tree Protocol
bridge_waitport 0 # no delay unless port available
bridge_fd 0 # no forwarding delay
# up route add -net 188.40.103.64 netmask 255.255.255.192 gw 188.40.103.65 eth0
# bridge internal
auto xenbr1
iface xenbr1 inet static
address 10.0.10.1
broadcast 10.0.10.255
netmask 255.255.255.0
pre-up brctl addbr xenbr1
# ipv6
iface eth0 inet6 static
address 2a01:4f8:200:420b::2
netmask 64
gateway fe80::1
brctl 显示:
bridge name bridge id STP enabled interfaces
xenbr0 8000.d43d7eeceff8 no eth0
vif6.0
xenbr1 8000.000000000000 no
我认为这里要关注的重点是它在失败之前成功地进行了两次乒乓球运动。
答案1
在提供对域的访问时,您要么进行路由,要么进行桥接。看起来您试图同时执行这两项操作,并且很有可能会触发重定向并间接破坏连接,因为您的防火墙规则。
请考虑以下情况:
您进行桥接。数据包通过 iptables FORWARD 链,直接从您的主机传送到客户机,而无需实际路由。重要的是要知道 FORWARD 链默认适用于桥接。通常,提供商会要求您绑定特定的虚拟 MAC 地址,以便出于安全原因(欺骗等)使其工作。
您进行路由。数据包通过 iptables FORWARD 链,然后使用内核路由表路由到正确的目的地。通常这意味着您使用不同子网的地址或 /32 单个地址,路由由提供商专门处理。
在这里,你需要同时做这两件事:
- 您有一座连接 DomU 和主机连接的桥
- 然而,DomU 尝试通过主机路由到达提供商网关
- 提供商意识到了这一点,可能是因为它不使用指示的虚拟 MAC 地址(如果您已设置),并发送 ICMP REDIRECT 消息来通知客户发生了什么
我不确定为什么这不起作用,因为几乎所有主流 Linux 发行版都禁用了 ICMP 重定向,尽管非对称路由会带来问题,但它应该可以工作。这可能是由于提供商的网关对 ARP 和 MAC 更改过于挑剔造成的问题……
无论如何,由于您的 Dom0 和 DomU IP 地址都在同一个网络掩码中,因此您必须进行完全桥接。只需更正 DomU 的网关地址以指向 .1(提供商网关)。不要忘记根据需要调整防火墙规则,因为即使是桥接数据包也会默认通过 FORWARD 链。
来源:我在测试箱上运行 Xen,该测试箱通过 NAT、桥接和路由提供对不同域的访问,具体取决于域
答案2
看起来您的防火墙正在阻止该连接。
尝试关闭防火墙(暂时),然后再次尝试 ping 并查看它是否执行两次以上。