libvirt/KVM 中带有两个 NIC 适配器的路由表

libvirt/KVM 中带有两个 NIC 适配器的路由表

我在我的 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/

相关内容