当前位置: 移动技术网 > IT编程>开发语言>Java > kvm虚拟机nat模式下上不了网

kvm虚拟机nat模式下上不了网

2020年07月15日  | 移动技术网IT编程  | 我要评论

问题背景:宿主机安装了kvm,创建了一个客户机vm1【也叫kvm虚拟机:后边统一叫客户机】,客户机使用的是nat模式,但是创建的时候手动固定了ip和网关,完事之后又使用这个客户机vm1为模板创建了一个客户机vm2

vm1 IP:192.168.122.231
问题1:客户机vm1和vm2都无法ping同百度
问题分析:宿主机未开启路由转发,客户机无法和宿主机通信。由于vm1的ip是固定的,所以以vm1为模板创建的vm2现在和vm1两个客户机的ip有冲突
解决方法:宿主机开启路由转发,关闭vm1客户机,在宿主机中ssh连接vm2,修改网卡配置文件

#1、宿主机开启路由转发
[root@kvm ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
[root@kvm ~]# sysctl -p
net.ipv4.ip_forward = 1

#修改客户机网卡配置文件
[root@kvm ~]# virsh shutdown vm1
域 vm1 被关闭
[root@kvm ~]# virsh start vm2
域 vm2 已开始
[root@kvm ~]# ssh 192.168.122.231
root@192.168.122.231's password: 
Last login: Tue Jul 14 12:00:41 2020 from 192.168.122.1

[root@vm2 ~]# sed -ri.bak 's/IPADDR=192.168.122.231/IPADDR=192.168.122.233/' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@vm2 ~]# systemctl restart network
[root@vm2 ~]# ping www.baidu.com
[root@vm2 ~]# 192.168.122.2

问题2:但是此时依旧无法ping不通百度,甚至不能ping通网关
问题分析:
最后才发现,是在客户机设置网关的时候出现问题
客户机vm1和vm2设置网关为192.168.122.2,然而在宿主机上当我们创建了nat模式的客户机时,宿主机会自动添加一个virbr0网卡,并且默认会提供了一个192.168.122.1的网关,,也就是宿主机和客户机是通过网卡virbr0的提供的网关192.168.122.1通信。但是我们手动给客户机设置的网关是.2的网关,所以客户机无法和宿主机通信,同时也就无法和外网通信。
尝试过程如下:

#查看宿主机提供的网关,并修改客户机的网卡配置文件
[root@kvm ~]# ip a
......
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:e0:32:0b 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
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:e0:32:0b brd ff:ff:ff:ff:ff:ff
......
#这下就明白了,宿主机和客户机通过网卡virbr0通信,网关是192.168.122.1,而我们手动给客户机固定的网关是192.168.122.2,去修改一下试试

[root@kvm ~]# ssh 192.168.122.233
root@192.168.122.233's password: 
Last login: Tue Jul 14 12:10:41 2020 from 192.168.122.1

[root@vm2 ~]# sed -ri 's/GATEWAY=192.168.122.2/GATEWAY=192.168.122.1/' /etc/sysconfig/network-scripts/ifcfg-eth0

[root@vm2 ~]# systemctl restart network
[root@vm2 ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=127 time=7.31 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=127 time=8.19 ms

OK啦,现在客户机已经可以和外网通信了,主要问题就是这是客户机网关的时候注意使用宿主机提供的,不要自己随便设置 ^=^

本文地址:https://blog.csdn.net/qq_41461323/article/details/107334999

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网