CentOS 7公共静态IP地址为KVM来宾

我在装有KVM和virt-manager的Centos 7上。 我有一个虚拟(客户)机器上的Debian 8.1。 guest虚拟机上的networking使用NAT(使用默认设置)configuration了virt-management。 所以现在我的虚拟机有Internet访问和本地IP 192.168.122.227。

在我的主机系统上,我有1个物理networking接口,1个主要的公共IP地址和3个额外的公共IP地址。

我的公共ips(例子):85.0.0.1,85.0.0.2,85.0.0.3,85.0.0.4

广播也是例子。

我的主机的ifconfig:

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 85.0.0.1 netmask 255.255.255.192 broadcast 85.0.0.127 ether d4:3d:7e:ec:b3:55 txqueuelen 1000 (Ethernet) RX packets 4920 bytes 416179 (406.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2298 bytes 392837 (383.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp2s0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 85.0.0.2 netmask 255.255.255.192 broadcast 85.0.0.127 ether d4:3d:7e:ec:b3:55 txqueuelen 1000 (Ethernet) enp2s0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 85.0.0.3 netmask 255.255.255.192 broadcast 85.0.0.127 ether d4:3d:7e:ec:b3:55 txqueuelen 1000 (Ethernet) enp2s0:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 85.0.0.4 netmask 255.255.255.192 broadcast 85.0.0.127 ether d4:3d:7e:ec:b3:55 txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 0 (Local Loopback) RX packets 30 bytes 2856 (2.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 30 bytes 2856 (2.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:cf:32:9d txqueuelen 0 (Ethernet) RX packets 18 bytes 1407 (1.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 779 (779.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether fe:54:00:96:2d:23 txqueuelen 500 (Ethernet) RX packets 18 bytes 1659 (1.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 574 bytes 30211 (29.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

当我在主机上执行这个操作时,我仍然继续通过ssh 85.0.0.2来访问主机,而不是访客:

 iptables -t nat -I PREROUTING -d 85.0.0.2 -i enp2s0:0 -j DNAT --to-destination 192.168.122.227 iptables -t nat -I POSTROUTING -s 192.168.122.227 -o enp2s0:0 -j SNAT --to-source 85.0.0.2 iptables -P FORWARD ACCEPT iptables -P FORWARD ACCEPT 

我的enp2s0:0configuration:

 # Generated by parse-kickstart UUID=9928e0a6-df18-45ef-a826-edaf8b4dc370 DNS2=85.0.0.10 #(example) DNS1=85.0.0.10 #(example) BOOTPROTO=none DEVICE=enp2s0:0 ONBOOT=yes IPV6INIT="no" TYPE=Ethernet IPADDR=85.0.0.2 PREFIX=26 GATEWAY=85.0.0.127 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME="System enp2s0:0" 

我不是愚蠢的重复问题,我已经读了很多,但仍然不能解决这个问题。 请帮忙!

您不应该有分配给主机的guest虚拟机的IP地址。 (而且你不应该使用接口别名,这些在别处被弃用了。)

相反, 创build一个桥梁 ,并添加enp2s0。 然后将您的KVM guest虚拟机分配到该桥,并在每个guest虚拟机中分配其IP地址。