网络的理解
hostnamectl:查询系统的主机名以及其他的相关配置
- 在虚拟机中以
图形化方式设置以太网
nm-connection-editor
选择以太网
设置虚拟机的ip、子网掩码以及真机的ip
- 然后ping自己的真机看是否可以成功,如果失败,则返回上面步骤,重新添加测试
在我们了解网络之前,需要搞清楚两个问题:
1. 什么是网关以及什么是路由器?
从图中可以看出二者含义,了解了网卡以及路由器的含义后,那么我们接下来了解一下在linux中如何让虚拟机可以连接网络
:
大体思路可以了解一下,虚拟机相当于上图的电脑,路由器就是我们的主机,这样我们就可以通过主机去实现网络连接
1)首先我们应该在真机中进行操作,而不是在虚拟机中操作,因为这里的步骤是为了实现将真机转换成路由器
2) 进入超级用户,执行以下指令:
关闭虚拟机的libvirtd服务:
因为防火墙与虚拟机服务有冲突
systemctl stop libvirtd.service
启动防火墙
systemctl restart firewalld
重启虚拟机libvirtd
systemctl start libvirtd.service
开启真机的路由器功能
firewall-cmd --add-masquerade
显示真机的路由器列表,查看是否配置成功:
firewall-cmd --list-all
点击后会出现以下内容:
提示:当我们看到上述内容时,masquerade:yes
,yes表示的我们将真机的路由器功能配置成功,但是如果是no的话,就是没有配置成功,继续上面的步骤继续
**这里的masquerde:地址伪装功能,也就是我们之前说的NAT**
3)让虚拟机可以去访问一些网站
a.先获取自己的主机ip:ip addr show br0
b.在虚拟机的shell界面中执行vim /etc/sysconfig/network
,进入写入GATEWAY=自己的主机ip,然后wq退出
c.执行systemctl restart network
,然后route -n是否添加成功,从第一行可以看出我们是否添加成功
d.添加成功后,我们在主机中的shell中执行ping www.baidu.com
,我们会看到一个百度的ip地址,然后在虚拟机中继续ping 这个ip地址
e.如果ping成功的话,就可以打开浏览器在网址栏中输入IP地址去访问百度的网站
总结:上面的操作是将真机作为路由器,而虚拟机将真机的本地ip作为网关,然后通过访问真机的ip通过真机去访问网络。
4)当我们能安装了新的虚拟机后要想像上述操作一样实现上网功能需要配置ip和DNS服务器才可以:
a.启动虚拟机管理器,打开我们刚才新安装的虚拟机
virt-manager
b.为了防止ifcfg-ens3中有其他的文件我,我们先cd进入/etc/sysconfig/network-scripts/
该目录,然后删除ifcfg-ens3
这个目录
c.然后vim ifcfg-ens3
,这里的vim 时,将不存在的目录会自动创建的
d.然后我们接下来输入以下代码:
DEVICE=网卡名 //设备名称,这个网卡必须是`ifconfig`中查看到的一个事实存在的网卡
ONBOOT=yes //网络服务启动是否启动网卡配置
BOOTPROTO=none //网卡工作方式:获取ip的方式,none为静态手动指定,dhcp为自动设置
IPADDR0=172.25.7.107 //虚拟机的ip地址
PREFIX0=24 //子网掩码也可以写为NETNASK0=255.255.255.0
GATEWAY0=172.25.254.7 //设置网关,设为真机的本地ip(在真机中用ip addr show br0可以查看)
DNS1=114.114.114.114 //设置DNS服务器,最多设置两个
wq退出
什么是DNS?
DNS全名是Domain Name System,翻译成中文就是域名系统,它主要的作用就是将人们容易记忆的域名和不方便记忆的ip地址做转换,比如,当我们访问百度的时候,我们知道www.baidu.com就可以直接访问,但是却不知道它的ip地址,DNS就是将我们不容易记忆的ip地址转换成域名的方式
e.重启network:systemctl restart network
f.就可以通过域名的方式去访问网站了
中途可能出现的问题总结:
问题1:
当你的虚拟机ping不上你的网络时,如果前面的步骤都没有问题,依旧ping失败的话,有可能是你的路由器网卡的问题,需要去更换网卡:
先删除网卡:
再点击左下角的Add Hardware添加新网卡:
最后点击由下角的finish就可以了
问题2:
查看内核是否开启路由功能:
sysctl -a|grep ip_forward
如果显示的内容是:
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
net.ipv4.ip_forward
为0表示没有开启,需要我们进行以下步骤:
步骤1:vim /etc/sysctl.conf
进入后在文件的末尾net.ipv4.ip_forward = 1
步骤2:再执行sysctl -p
然后执行sysctl -a|grep ip_forward
出现以下内容为成功开启内核功能: