echo facebook.com >> /etc/hosts is a pretty simple solution to prevent facebook.com and its subsites from resolving to an IP address. (This is also how Linux Mint's Mint Nanny works).

I would like to extend this to all sites except for a select few, however, I can't seem to find any workable solution on the web.

I have found some clues suggesting using a transparent proxy server, however I can't seem to be able to get it to work.

Can anyone post a concrete, straightforward recipe on how to achieve this simple goal (in an Unix-like operating system, preferably a GNU/Linux)?

  • 2
    How about only adding the white listed hosts to /etc/hosts and disabling external DNS lookup ? (Note that people still can access those sites if they just use the sites IP rather than its name). – Hennes Jul 30 '13 at 13:27

Use dnsmasq. This is a really neat service.

On Debian/Ubuntu/Mint:

sudo apt-get install dnsmasq

edit /etc/dnsmasq.conf

add this line to make all sites redirect to localhost:


add these lines to make specific sites use the DNS server at


then restart the dnsmasq service:

sudo service dnsmasq restart
| improve this answer | |

You don't need to DNS block. Setting up an Apache mod_proxy and ProxyBlock would be enough.

| improve this answer | |

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.