一、firewalld实现
1.在真机上打开路由功能(保证真机可以上网)
[root@foundation78 Desktop]# systemctl start firewalld # 打开防火墙
[root@foundation78 Desktop]# systemctl status firewalld
[root@foundation78 Desktop]# firewall-cmd --list-all
[root@foundation78 Desktop]# firewall-cmd --add-masquerade
[root@foundation78 Desktop]# firewall-cmd --list-all
2.在虚拟机上添加真机的ip作为网关
[root@desktop25 ~]# route add default gw 172.25.254.78
[root@desktop25 ~]# route -n
[root@desktop25 ~]# ping www.baidu.com
二、iptables实现上网
SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包的来源是被替换的那个IP的主机。
MASQUERADE是用发送数据的网卡上的IP来替换源IP,因此,对于那些IP不固定的场合,比如拨号网络或者通过dhcp分配IP的情况下,就得用MASQUERADE。从服务器的网卡上,自动获取当前ip地址来做NAT。
1.先保证真机可以上网
注:可以不用打开firewalld(防火墙)
[root@foundation78 Desktop]# ping www.baudu.com
[root@foundation78 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.254.0/24 -j MASQUERADE # 它可以实现自动寻找到外网地址,而自动将其改为正确的外网地址
-t # 指定表名
nat # 用于网络地址转换
-I # 在指定链中插入(insert)一条新的规则,默认在第一行添加
POSTROUTING # 对数据包作路由选择后应用此链中的规则
-s # 指定作为源地址匹配
-j # 指定目标动作或跳转
MASQUERADE # 地址伪装,从服务器的网卡上,自动获取当前ip地址来做NAT
2.给虚拟机添加网关(网关地址为真机ip,因为真机可以通网络)
[root@desktop25 Desktop]# route add default gw 172.25.254.78
[root@desktop25 Desktop]# route -n
[root@desktop25 Desktop]# vim /etc/resolv.conf # 添加DNS,可以识别www.baidu.com等域名
nameserver 114.114.114.114
[root@desktop25 Desktop]# ping www.baidu.com # 成功连通网络