我在 xen 主机中创建了一个 vm。通过遵循本指南,我已经成功地 ping www.google.com,但在获得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(用于从外部访问服务器的外部)用作 vm 的默认网关。我不知道要提供什么其他信息。这可能是什么原因?
来宾的输出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/network/interfaces
# 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
我认为这里主要关注的是它在失败之前成功地乒乓球两次。
在提供对域的访问时,您要么是路由,要么是桥接。看起来您正在尝试同时执行这两项操作,并且由于您的防火墙规则,很可能会触发重定向并间接中断连接。
考虑以下情况:
你做桥接。数据包通过 iptables FORWARD 链运行,并直接从您的主机传送到客户机,无需实际路由。重要的是要知道 FORWARD 链在默认情况下甚至适用于桥接。通常,出于安全原因(欺骗等),提供商会要求您绑定特定的虚拟 MAC 地址以使其正常工作。
你做路由。数据包通过 iptables FORWARD 链运行,然后使用内核路由表路由到正确的目的地。通常这意味着您使用不同子网的地址或 /32 单地址,路由由提供商专门处理。
在这里,您需要同时做一些事情:
我不确定为什么这不能完全正常工作,考虑到 ICMP 重定向在几乎所有主要的 Linux 发行版上都被禁用,并且尽管不对称路由可能带来问题,但它应该可以工作。这可能是提供商的网关对 ARP 和 MAC 更改过于挑剔的问题......
无论哪种方式,由于您的 Dom0 和 DomU IP 地址都在同一个网络掩码中,因此您必须在您的情况下进行完全桥接。只需将 DomU 的网关地址更正为指向 .1,即提供商网关。不要忘记根据需要调整防火墙规则,因为默认情况下,即使是桥接的数据包也会通过 FORWARD 链。
资料来源:我在一个测试盒上运行 Xen,它通过 NAT'ing、桥接和路由提供对不同域的访问,具体取决于域
您的防火墙似乎阻止了连接。
尝试(暂时)关闭防火墙,然后再次尝试 ping,看看它是否超过两次。