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
    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. 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.) 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.