如何实现虚拟机上网

本文介绍了两种方式实现虚拟机通过真机上网:firewalld和iptables。首先确保真机具备上网条件,然后在虚拟机中设置真机IP为网关。firewalld中开启路由功能,iptables则利用SNAT和MASQUERADE规则进行地址转换,确保数据包正确转发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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   # 成功连通网络

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值