我想尝试一下 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 情景
使用ppon
andppoff
可能意味着您正在使用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.
注释掉此选项,停止pppd
,poff
编辑您的resolv.conf
,然后重新启动您的pppd
,pon
看看是否可以解决问题。
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
。