我想分配一个外部IP地址给我的KVM客人,并采取了桥接networking的方式。 不幸的是,客人没有networking连接,我不知道为什么。 经过调查,似乎没有得到任何答复的ARP请求。
我有一个物理接口:eth0,桥接接口:br0和tap接口:tap0由kvm通过qemu-ifup脚本启动。 主机运行最新的Ubuntu服务器。 客机运行GKRML live-cd(基于slackware)。
可能是潜在的问题是主机和客机在不同的networking中。 不幸的是,两个IP地址都是由数据中心分配给我的,我不能改变它们。
configuration细节如下。 xx.xx
以下的主机和来宾都是一样的。
主机的/ etc / network / interfaces:
# Loopback device: auto lo iface lo inet loopback # Device: eth0 auto eth0 iface eth0 inet manual # Device: br0 auto br0 iface br0 inet static address xx.xx.110.69 netmask 255.255.255.224 network xx.xx.110.64 broadcast xx.xx.110.95 gateway xx.xx.110.65 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
主机的路由表:
Destination Gateway Genmask Flags Metric Ref Use Iface xx.xx.110.64 0.0.0.0 255.255.255.224 U 0 0 0 br0 0.0.0.0 xx.xx.110.65 0.0.0.0 UG 100 0 0 br0
主机的/ etc / qemu-ifup scirpt(未修改,随qemu包一起发货):
#!/bin/sh switch=$(/sbin/ip route list | awk '/^default / { print $5 }') /sbin/ifconfig $1 0.0.0.0 up /usr/sbin/brctl addif ${switch} $1
客人正在运行时的brctl show
输出:
bridge name bridge id STP enabled interfaces br0 8000.4061862b90d5 no eth0 tap0
KVM命令行:
kvm -cdrom grml_2009.10.iso -boot d -m 256 -vnc localhost:0 -net nic,macaddr=DE:AD:BE:EF:11:14 -net tap,script=/etc/qemu-ifup
访客机器networking设置(单个eth0接口):
$ ifconfig eth0 xx.xx.129.69/28 up $ route add default gw xx.xx.129.65
tcpdump -i tap0
结果尝试从客户端ping任何东西:
tcpdump: WARNING: tap0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tap0, link-type EN10MB (Ethernet), capture size 96 bytes 23:38:13.659655 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28 23:38:14.659687 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28 23:38:15.659655 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28 23:38:16.666350 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28 23:38:17.666319 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28 23:38:18.666324 ARP, Request who-has xx.xx.129.65 tell xx.xx.129.69, length 28
…等没有答复。
提前感谢任何帮助!
iptables -F向前
iptables -I FORWARD -m physdev –physdev-is-bridged -j ACCEPT
iptables-save> / etc / sysconfig / iptables
net.ipv4.ip_forward = 1
你的客人在一个networking中,主人在另一个networking中。 stream量通过tap设备并连接到eth0,是否应该能够到达xx.xx.129.69 / 28networking? 典型的工作设置是将网桥IP和虚拟机连接到同一个networking中,如果你希望主机不能看到那个networking,就把这个网桥留在没有IP的networking中。 您可以通过检查桥本身上的tcpdump,以及可能的基础eth0来跟踪stream程