虚拟机下的Ubuntu系统,NAT网卡连接不上网络的问题


基于Ubuntu20.04系统,本人花了许久时间解决 NAT模式上网问题,如果你试过网上所有教程,检测Windows和Ubuntu环境没问题,无法启动系统服务、ping网络失败、重置虚拟机网络配置器也无效、重启虚拟机不出现网络图标等种种以下所列原因无法解决。仅供参考!!!

错误信息1:networking.service启动失败  //Ubuntu系统中自己不是这个服务,网上的这个服务是对应别人的服务

错误信息2:Failed to start network.service: Unit network.service not 

错误信息3:ping: www.baidu.com: Name or service not known

错误信息4:ping: www.baidu.com: Temporary failure in name resolution   
ifconfig

无法获取网卡地址ens问题
在这里插入图片描述

ifconfig -a

ifconfig -a能够查看到网卡
在这里插入图片描述

解决办法1—请求IP地址

sudo dhclient ens33

再次获取ifconfig和ping都能实现,但是在系统重启后图标仍然消失
在这里插入图片描述

解决办法2—重启网络服务

这个方式能解决一大半NAT网卡不能上网问题,由于Windows一般都是自动获取IP,个人认为不要为了配置ip而去修改windows的ip地址。如果还是有问题,即虚拟机重启后网络图标丢失,看解决办法3

sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start

解决办法3—查验NetworkManager

NAT Network Address Translation 指网络地址转换 。使用NAT网卡时,Ubuntu 要访问外网,是委托Windows发出数据包, Windows 接收到回应后再转发给 Ubuntu 。外界看到的都是Windows ,看不到Ubuntu。使用NAT时,只要 Windows 能上网,Ubuntu 就必定能上网,无需设置 Ubuntu 的网络 。
本人想了很久,首先Windos上网没问题,网上所有的解决办法和上述所提办法都试过,但是还是重启无法获取ip地址,无法上网。
因此需要考虑是否开启了NetworkManager服务,NetworkManager可以理解为自动发现网卡并配置IP地址。
所有验证猜想,最后发现确实是NetworkManager没用使能,使用下面的开机启动指令即可,你也可以查看是否开机启动指令验证是不是未使能

查看是否开机启动:systemctl is-enabled NetworkManager
启动:systemctl start NetworkManger
关闭:systemctl stop NetworkManager
开机启动:systemctl enable NetworkManager
禁用开机启动:systemctl disable NetworkManager

解决办法4----桥接网卡和NAT网卡不能同时使用问题

现象描述,不能够同时使用桥接网卡和NAT网卡,network界面只能切换一种方式,回想起,这可能是导致我前面认为自己ubuntu无法上网的原因,因为上次可能是使用的桥接方式(桥接方式是适用于局域网Windows、Ubuntu、嵌入式Linux开发板互相Ping通的)
修改配置文件,事先切换Root权限,.yaml文件每个人不一样,找到netplan文件下对应的即可

vim /etc/netplan/01-network-manager-all.yaml 
network:
  ethernets:
        ens33:
            dhcp4: true
  ethernets:
        ens37:
            dhcp4: true

  version: 2
  renderer: NetworkManager
sudo netplan apply

在这里插入图片描述

解决办法5—NAT网卡解析DNS失败的上网问题

问题现象如下
在这里插入图片描述
补充:当都不能ping通,即百度ip和域名都失效也可以使用上述方法

1、能ping通百度ip地址的情况

在这里插入图片描述

能够成功ping百度的ip地址,但是无法ping通www.baidu.com,基本定位为解析DNS失败
解决办法,根据虚拟机里的NAT模式,设置固定ip。

vim /etc/netplan/01-network-manager-all.yaml 
network:
  ethernets:
        ens33:
            dhcp4: no
            addresses: [192.168.79.130/24]
            gateway4: 192.168.79.2
            nameservers:
                addresses: [114.114.114.114,8.8.8.8,8.8.4.4]

在这里插入图片描述

sudo netplan apply

在这里插入图片描述

### 配置虚拟机Ubuntu系统NAT网络以实现互联网访问 在VMware虚拟机中配置Ubuntu系统NAT模式,使其能够访问互联网,主要涉及以下几个方面的操作: 1. **设置虚拟机网络模式** 在VMware中,首先需要将虚拟机网络适配器设置为NAT模式。该模式下,虚拟机主机网络连接进行互联网访问,同时虚拟机会被分配一个主机同的私有IP地址。VMware默认会创建一个名为VMnet8的虚拟网卡,用于NAT模式下的网络连接[^2]。 2. **检查Ubuntu网络配置** Ubuntu 20.04及更高版本使用`netplan`进行网络管理,再依赖传统的`/etc/network/interfaces`文件。因此,需要编辑`/etc/netplan/`目录下的YAML配置文件,常为`00-netcfg.yaml`或类似名称的文件。配置示例如下: ```yaml network: version: 2 ethernets: enp0s3: dhcp4: no addresses: - 192.168.153.3/24 gateway4: 192.168.153.2 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 ``` 在此配置中,`enp0s3`是网络接口名称,应根据实际环境调整。IP地址`192.168.153.3`应NAT网关`192.168.153.2`处于同一网段,子网掩码为`255.255.255.0`(即`/24`)。DNS服务器可以选择Google的公共DNS服务器`8.8.8.8`和`8.8.4.4`[^4]。 3. **应用网络配置** 编辑完`netplan`配置文件后,执行以下命令以应用新的网络设置: ```bash sudo netplan apply ``` 此命令会立即应用更改,无需重启系统。如果配置正确,Ubuntu虚拟机应能成功获取IP地址,并NAT模式访问互联网[^4]。 4. **验证网络连接** 配置完成后,可以过`ping`命令测试网络连接是否正常。例如,执行以下命令以测试是否能访问百度: ```bash ping -c 4 www.baidu.com ``` 如果返回类似以下输出,则表示网络连接正常: ``` PING www.baidu.com (110.242.68.66): 56 data bytes 64 bytes from 110.242.68.66: icmp_seq=0 ttl=54 time=28.3 ms 64 bytes from 110.242.68.66: icmp_seq=1 ttl=54 time=27.1 ms 64 bytes from 110.242.68.66: icmp_seq=2 ttl=54 time=26.9 ms 64 bytes from 110.242.68.66: icmp_seq=3 ttl=54 time=27.5 ms ``` 如果未能成功连接,建议检查网络配置是否正确,或尝试重启网络服务[^3]。 5. **配置静态IP地址** 若需要为Ubuntu虚拟机配置静态IP地址,确保其NAT网关处于同一网段。例如,若NAT网关为`192.168.224.2`,则可将Ubuntu的IP地址设置为`192.168.224.128`至`192.168.224.225`之间的任意地址,子网掩码为`255.255.255.0`,网关为`192.168.224.2`,DNS服务器同样可设置为`192.168.224.2`或使用公共DNS服务器[^5]。 6. **启用IP转发** 若希望Ubuntu虚拟机作为NAT网关,允许其他设备(如开发板)过其访问互联网,还需启用IP转发功能。编辑`/etc/sysctl.conf`文件,取消注释以下行: ```bash net.ipv4.ip_forward=1 ``` 然后执行以下命令以使更改生效: ```bash sudo sysctl -p ``` 接下来,配置`iptables`规则,将来自开发板的流量转发到UbuntuNAT接口。例如,假设UbuntuNAT接口为`ens33`,执行以下命令: ```bash sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE sudo iptables -A FORWARD -i ens33 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth0 -o ens33 -j ACCEPT ``` 其中,`eth0`为Ubuntu连接开发板的接口。完成上述配置后,开发板即可Ubuntu虚拟机访问互联网[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国家级退堂鼓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值