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


16

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

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

以下是奖杯:)

在此处输入图片说明

Answers:


11

方法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

否:)在收到ISP的一些信息后,必须稍后将其覆盖。但是,这给了我一些想法,我将在network-scripts其中
嗡嗡

如果方法#3不起作用,则您可能会获得更多的成功编辑/etc/ppp/ip-up.local,一旦pppd建立连接,显然可以调用该方法。
Drav Sloan

@ DravSloan我感谢您的回答,它可以工作,但是我在Google上发现了一些我在这里发布的黑客。
拉胡尔·帕蒂尔

#1为我工作,非常感谢!
wvxvw 2013年

至少在Debian Jessie上,文件nm-system-settings.conf不存在,尽管有手册页。该手册页指出,不推荐使用nm-system-settings并将NetworkManager / NetworkManager.conf作为新的默认值。
耶利米2015年

7

看一下:

$ man NetworkManager.conf

看来,如果您dns=none[main]部分中添加,则NetworkManager不会显示/etc/resolv.conf


1
不,没有帮助。它仍然重写了它。从该文件中可以推断出,该部分中的插件用于缓存检索到的DNS记录。但是我可能是错的。
wvxvw

2
编辑文件后是否重新启动NetworkManager?
rickhg12hs 2013年

我通过KDE小部件禁用和启用了联网功能。我相信这应该重新启动它。不幸的是,通过重新启动它service NetworkManager restart不起作用-不知道为什么:| 这样尝试重新启动后,它无法连接。
wvxvw 2013年

很奇怪,restart这行不通。我在使用过的任何系统中都没有遇到过这种情况。
rickhg12hs 2013年

3
好了,设置dns=none/etc/NetworkManager在Fedora 24 ...(也有老PEERDNS=none/etc/sysconfig/network-scripts/ifcfg-${IFNAME}(如描述在这里例如...它仍然使用)...重启整盒检查它的工作原理?。
大卫Tonhofer

3

PPPD senario

使用ppon并且ppoff可能意味着您正在使用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,然后重新启动pppdpon,看看是否能解决问题。

eth0 senario

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

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

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

谢谢,关闭,但还没有。使用的接口是ppp,没有对应的ifcfg-ppp文件:|
wvxvw

如何创建点对点连接?它是如何配置的?
Drav Sloan

有趣的是,我不知道它是如何创建的。:)我所知道的是,ponpoff神奇的工作和NetworkManager的是某种能够使用它。我的第一个猜测是它曾被收藏过pppoeconf,但尚未安装在这里……
wvxvw 2013年

已更新以查看是否可以使用pppd的设置进行更改。
Drav Sloan 2013年

非常感谢您的宝贵时间,尽管最后我还是使用了Rahul Patil的答案,但这非常有教育意义!
wvxvw 2013年

2

您可以在Network Manager配置GUI中执行此操作,尽管据我所知它需要在每个连接的基础上完成,并且不能在全局范围内完成,这意味着您需要为每个wifi连接单独配置它。(这很烦人,但也有一个优势,因为无论好坏,许多wifi网络都会将DNS阻止到内部服务器以外的任何其他设备,因此可能需要单独配置才能正常工作。)

无论如何,在Fedora 19中,要么转到通过网络管理器从下拉菜单中获得的“网络设置”框,要么运行“网络连接”设置面板。(为什么这两个不同?我想应该逐步进行更改。)在任何情况下,您都可以编辑每个连接,然后在任一接口中找到“ IPv4”选项卡。

在“网络设置”配置器中,将“自动”从“开”更改为“关”,然后放入Google地址。或者,在网络连接GUI中,将“ 方法”从“自动(DHCP)地址” 更改为“仅自动(DHCP)地址”,然后在框中再次输入DNS。


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.