我有一台机器设置运行KVM和eth0上的网桥与机器的IP地址。 该机器有一个IP地址范围内没有更多的IP地址免费。 我正在尝试使第二个子网可用于KVM来宾使用他们的IP地址。
network -- eth0 --- bridge0 --| (xxx75/26) |-- guest0:eth0 (xxy213/28) | |-- guest1:eth0 (xxy214/28)
我通过在主机上创build了一个ifcfg-bridge0文件来创build了这个桥梁,而且它似乎一直在工作,但是我无法从外部世界发起连接到客户端。 奇怪的是,客人有互联网接入,显然返回数据包到达他们要去的地方,但新的连接不能build立。 例如,如果我使用VNC连接到某个guest虚拟机,则可以执行wget http://google.com/然后获得该页面。
在主机和客户机上,iptables已经被刷新,所以没有iptables规则。 在主机上,路由命令的输出是
host# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xxx64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0 0.0.0.0 xxx94 0.0.0.0 UG 0 0 0 bridge0
为了试图让路由工作,我尝试添加一个静态路由到新的子网上的brdge命令,如route add --net xxy208 netmask 255.255.255.240 bridge0 。 添加路由后,我的主机上的路由表看起来像
host# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xxy208 0.0.0.0 255.255.255.240 U 0 0 0 bridge0 xxx64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0 0.0.0.0 xxx94 0.0.0.0 UG 0 0 0 bridge0
但是,主机仍然无法访问该来宾。 如果我跟踪客人,我没有看到连接出去,我只是看到
host# traceroute xxy213 traceroute to xxy213, 30 hops max, 60 byte packets 1 xxy213 0.639 ms 0.771 ms 0.784 ms
但是当我尝试连接到本机(例如telnet xxy213 22 )时,我没有连接(如果我运行telnet xxy213 22或telnet xxx75 22 ,则得到结果)。
如果两个子网(/ 28和/ 26)都连接到相同的接口,则需要在上游networking的两个networking(即整个networking的路由器上的辅助地址)中使用地址。
考虑桥上的虚拟主机,就好像它们连接到与主机的NIC相同的交换机。 主机(即bridge0)在不同的IP子网中的事实意味着在这两者之间需要有某种网关。
有两个选项 – 将所有主机重新编号到同一个networking,或在两者之间提供某种路由接口。