虚拟机连接网络的操作步骤
虚拟机本身是不能连接网络的,我们为了让虚拟机连接网络,可以将真机连接网络并将其设定为一个路由器,然后给虚拟机增加网关设置从而达到虚拟机可以访问外网的效果。
操作如下:
(1). 在真机上的操作:
切换到root用户上,通过下面的命令查看内核路由功能是否开启
sysctl -a | grep ip_forward
可以看到net.ipv4.ip_forward的值为1,表示内核路由功能是开启状态。
接下来查看防火墙的状态,防火墙正在运行中:
然后通过下面命令列出防火墙的信息,查看防火墙的地址伪装的功能是否打开:
firewall-cmd --list-all
masquerade那一项为no,表示未开启。
通过以下命令打开防火墙的地址伪装功能:
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload
地址伪装功能开启并加载成功:
(2). 在desktop虚拟机上操作:
在eth0网卡的网络配置文件中加入网关,网关IP为真机的IP,如下:
增加DATEWAY网关:
然后wq保存退出,再重启网络:
用 route -n 命令查看网关信息,可以看到网关已经成功添加:
(3). 测试:
首先在真机上ping百度网址,可以看到百度的ip地址:
百度的ip地址为:14.215.177.38
接下来在desktop虚拟机上ping此ip地址,看连接是否通畅:
可以看到虚拟机已经可以成功连接百度的ip地址了,说明以及可以成功连接网络了。
我们发现输入ww.baudu.com依旧连接不上,而输入百度ip却能连接上,为解决此问题,用到了下面的DNS域名解析
DNS域名解析
在介绍具体的DNS设定之前需要先认识三个配置文件:
- /etc/hosts 本地解析文件,这个是最早的hostname对应的ip的存档
- /etc/resolv.conf 当需要解析域名时,读取该文件获得DNS服务器ip
- /etc/nsswitch.conf 这个文件内容决定先使用/etc/hosts还是/etc/resolv.conf的设定
电脑要访问一个域名时,要将域名翻译成ip地址。这个过程通常会先访问/etc/hosts,看本地是否有对应的 hostname – ip 的记录。如果没有就会去查询DNS服务器,通过/etc/resolv.conf 得到DNS服务器地址。但是如果在/etc/nsswitch.conf 文件中修改顺序的话,以上的访问顺序就会发生变化。
(1). 本地解析
vim /etc/hosts
我们在desktop虚拟机中的/etc/hosts 文件中写入www.baidu.com和其对应的ip地址:
增加一条如下内容:
然后ping 百度的域名,可以发现网络通畅:
(2). DNS服务器
该服务器专门用来做服务解析的,不是服务器自己解析,而是提供一个能够解析主机的地址。
vim /etc/resolv.conf
在文件中增加以下内容:
以上几个都是DNS域名解析服务器的地址,通过它们就可以对域名进行解析,从而连接网络。
下面尝试连接淘宝的域名,网络通畅:
下面再尝试连接QQ网站的域名,网络通畅:
(3). DNS优先级的设定
/etc/nsswitch.conf文件中的内容可以决定DNS的优先级,一般默认是会先访问本地的解析文件/etc/hosts ,然后才会去访问 /etc/resolv.conf 文件。
在该文件的 39 行处可以进行设定,如下:
内容如下:
可以看到默认顺序是 " files dns "代表先访问本地解析文件。
下面我们改变 /etc/hosts 文件中百度域名对应的ip地址为其它ip地址,如下:
然后尝试再次ping 百度的域名:
可以看到实际上是去访问的 172.25.254.80 这个ip地址,并没有真正去访问百度的ip。
下面我们修改/etc/nsswitch.conf 文件中的优先级,如下:
然后再去ping百度的域名:
可以看到又先访问了百度的ip地址。
(4). 固定DNS指向
当在 eth 的接口启用DHCP(动态网络)后,本地的resolv.conf 文件将会被修改,resolv.conf 文件中的DNS地址将被改为从DHCP获取到的地址。
将 eth0的网络配置文件中增加一条DNS,DNS后面需要加数字(1、2、3),如下:
然后重启网络,查看/etc/resolv.conf 文件中的变化:
可以看到文件中的内容随着eth0网络配置文件的改变而发生了变化。
再把刚才添加的DNS1那一行内容删掉:
再次重启网络,并查看/etc/resolv.conf 文件中的变化:
可以看到刚才的 114.114.114.114 已经不在文件中了。
当在 eth 的接口启用DHCP(动态网络)后,resolv.conf 文件中的DNS地址将被会改为从DHCP获取到的地址。这时我们需要固定DNS的指向,那么要怎么固定DNS的指向呢,只需要在eth 接口的网络配置文件中将 PEERDNS 这一项改为 no 即可固定DNS指向。
PEERDNS 表示网络配置文件的DNS是否会修改/etc/resolv.conf ,no表示不会。
下面我们修改/etc/resolv.conf 文件的内容如下:
然后修改eth0的网络配置文件中的内容如下:
主要是修改了这一项:
然后重启网络,再查看/etc/resolv.conf 文件中的内容是否发生变化:
可以看到文件中的内容没有发生变化,成功固定了DNS指向。