我在我的 libvirt 和新客户机中创建了一个虚拟 NAT 网络(192.168.100.0/24 网络),它有两个接口 - 一个在这个网络中,一个作为桥接(10.34.1.0/24 网络)到本地 LAN。原因如下我需要有自己的虚拟网络用于 DHCP/TFTP/DNS 测试并且仍然想从外部访问我的访客来自我的 LAN。在两个网络上我都有可用的 DHCP,都为它们提供了 IP 地址。
当我设置 NAT 端口转发(例如 ssh)时,我可以连接到 eth0(虚拟网络),一切正常。
但是当我尝试通过桥接接口访问 eth1 时,没有响应。我猜我的路由表有问题 - 传出的数据包被路由到虚拟 NAT 网络(它可以访问我连接的机器 - 我可以 ping 它)。但我不确定这个设置是否正确。我想我需要在我的路由表中添加一些内容。
# ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:00:B4:A7:5F
inet addr:192.168.100.14 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:feb4:a75f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16468 errors:0 dropped:27 overruns:0 frame:0
TX packets:6081 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22066140 (21.0 MiB) TX bytes:483249 (471.9 KiB)
Interrupt:11 Base address:0x2000
eth1 Link encap:Ethernet HWaddr 52:54:00:DE:16:21
inet addr:10.34.1.111 Bcast:10.34.1.255 Mask:255.255.255.0
inet6 addr: fe80::5054:ff:fede:1621/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:189 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4911 (4.7 KiB) TX bytes:9
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.34.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.100.1 0.0.0.0 UG 0 0 0 eth0
我尝试连接的网络与虚拟机管理程序连接到的网络不同:10.36.0.0。但可以从该网络访问。因此我尝试添加新的路由规则:
route add -net 10.36.0.0 netmask 255.255.0.0 dev eth1
但它不起作用。我以为设置正确的接口就足够了。需要做什么才能让我的数据包通过?
答案1
所以问题确实出在 NAT 上。我将默认路由改为第二个(桥接)接口,这样就成功了。顺便说一句,如果你真的需要两个默认路由,这是可能的:
http://kindlund.wordpress.com/2007/11/19/configuring-multiple-default-routes-in-linux/