I'm in Viet Nam and most social websites (Facebook, Twitter and the likes - even reddit) are blocked by the ISP DNS server.

I tried to change the DNS server of my Arch box using the resolv.conf file, but it failed miserably since dhcpd generates this file automatically everytime I connect to the LAN. I've been looking around to try and find out how to fix this, without success. Either I s*ck at Googling, either it is non-trivial to do so.


Meh, apparently posting it here made me feel guilty and I had to push my search a bit more. I found the same article than Ankur post below. This is what I made, if anybody ever faces the same problem:

$ sudo gvim /etc/dhcpcd.conf 

Add "nohook resolv.conf" at the tail of the file.

$ sudo gvim /etc/resolv.conf

Add to the file (OpenDNS servers):


Or (Google DNS):


Then, verify it worked (need package 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

; EDNS: version: 0, flags:; udp: 4096
;www.facebook.com.      IN  A

www.facebook.com.   89  IN  A

;; Query time: 87 msec
;; WHEN: Thu Jun 28 00:43:23 2012
;; MSG SIZE  rcvd: 61

See ;; SERVER:, it worked.

  • 2
    Consider also using Tor torproject.org to bypass censorship and network blocks.
    – Dakatine
    Commented Jun 27, 2012 at 12:34

2 Answers 2


Arch Wiki explains: either use a resolv.conf.head file, or write-protect /etc/resolv.conf.

  • 2
    this is honestly what resolv.conf.head is designated for. write-protecting resolv.conf doesn't seem like an elegant solution. Commented Jun 27, 2012 at 18:30
  • 3
    This answer is out-of-date; nowadays, best-practice (if using dhcpd), is adding the change to dhcpd's configuration instead, so the correct resolv.conf is generated. (See the linked wikipage; something like static domain_name_servers= at the bottom of /etc/dhcpcd.conf.) Commented May 20, 2015 at 17:41

The file /etc/resolv.conf generally should not be edited by hand. Most linux systems use a program called resolvconf that will automatically generate /etc/resolv.conf every time you connect to the LAN (as the post describes). Instead, you want to edit the file /etc/resolvconf.conf.

Check man resolvconf for more information.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .