萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 能 Ping 通卻無法上網?DNS 解析故障排查與解決方案

現象描述

系統網絡配置正確,ping 8.8.8.8 通,但瀏覽器無法打開網頁,curl / wget 域名報錯 Could not resolve host。典型的 **DNS 解析失敗**。

排查步驟

1. 確認網絡基礎配置

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.16.6.50
NETMASK=255.255.255.0
GATEWAY=172.16.6.1
DNS1=114.114.114.114   # 關鍵:此處需配置 DNS
DNS2=8.8.8.8

若使用 NetworkManager,檢查 nmcli con show 對應連接的 ipv4.dns 字段。

2. 測試 DNS 解析

# dig www.baidu.com
# nslookup www.baidu.com 114.114.114.114
# host www.baidu.com
  • 若指定 DNS 服務器可解析,說明上游 DNS 正常,問題在本地配置。
  • 若全部失敗,檢查防火牆是否阻擋 UDP 53 端口。

3. 檢查 /etc/resolv.conf

# cat /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
options timeout:2 attempts:1

若為空或指向錯誤 IP,手動修改或重啟網絡服務重新生成:

# systemctl restart NetworkManager
# 或
# systemctl restart network

4. 檢查 nsswitch.conf 解析順序

# grep hosts /etc/nsswitch.conf
hosts:      files dns myhostname

確保 dns 在 files 之後,系統才會查詢 DNS 服務器。

5. 排查防火牆/SELinux

# firewall-cmd --list-all | grep 53
# iptables -nL | grep 53
# sestatus

臨時關閉防火牆測試:systemctl stop firewalld。

6. 代理/VPN 干擾

若環境配置了 HTTP/HTTPS 代理,瀏覽器可能走代理而終端直連。檢查環境變量:

env | grep -i proxy

一鍵修復腳本 (針對 RHEL/CentOS 7+)

#!/bin/bash
nmcli con mod "System eth0" ipv4.dns "114.114.114.114 8.8.8.8"
nmcli con mod "System eth0" ipv4.ignore-auto-dns yes
systemctl restart NetworkManager
echo "DNS 已更新,測試解析:"
dig +short www.baidu.com

總結

「能 Ping IP 不能解析域名」90% 是 DNS 配置缺失或錯誤。按順序檢查:網卡配置 DNS → resolv.conf 生效 → 防火牆放行 53 端口 → 代理干擾,通常可在 5 分鐘內定位解決。

copyright © 萬盛學電腦網 all rights reserved