如何使用网络管理器在 Fedora 中设置 DNS 解析器?

如何使用网络管理器在 Fedora 中设置 DNS 解析器?

我想尝试一下 Google 公共 DNS。为此,我需要更改名称服务器地址。我知道它在文件中/etc/resolv.conf,但每当我启动时network-manager,它都会使用通过 DHCP 获得的值覆盖该文件中的值。

我如何告诉它不要这样做?我查看了 GUI,但只能找到添加更多 IP 地址的选项。

下面是奖杯:)

在此输入图像描述

答案1

方法#1

找到 NetworkManager 配置文件并添加/修改以下条目(在 CentOS5 中位于/etc/NetworkManager/nm-system-settings.conf或中/etc/NetworkManager/system-connections/)并编辑您的 DSL 连接文件:

[ipv4]
method=auto
dns=8.8.8.8;4.2.2.2;
ignore-auto-dns=true

注意:- 如果[ipv4]不起作用,请尝试使用[ppp]

方法#2

您可以更改 的权限,/etc/resolv.conf使其不能被其他服务写入或者您可以使用chattr.

方法#3

创建一个脚本,如下所述/etc/Networkmanager/dispatcher.d/,不要忘记使其可执行:

#!/bin/bash
#
# Override /etc/resolv.conf and tell
# NetworkManagerDispatcher to go pluck itself.
#
# scripts in the /etc/NetworkManager/dispatcher.d/ directory
# are called alphabetically and are passed two parameters:
# $1 is the interface name, and $2 is "up" or "down" as the
# case may be.

# Here, no matter what interface or state, override the
# created resolver config with my config.

cp -f /etc/resolv.conf.myDNSoverride /etc/resolv.conf

的条目/etc/resolv.conf.myDNSoverride

nameserver 8.8.8.8

答案2

看一下:

$ man NetworkManager.conf

看来,如果您dns=none在该[main]部分中添加一行,NetworkManager 将不会触及/etc/resolv.conf

答案3

PPPD 情景

使用pponandppoff可能意味着您正在使用pppd.在这种情况下pon将执行脚本/etc/ppp/ppp_on_boot。除非您向 提供参数pon,否则它将从 加载设置/etc/ppp/peers/provider。如果您提供一个参数,它会说例如pon interwebz它将寻找/etc/ppp/peers/interwebz.也有/etc/ppp/options要检查的地方。

我想这个文件包含设置usepeerdns。来自 pppd 手册页:

usepeerdns
   Ask the peer for up to 2 DNS server addresses. The addresses supplied by the peer 
   (if any) are passed to the /etc/ppp/ip-up script in the environment variables 
   DNS1 and DNS2, and the environment variable USEPEERDNS will be set to 1. In 
   addition, pppd will create an /etc/ppp/resolv.conf file containing one or two
   nameserver lines with the address(es) supplied by the peer. 

注释掉此选项,停止pppdpoff编辑您的resolv.conf,然后重新启动您的pppdpon看看是否可以解决问题。

eth0 高级

如果您编辑接口设置文件(/etc/sysconfig/network-scripts/ifcfg-eth0针对 eth0),您可以看到网络管理器正在使用哪些设置。

如果您在该接口上运行 DHCP BOOTPROTO=yes,那么您可以告诉它不要使用 覆盖您的 DNS 设置PEERDNS=no。如果您使用静态地址,则可以使用以下命令设置 DNS 设置

DNS1="8.8.4.4"
DNS2="8.8.8.8"
SEARCH="yourdomain.com"

答案4

我添加dns=none到 的主要部分/etc/Networkmanager/NetworkManager.conf,然后重新启动,这成功阻止了 NetworkManager 覆盖 中的搜索语句/etc/resolv.conf

相关内容