linux中虚拟机的网络及DNS配置

本文详细介绍了如何在Linux虚拟机中配置网络,包括设置内网IP,开启路由器地址伪装,解决内核路由问题,以及DNS配置。通过编辑网络配置文件,启用地址伪装和内核路由功能,实现虚拟机间以及与外部网络的互通。同时,讲解了DNS的本地解析文件和DNS服务器配置,以及如何设定DNS优先级和静态DNS。最后,展示了使用命令行修改网络配置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.虚拟机网络配置

1.命题:
  首先server 为路由器,desktop为客户端,desktop(1.1.1.150)想通过联网的真机上网
  设置server为路由器,两端IP分明别为:172.25.150.50 & 1.1.1.50,server可以通过真机连接互联网;
  desktop为内网的主机,内网IP为1.1.1.150;
  desktop此时想通过server连接到外网
2.方法:
###1.设置desktop的IP为1.1.1.150:
在这里插入图片描述
###2.设置server的IP,由于server是路由器,因此需要在路由器上开启地址伪装功能:
在这里插入图片描述
在这里插入图片描述
  注意:经过上两步设置,此时两台虚拟机可以互相ping通,但若是server可以ping通真机,但desktop不能ping通,说明内核的路由功能没有开启,在srver上执行以下命令:

设置内核:
         sysctl -a | grep ip_forward    ##查看内核的路由功能:若结果为0表示未开启,改为1表示开启
         vim /etc/sysctl.conf           ##在此文件中进行添加
   添加: net.ipv4.ip_forward=1
				
	      sysctl -p	    ##使配置生效

  我们可以看到当前desktop不能ping通真机
在这里插入图片描述
  使用sysctl -a | grep ip_forward命令查看当前内核路由状态:
在这里插入图片描述
可以看到当前内核的路由关闭,此时需要打开内核路由:
在这里插入图片描述
再执行 sysctl -p使更改生效:
在这里插入图片描述
进过设置后,desktop就可以ping通真机:
在这里插入图片描述
###3.使真机连上WIFI,我们可以看到真机能ping通百度的域名,但两台虚拟机均不能pin通,此时设置真机为路由器,将server的网关设置为真机ip,同时在真机上开启防火墙中的地址伪装功能与内核路由功能:
"注意":以上操作均要在真机中的root用户权限下做
首先我们可以看真机可以ping通百度的域名:
在这里插入图片描述
但server和desktop则不能ping通此IP,这是因为此时对于server和desktop来说,他们是内网的主机,server作为路由只能使desktop主机ping通172.25.150网段的主机,但对于server本身而言,他也不知道去外网的“路”,因此,我们还需要将真机设置为路由器,将server的网关设置为真机ip,同时在真机上开启防火墙中的地址伪装功能与内核路由功能:
  我们可以看到server和desktop则不能ping通百度的IP
在这里插入图片描述
在这里插入图片描述
  将server的网关设置为真机的ip地址(具体方法在Linux中的网络配置中有详细介绍),并且在真机中开启防火墙的地址伪装功能:
在这里插入图片描述
  此处要注意,若在真机中进行防火墙配置时出现错误,可以使用以下解决方法:

systemctl stop libvirtd.service     ##关闭与虚拟机的连接
systemctl restart firewalld.service ##重启防火墙
firewall-cmd --list-all             ##查看地址伪装是否开启
firewall-cmd --add-masquerade       ##添加地址伪装
   success                          ##成功添加	
virt-manager                        ##虚拟机管理
systemctl start libvirtd.service    ##开启与虚拟机连接

配置完成后,我们可以看到,server与desktop此时均可以ping通百度的ip:
在这里插入图片描述
在这里插入图片描述

2.DNS配置

我们注意到,当真机ping百度时,可以直接ping百度的域名www.baidu.com,但是在使用虚拟机ping百度时,就必须使用IP地址,使用域名会出现如下错误:
在这里插入图片描述
这是因为在虚拟机中没有DNS(Domin Name System)即域名解析,DNS将域名映射为一个IP地址,方便人们记忆有意义的域名,而不是较为难记的IP地址,那么,如何进行DNS配置呢?

1.设定DNS:
###方法1.更改本地解析文件:

 vim   /etc/hosts  ##本地DNS解析文件,此文件指定一个域名与地址的静态映射

 编辑此文件,添加域名与IP的一对一映射:
在这里插入图片描述
保存后,再ping百度的域名,我们可以看到此时就可以ping通,并且实际ping的IP地址为我们在文件中写的ip:
在这里插入图片描述 注意:更改本地文件使得我们ping域名时实质上ping的是我们指定的ip,若我们指定一个错误的IP,那么就很有可能ping不通,如下,将www.baidu.com对应的IP改为72.25.150.250(真机ip):
在这里插入图片描述
此时ping百度的域名,我们可以看到实际上在ping真机的ip:
在这里插入图片描述
因此更改本地文件时注意应该添加正确的映射关系

###方法2.更改DNS指向文件

vim   /etc/resolv.conf      ##DNS指向文件,
nameserver 114.114.114.114  ##陕西省DNS解析服务器

首先,删除上面在本地文件中的添加的内容,在文件/etc/resolv.conf 中添加DNS服务器的ip:
在这里插入图片描述
此时我们可以看到,ping百度的域名时,ping的ip为61.135.169.125而不是61.135.169.121
在这里插入图片描述
2.设定DNS解析的优先级
默认本地优先级高,即在使用ping时先查询的是/etc/hosts中的映射关系,可以改变优先级:

vim  /etc/nsswitch.conf            ##DNS优先级设定文件,在此文件中更改优先级
 39行: files->本地解析文件 DNS->网络解析文件    ##哪个在前面哪个优先

默认files 在 dns之前,我们将dns放在files之前:
在这里插入图片描述
再更改DNS指向文件/etc/resolv.conf,将里面内容全部清空,只添加:

nameserver 114.114.114.114

再ping百度的域名,可以看到此域名与之前域名都不相同:
在这里插入图片描述
3.静态DNS配置:
在/etc/resolv.conf文件中指定的DNS是临时的,将网卡的设备文件中的BOOTPROTO改为dhcp后,经过systemctl restart network后会将/etc/resolv.conf文件文件中的内容全部注释;
在这里插入图片描述
将ip获取方式改为dhcp后 ;我们可以看到此时desktop获取到的ip为1.1.1.151:
在这里插入图片描述
此时,查看/etc/resolv.conf文件,我们会发现此文件中会自动添加一些项目,并且原文件中的内容也会被覆盖,这是因为在dhcp方式下,网卡设备文件中的参数PEERDNS默认为yes:
在这里插入图片描述
那么,如何让自己设定的DNS始终存在于/etc/resolv.conf文件中:

vim  /etc/sysconfig/network-scripts/ifcfg-et0(网卡的配置文件)
添加:DNS1=xxx.xxxx.xxx.xxx
     DNS2=xxx.xxxx.xxx.xxx

“注意”:此种方式添加最多只能添加2个,且手动添加的DNS在自动获取的DNS下方
在这里插入图片描述
此时,再重启网络后,/etc/resolv.conf文件中自己指定的DNS就不会消失:
在这里插入图片描述
4.自动获取DNS
在上面我们就可以看到,将IP的获取方式改为DHCP后,/etc/resolv.conf文件中DNS的指向就会自动被修改,因此若想自动获取DNS,则将ip获取方式改为dhcp即可:

   vim /etc/sysconfig/network-scripts/ifcfg-et0(网卡的配置文件)
    	BOOTPROTO=dhcp

5.如何让自己设定DNS不受dhcp的控制:

vim /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=yes	##是否指定DNS,当主机设置获取IP为DHCP方式时,此项参数默认为yes,它会自动修改/etc/resolv.conf文件
	        ##当参数设置为no,在dhcp方式下,系统不会修改/etc/resolv.conf文件

首先,vim /etc/sysconfig/network-scripts/ifcfg-eth0将原来的DNS1删除,再添加PEERDNS=no:
在这里插入图片描述
重启网络,此时我们可以看到/etc/resolv.conf文件内容被重置:
在这里插入图片描述
再vim /etc/sysconfig/network-scripts/ifcfg-eth0 添加DNS1:
在这里插入图片描述
此时再重启网络,我们可以看到,在dhcp服务仍开启的情况下文件内容仍不会被更改:
在这里插入图片描述
此时在ping百度仍可以ping通:
在这里插入图片描述

3.命令的方式修改网络

nmcli    ##此命令的实现依赖于NetworkManager.service,若此服务关闭,则此命令失效

如图,停止NetworkManager.service,则nmcli命令就不能使用:
在这里插入图片描述

nmcil device
		status			    ##显示设备状态
		disconnect 设备名	##断开与此设备(物理网卡)连接,断开后,ifconfig此网卡无IP
		connect 设备名		##连接此设备
		show 设备名		    ##显示此设备的祥细信息

在这里插入图片描述

nmcil device disconnect 设备名	##断开与此设备(物理网卡)连接,断开后,ifconfig此网卡无IP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

nmcil connection
		show		            ##显示当前所有连接(逻辑IP与物理网卡)
		delet "NAME(连接名称)"	##删除此连接(disconnect)
		add 					##添加连接
			type(连接类型):ethernet(以太网)
			con-name(连接名称):用户指定
			ifname(interface name 设备名,以实际网卡为准):eth0/1
			autoconnect(自动获取ip):yes/no
			
若手动指定ipv4:ip4 172.25.254.139/24		
"注意":当前若已经设置好设备,则应把以前的设备好的设备删除再添加,一块网卡只对一个连接生效

		up 连接名称:开启此块网卡
		down 连接名称:关闭此块网卡
		modify
			连接名称 ipv4.method auto(将静态ip改为动态获取)

在这里插入图片描述
在这里插入图片描述
“注意”:若连接名称之间有空格,例如System eth0,要用‘’
  在删除后,打开图形界面,也看不到此连接:
在这里插入图片描述
使用add ,我们需要指定所要添加的网络的一些参数:

con-name    网络名
ifname   设备名
type  网络类型
若为静态IP,还需指定ipv4的地址

在这里插入图片描述
使用ifconfig。我们就可以看到对eth0的配置生效:
在这里插入图片描述
down 设备名用来关闭指定的网卡设备:
在这里插入图片描述
up 设备名用来开启指定的网卡设备:
在这里插入图片描述
将静态的IP改为dhcp自动获取,可用modify参数:
在这里插入图片描述
重启网络后生效:
在这里插入图片描述
同时,也可使用modify将dhcp方式改为静态ip获取:
1)指定IP地址:网络名称 ipv4.addresses 172.25.254.139/24
2) modify 网络名称 ipv4.method manual
在这里插入图片描述
“注意”:使用down & up可以只关闭或开启指定网卡,而不影响其他网卡的工作,而restart network则会重启整个网络设置

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值