在 Arch Linux 中更改默认 DNS 服务器

Ant*_*neG 9 linux dns dhcp arch-linux

我在越南,大多数社交网站(Facebook、Twitter 等 - 甚至 reddit)都被 ISP DNS 服务器阻止。

我试图使用该resolv.conf文件更改我的 Arch 盒子的 DNS 服务器,但它失败了,因为dhcpd每次我连接到 LAN 时都会自动生成这个文件。我一直在环顾四周,试图找出如何解决这个问题,但没有成功。要么我讨厌谷歌搜索,要么这样做很重要。

编辑 1:

嗯,显然把它贴在这里让我感到内疚,我不得不进一步推动我的搜索。我在下面找到了与 Ankur 帖子相同的文章。这就是我所做的,如果有人遇到同样的问题:

$ sudo gvim /etc/dhcpcd.conf 
Run Code Online (Sandbox Code Playgroud)

在文件尾部添加“nohook resolv.conf”。

$ sudo gvim /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

添加到文件(OpenDNS 服务器):

nameserver 208.67.222.222
nameserver 208.67.220.220
Run Code Online (Sandbox Code Playgroud)

或(谷歌 DNS):

nameserver 8.8.8.8
nameserver 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

然后,验证它是否有效(需要包dnsutils):

$ dig www.facebook.com

; <<>> DiG 9.9.1-P1 <<>> www.facebook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16994
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.facebook.com.      IN  A

;; ANSWER SECTION:
www.facebook.com.   89  IN  A   69.171.224.53

;; Query time: 87 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Thu Jun 28 00:43:23 2012
;; MSG SIZE  rcvd: 61
Run Code Online (Sandbox Code Playgroud)

;; SERVER: 208.67.222.222#53(208.67.222.222),它奏效了。

小智 9

Arch Wiki解释说:要么使用resolv.conf.head文件,要么写保护/etc/resolv.conf

  • 这个答案已经过时了;现在,最佳实践(如果使用 `dhcpd`)是将更改添加到 `dhcpd` 的配置 *相反*,因此生成正确的 `resolv.conf`。(请参阅链接的维基页面;类似于 `/etc/dhcpcd.conf` 底部的 `static domain_name_servers=8.8.4.4 8.8.8.8`。) (3认同)
  • 老实说,这就是 _resolv.conf.head_ 的用途。写保护 _resolv.conf_ 似乎不是一个优雅的解决方案。 (2认同)

小智 5

该文件/etc/resolv.conf通常不应手动编辑。大多数 linux 系统使用一个名为的程序resolvconf,该程序/etc/resolv.conf每次连接到 LAN 时都会自动生成(如帖子所述)。相反,您要编辑文件/etc/resolvconf.conf.

查看man resolvconf更多信息。