DNS域名解析错误
主要报错和解决流程
bash
root@hadoop-master:~# ping www.baidu.com
PING www.a.shifen.com (39.156.70.239) 56(84) bytes of data.
^C--- www.a.shifen.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2078ms
# 这里可知是能够解析出来百度的IP,但PING不通,接着我们尝试ping本机的IP和网关的IP,发现只PING网关IP不通,所以判定是此处的问题
root@hadoop-master:~# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:6e:cb:b8 brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.236.128/24 brd 192.168.236.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6e:cbb8/64 scope link
valid_lft forever preferred_lft forever
root@hadoop-master:~# route -n
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
0.0.0.0 192.168.236.2 0.0.0.0 UG 20100 0 0 ens33
192.168.232.2 0.0.0.0 255.255.255.255 UH 20100 0 0 ens33
192.168.236.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
# 以上可知,本机的IP为处于 236.0 网段,但是网关却是 232.2 ,此时需要点击虚拟机的"网络编辑",将网段更改一致,后面附网络编辑图片;
root@hadoop-master:~# ip route add default via 192.168.232.2 dev ens33
root@hadoop-master:~# route -n
内核 IP 路由表
目标 网关 子网掩码 标志 跃点 引用 使用 接口
0.0.0.0 192.168.236.2 0.0.0.0 UG 0 0 0 ens33
0.0.0.0 192.168.232.2 0.0.0.0 UG 20100 0 0 ens33
192.168.232.2 0.0.0.0 255.255.255.255 UH 20100 0 0 ens33
192.168.236.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
# 系统添加一条默认路由,当系统访问一个没有在路由表中匹配到 "具体路由规则" 的 IP 地址时,所有网络流量会默认通过 ens33 网卡发送到 192.168.236.2 这个网关地址
root@hadoop-master:~# ping www.baidu.com
PING www.a.shifen.com (39.156.70.239) 56(84) bytes of data.
64 bytes from 39.156.70.239: icmp_seq=1 ttl=128 time=60.8 ms
64 bytes from 39.156.70.239: icmp_seq=2 ttl=128 time=89.6 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 60.826/75.196/89.567/14.370 ms
网络编辑


附加问题
在配置修改网络的过程中如果使用nmtui修改,激活后查看又总是回退,导致修改无效
原因: 用 nmtui 修改的配置会被 Ubuntu 优先使用的 netplan 配置文件覆盖(或 DHCP 自动回写),导致修改不持久,每次重启网络/重新进入 nmtui 都会恢复成原错误。
解决思路: 直接修改 netplan 配置文件(系统级持久配置),彻底覆盖错误的网关/IP,禁用 DHCP 自动分配(避免自动回写)。
分步解决(永久生效,不再回滚)
步骤1:找到并备份 netplan 配置文件
Ubuntu 的 netplan 配置文件在 /etc/netplan/ 下,先定位并备份:
bash
# 1. 查看netplan配置文件(通常是 00-installer-config.yaml 或 50-cloud-init.yaml)
ls /etc/netplan/
# 2. 备份配置文件(防止改错)
sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
步骤2:编辑 netplan 配置文件(关键!禁用DHCP+手动配正确网关)
bash
sudo vim /etc/netplan/00-installer-config.yaml
删除原有内容,替换为以下配置(重点修改IP、网关为VMware虚拟网络编辑器里的正确值,比如:
-
IP:192.168.232.135/24(和虚拟机网段匹配,最后一位自定义);
-
网关:192.168.232.2(VMware NAT网关的正确IP,替换你之前错误的232.1);
-
DNS:填公共DNS即可)。
配置示例(严格遵守YAML语法:缩进用2个空格,冒号后加空格):
bash
network:
ethernets:
ens33: # 你的网卡名(用 ip addr 确认,通常是ens33/eth0)
dhcp4: no # 禁用DHCP(核心!避免自动分配错误网关)
addresses: [192.168.232.135/24] # 静态IP,和网关同网段
gateway4: 192.168.232.2 # VMware虚拟网络里的正确网关(替换232.1)
nameservers:
addresses: [223.5.5.5, 114.114.114.114] # 公共DNS,可选
version: 2
renderer: NetworkManager # 确保nmtui/NetworkManager能识别配置
步骤3:应用配置并重启网络(立即生效)
bash
# 1. 应用netplan配置(检查语法,无报错则生效)
sudo netplan apply
# 2. 重启NetworkManager(清除缓存,避免残留配置)
sudo systemctl restart NetworkManager
# 3. 清除NetworkManager的旧连接缓存(关键!避免回滚)
sudo nmcli connection reload
sudo nmcli connection down ens33 && sudo nmcli connection up ens33
步骤4:验证配置是否持久(不再回滚)
bash
# 1. 查看当前IP/网关(确认是配置的232.135/232.2)
ip addr show ens33
ip route
# 2. 重新进入nmtui查看(验证是否不再回滚)
sudo nmtui
此时进入 nmtui 后,IPv4的网关/IP应该固定为你配置的 192.168.232.2/192.168.232.135,不会再变回 232.1。
步骤5:测试网关连通性
bash
ping 192.168.232.2 -c 3
关键注意事项
-
YAML语法不能错 :缩进必须用空格(不能用Tab),冒号后必须加空格(比如
dhcp4: no而非dhcp4:no),否则netplan apply会报错; -
网关必须和VMware一致:先在VMware虚拟网络编辑器中确认NAT网关的IP(比如232.2),再填到配置文件里;
-
禁用DHCP是核心 :如果
dhcp4: yes,VMware会自动分配网关,导致配置被覆盖,必须设为no。
若仍回滚的兜底方案(清除旧连接)
如果以上步骤后仍回滚,说明有旧的NetworkManager连接缓存,彻底删除重建:
bash
# 1. 查看所有网络连接
sudo nmcli connection show
# 2. 删除旧连接(比如名称是netplan-ens33)
sudo nmcli connection delete netplan-ens33
# 3. 重新应用netplan配置(自动重建连接)
sudo netplan apply
完成后,nmtui 的配置会永久固定为你设置的正确网关/IP,不会再自动回滚。