8

echo 0.0.0.0 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)?

1
  • 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, 2013 at 13:27

2 Answers 2

11

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:

address=/#/127.0.0.1

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

server=/allowed.com/8.8.8.8

then restart the dnsmasq service:

sudo service dnsmasq restart
1
  • When I was using Ubuntu 18 this was working for me. Since I upgraded to Ubuntu 20 this doesn't work for me anymore.
    – BigJ
    Jun 11, 2021 at 17:45
1

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

1
  • Some details would be nice though Mar 31, 2022 at 5:48

You must log in to answer this question.

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