Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 修改網卡 DNS 設定:臨時與永久生效完整指南

編輯:關於 Linux

Linux 系統重裝或遷移後常遇到域名解析失敗,需修改 DNS 設定。本文區分臨時生效(重啟失效)與永久生效兩種場景,提供適用於主流發行版的標準操作方法。

核心概念:resolv.conf 與 resolvconf

  • /etc/resolv.conf:系統實際使用的 DNS 解析設定檔
  • 現代發行版(Ubuntu 18.04+、Debian 10+、CentOS 8+、RHEL 8+)多採用 systemd-resolved 或 resolvconf 管理此檔,不建議直接手動編輯(檔案標頭通常標註「DO NOT EDIT」)

方法一:臨時修改(立即生效,重啟失效)

適用於測試、臨時網路環境切換:

sudo vim /etc/resolv.conf

修改內容為:

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
  • nameserver:DNS 伺服器 IP,首行為主 DNS,次行為備用
  • search:預設搜尋域(可選)
  • 建議使用 Google (8.8.8.8/8.8.4.4)、Cloudflare (1.1.1.1) 或內部 DNS

驗證: ping google.com 或 dig example.com 即時生效。重啟或網路服務重啟後設定將被覆蓋。

方法二:永久修改(持久化)

方案 A:systemd-resolved(現代主流:Ubuntu 18.04+、Debian 10+、CentOS 8+、RHEL 8+、Fedora)

# 1. 編輯 systemd-resolved 設定
sudo vim /etc/systemd/resolved.conf

# 2. 在 [Resolve] 區塊設定
[Resolve]
DNS=8.8.8.8 8.8.4.4
# Domains=example.com  # 可選
# DNSSEC=no  # 可選

# 3. 重啟服務並啟用開機自啟
sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved

# 4. 確保 /etc/resolv.conf 為 systemd 管理的符號連結
ls -l /etc/resolv.conf
# 應指向 ../run/systemd/resolve/stub-resolv.conf
# 若非連結,需重建:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

方案 B:resolvconf 傳統框架(較舊發行版)

# 1. 編輯基礎設定檔
sudo vim /etc/resolvconf/resolv.conf.d/base

# 2. 加入 nameserver 行
nameserver 8.8.8.8
nameserver 8.8.4.4

# 3. 更新生效
sudo resolvconf -u

方案 C:NetworkManager 管理介面(桌面版/Server 含 NM)

# 列出連線
nmcli con show

# 修改特定連線 DNS(例:連線名為 "Wired connection 1")
nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod "Wired connection 1" ipv4.ignore-auto-dns yes
nmcli con up "Wired connection 1"

方案 D:Netplan(Ubuntu 18.04+ Server 預設)

sudo vim /etc/netplan/01-netcfg.yaml
# 或 50-cloud-init.yaml 等

# 在 ethernets 區塊加入:
ethernets:
  eth0:
    dhcp4: true
    nameservers:
      addresses: [8.8.8.8, 8.8.4.4]
      search: [example.com]

# 套用
sudo netplan apply

驗證與疑難排解

# 查看目前生效 DNS
cat /etc/resolv.conf
# 或
systemd-resolve --status
# 或
resolvectl status

# 測試解析
dig @8.8.8.8 google.com
nslookup google.com

# 檢查 systemd-resolved 狀態
systemctl status systemd-resolved
journalctl -u systemd-resolved -f

常見陷阱提醒

錯誤做法後果正確做法
直接編輯 /etc/resolv.conf 以為永久重啟/網路重啟後被覆蓋使用上述永久方案
同時存在 systemd-resolved 與 resolvconf衝突導致解析異常擇一使用,建議 systemd-resolved
修改設定後未重啟對應服務不生效必須 restart/reload 服務
容器環境修改宿主機設定容器內不生效容器內單獨配置或掛載 resolv.conf

依據你的發行版與網路管理工具選擇對應永久方案,避免「改了不生效」或「重啟失效」的困擾。

Copyright © Windows教程網 All Rights Reserved