欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-19 10:36:30
问题背景:宿主机安装了kvm,创建了一个客户机vm1【也叫kvm虚拟机:后边统一叫客户机】,客户机使用的是nat模式,但是创建的时候手动固定了ip和网关,完事之后又使用这个客户机vm1为模板创建了一个客户机vm2vm1 IP:192.168.122.231问题1:客户机vm1和vm2都无法ping同百度问题分析:客户机无法和宿主机通信。由于vm1的ip是固定的,所以以vm1为模板创建的vm2现在和vm1两个客户机的ip有冲突解决方法:关闭vm1客户机,在宿主机中ssh连接vm2,修改网卡配置文件#...

问题背景:宿主机安装了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