想让虚拟机上网有很多方式,本篇文章所介绍的方法是将真机作为路由器,虚拟机通过物理机去访问互联网。如果对路由器原理不太理解,可以参考《Linux基础_路由器原理》这篇博客。
node1主机是我的虚拟机,foundation60是我的物理机。在没有任何配置下,物理机访问百度会成功,但是让虚拟机去访问百度是不会成功的,如下图:
物理机ping百度的时候,220.181.57.216就是百度服务器的IP地址,当node1访问时没有成功。
要让物理机作为路由器,首先要配置其火墙策略,打开路由功能,命令如下:
[root@foundation60 Desktop]# systemctl start firewalld.service #打开火墙
[root@foundation60 Desktop]# firewall-cmd --add-masquerade #打开路由功能
Warning: ALREADY_ENABLED
要检测是否打开了路由功能,使用以下命令查看:
[root@foundation60 Desktop]# firewall-cmd --list-all
public (default, active)
interfaces: br0 enp2s0 wlp3s0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: yes #当该值为yes时为已经打开了路由功能
forward-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="172.25.254.10" masquerade
将虚拟机的网关配置为物理机,再次访问百度,就可以成功了:
此时,每次访问百度时都要输入百度服务器的IP地址,当输入域名时是无法成功的:
通过编辑/etc/hosts文件,作本地的DNS解析,将域名和IP地址对应起来:
[root@node1 ~]# vim /etc/hosts
220.181.57.216 baidu.com #添加的内容
再次通过域名访问百度时就可以成功:
除此之外,还可以通过编辑/etc/resolv.conf
文件达到解析的目的:
[root@foundation60 mnt]# vim /etc/resolv.conf
nameserver 114.114.114.114 #智能域名解析
添加完成之后就可以通过域名就可以访问百度了: