1.在真机上(使真机作为第二层路由器,虚拟机通过真机做地址转换从而可以上网)
[root@foundation78 ~]# ping www.baidu.com # 保证真机可以上网,ping通就代表可以上网
[root@foundation78 ~]# systemctl start firewalld # 因为libvirt服务开启影响了火墙的开启
^C
[root@foundation78 ~]# systemctl stop libvirtd.service
[root@foundation78 ~]# systemctl start firewalld
[root@foundation78 ~]# systemctl start libvirtd.service
# 查看路由功能是否开启
[root@foundation78 ~]# firewall-cmd --list-all # 查看到防火墙masquerade 策略关闭,即路由功能没开启
[root@foundation78 ~]# firewall-cmd --add-masquerade # 打开路由功能
success
[root@foundation78 ~]# firewall-cmd --list-all
[root@foundation78 ~]# sysctl -a | grep ip_forward # 内核路由必须打开,1表示打开
net.ipv4.ip_forward = 1
注:
作为路由器
(1)内核路由功能必须打开
(2)防火墙策略必须打开
2.配置第一层路由器
[root@desktop ~]# cd /etc/sysconfig/network-scripts/
[root@desktop network-scripts]# vim ifcfg-eth0
1 DEVICE=eth0
2 ONBOOT=yes
3 BOOTPROTO=none
4 IPADDR0=172.25.254.142
5 PREFIX0=24
6 NAME=eth0
7 GATEWAY0=172.25.254.78 # 添加真机ip作为网关
[root@desktop network-scripts]# systemctl restart network
[root@desktop network-scripts]# route -n
[root@desktop network-scripts]# ping 183.232.231.173 # ping 不通,可能是因为内核路由功能没开启
[root@desktop network-scripts]# sysctl -a | grep ip_forward # 查看,果然是没开启,0代表没开启
net.ipv4.ip_forward = 0
[root@desktop network-scripts]# vim /etc/sysctl.conf # 打开内核路由功能
net.ipv4.ip_forward = 1
[root@desktop network-scripts]# sysctl -p # 查看是否更改成功
net.ipv4.ip_forward = 1
# 因为没有DNS服务器来做域名解析,此时我们只能用过访问百度的IP来上网
[root@desktop network-scripts]# ping 183.232.231.173 # 此时就可以ping 通了,即保证路由器可以上网,183.232.231.173是百度的域名解析地址
[root@desktop network-scripts]# firewall-cmd --add-masquerade # 打开路由功能,帮助客户端上网
success
[root@desktop network-scripts]# firewall-cmd --list-all
3.配置客户端
[root@server Desktop]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# vim ifcfg-eth0
1 DEVICE=eth0
2 BOOTPROTO=none
3 ONBOOT=yes
4 IPADDR0=192.168.0.242
5 NETMASK=255.255.255.0
6 GATEWAY0=192.168.0.142
[root@server network-scripts]# systemctl restart network
[root@server network-scripts# route -n # 添加网关,保证可以和不同网段的主机通信
[root@server network-scripts]# ping 183.232.231.188 # 可以ping通baidu,成功上网
[root@server network-scripts]# traceroute 183.232.231.173 # 追踪路由,第一个是通过第一层路由通信到第二层路由,再通过第二层路由访问百度
# 在虚拟机上测试上网,成功打开网址,说明可以上网
4.排错:
(1)如果网络配置都ok的话,但是ping不通路由器,一定是物理网卡坏了,删除网卡,重新添加网卡
(2)查看路由器的内核路由功能是否打开,确保全部打开
(3)查看路由器的火墙策略是否打开
(4)查看客户端的网关是否设定正确