我使用公共静态IP设置了kvm vm,并且一切正常,但是只有在主机上重新启动networking之后。 我的意思是,每次主机打开后,我必须运行“服务networking重启”,并且只有在KVM虚拟机获得IP后。 没有重新启动,IP属于主机。
主机 – centos 7,guest – Ubuntu 12.04
请教,如何让ip只属于虚拟机,不用networking重启? 谢谢!
我在主机上的设置:
在/ etc / sysconfig / network中的脚本/的ifcfg-enp1s0f1:
DEVICE="enp1s0f1" ONBOOT=yes HWADDR="xx:xx:xx:xx:xx:xx" BRIDGE=br0
在/ etc / sysconfig / network中的脚本/的ifcfg-br0的:
DEVICE="br0" TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR="host.ip.adress" NETMASK="255.255.252.0" GATEWAY="host.gateway" DNS1=11.11.11.11 DNS2=11.11.11.11
的/ etc / SYSCONFIG /networking的脚本/的ifcfg-BR0:1
DEVICE="br0:1" TYPE=BRIDGE ONBOOT=yes BOOTPROTO=static IPADDR="ip.for.kvm.vm" NETMASK="255.255.252.0" GATEWAY="host.gateway" DNS1=11.11.11.11 DNS2=11.11.11.11
vm桥接部分
<interface type='bridge'> <mac address='yy.yy.yy.yy.yy.yy'/> <source bridge='br0:1'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </interface>
我的'一个'
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp1s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 3: enp1s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP qlen 1000 link/ether xx:xx:xx:xx:xx:75 brd ff:ff:ff:ff:ff:ff 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether zz:zz:zz:zz:zz:zz brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000 link/ether 52...4:98 brd ff:ff:ff:ff:ff:ff 6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000 link/ether xx:xx:xx:xx:xx:75 brd ff:ff:ff:ff:ff:ff inet host.ip.adress/22 brd ...3.255 scope global br0 valid_lft forever preferred_lft forever inet ip.for.kvm.vm/22 brd ...3.255 scope global secondary br0:1 valid_lft forever preferred_lft forever inet6 fe8...5/64 scope link valid_lft forever preferred_lft forever 7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000 link/ether fe:5...1:6a brd ff:ff:ff:ff:ff:ff inet6 fe80...:516a/64 scope link valid_lft forever preferred_lft forever
客人的我的设置:
auto eth0 iface eth0 inet static address ip.for.kvm.vm netmask 255.255.255.0 gateway host.gateway broadcast hwaddress ether 52:54:00:2f:21:8b dns-nameservers 11.11.11.11 8.8.8.8 11.11.11.11
ip route show(在主机上)
default via host.gateway dev br0 proto static metric 425 89.108.120.0/22 dev br0 proto kernel scope link src host.ip.adress metric 425 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
路由-n(在主机上)
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 host.gateway 0.0.0.0 UG 425 0 0 br0 89.108.120.0 0.0.0.0 255.255.252.0 U 425 0 0 br0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
你已经混淆了你的主机和来宾的地址,所以我将不得不使用你提供的其他数据来断言,以及猜测“ip.for.kvm.vm”在所有的例子中是一致的。 请让我知道,如果这是不正确的。
你所描述的看起来像你给你的虚拟机给你的pipe理程序相同的地址,并且都争夺这些地址。 pipe理程序将总是在重新启动时获胜,因为其networking堆栈首先启动。
不要这样做。 你正在创build一个IP地址冲突。 相反,如果您需要主机与您的客户机位于同一IP子网中,请在同一子网中为这两个地址分配不同的地址。 还意识到你的桥接设备是一个虚拟的第2层交换机,所以它不会在乎你在它上面的任何层。 唯一的迹象是,在未经审计的情况下,您会发现上述情况出现问题,除了日志中有关地址冲突的错误之外,您已经在上面描述了这一点。
要解决这个特定的情况,可以删除或者设置不同的pipe理程序上br0.1的地址。 由于briges工作在第二层,所以在这个接口上根本没有IP地址,虚拟机将正常的连接。 只是不要做任何冲突。