跳过正文
  1. Posts/

Linux-DNS网络管理

·893 字·2 分钟· loading · loading · · ·
ICE345
作者
ICE345
CS Student | System | Linux | OCaml

是的,你可以在 /etc/resolv.conf 文件中修改 DNS 服务器。该文件用于配置 Linux 系统使用的 DNS 解析服务器。通过编辑该文件,你可以手动指定 DNS 服务器(例如 Google 的 8.8.8.8 或 Cloudflare 的 1.1.1.1 等)。

最好使用的是 dhcpcd 服务,这个最容易修改,就在 /etc/dhcpcd.conf 中修改就行

如何修改 /etc/resolv.conf 文件来更改 DNS 服务器
#

  1. 编辑 /etc/resolv.conf 文件

    使用文本编辑器(例如 nanovimgedit)编辑 /etc/resolv.conf 文件:

    sudo nano /etc/resolv.conf
  2. 修改 DNS 服务器

    在文件中,你可以添加或修改 nameserver 行来指定 DNS 服务器。例如:

     nameserver 8.8.8.8    # Google Public DNS
     nameserver 8.8.4.4    # Google Public DNS (备用)
     nameserver 2001:4860:4860::8888
     nameserver 2001:4860:4860::8844

    或者,你可以使用其他 DNS 服务提供商的 IP 地址,例如:

    nameserver 1.1.1.1    # Cloudflare DNS
    nameserver 1.0.0.1    # Cloudflare DNS (备用)

    保存文件并退出编辑器。

  3. 检查 DNS 设置

    编辑完成后,可以使用以下命令检查 DNS 配置是否生效:

    cat /etc/resolv.conf

    你应该看到你添加的 DNS 服务器 IP 地址。

注意事项
#

  1. 网络管理工具的干扰
    在某些系统中,/etc/resolv.conf 文件可能会被网络管理工具(如 NetworkManagersystemd-resolveddhclient)覆盖或自动生成。如果你手动修改了该文件,但网络管理工具恢复了默认的 DNS 设置,修改将会被覆盖。

  2. 禁用自动生成的 /etc/resolv.conf
    如果你希望手动管理 DNS 配置并防止它被覆盖,你可以采取以下方法:

    • 禁用 systemd-resolved(如果在使用 systemd

      如果你的系统使用 systemd-resolved 管理 DNS 配置,可以禁用它,然后手动修改 /etc/resolv.conf

      sudo systemctl disable systemd-resolved.service
      sudo systemctl stop systemd-resolved.service
      sudo rm /etc/resolv.conf
      sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    • 修改 NetworkManager 设置

      如果你使用的是 NetworkManager,可以通过修改其配置文件来防止它覆盖 /etc/resolv.conf。编辑 /etc/NetworkManager/NetworkManager.conf 并添加以下行:

      [main]
      dns=none

      然后重新启动 NetworkManager 服务:

      sudo systemctl reload NetworkManager

然后要重新编辑 resolv.conf 文件

然后再继续执行

sudo systemctl reload NetworkManager
  1. 通过 DHCP 自动获取 DNS
    如果你的网络通过 DHCP 自动获取 IP 配置,DHCP 服务器也可能会向 /etc/resolv.conf 写入 DNS 配置。你可以禁用 DHCP 配置 DNS 设置来防止这种情况,具体方法依赖于你的网络管理工具。

使用的是 dhcpcd
#

编辑 /etc/dhcpcd. conf 的, 找到/添加: static domain_name_server=.....

使用的是 systemd-networkd
#

这个可能就要在 /etc/systemd/network/ 中编辑文件,创建一个文件 ,以. network 结尾例如: 20-wired. network

[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=1.1.1.1

总结
#

你确实可以手动编辑 /etc/resolv.conf 来设置 DNS 服务器,但要注意一些网络管理工具可能会自动覆盖该文件。如果你想持久化更改,可能需要禁用某些自动管理 DNS 的服务或工具。

相关文章