iptables é útil se forem apenas alguns nomes de domínio / ip.
Com iptables você pode restringir com base no usuário, grupo e / ou tempo, embora para isso você precise usar a tabela OUTPUT. Então, para permitir root, e um grupo "web", use
# this allows root for things such as apt-get
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT
# this allows users of the group web
# create a group, web, and add users to it to allow access
sudo iptables -A OUTPUT -m owner --gid-owner web -j ACCEPT
# These two rules allow access to port 80 and 443 over the lunch hour
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -m time --timestart 12:00 --timestop 13:00 -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -j DROP
Mas à medida que suas necessidades se tornam mais complexas, é útil usar proxies. Por exemplo, você pode usar privoxy (e outros) para adblock. O Squid adiciona filtragem e regras mais complexas (acl ou listas de controle de acesso), mas é provável que seja superado para um usuário doméstico.
Você então torna o proxy transparente com o iptables
# This allows root
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT
# This allows privoxy, which serves as adblock
sudo iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner privoxy -j ACCEPT
# this blocks direct access to ports 80 to all other users
sudo iptables -A OUTPUT -p tcp --dport 80 -j DROP
# This allows squid to access privoxy (I think squid runs as "proxy")
#sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -m owner --uid-owner proxy -j ACCEPT
# this rule blocks other users from direct access to privoxy
sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -j DROP
# Redirect all outgoing traffic on port 80 to squid listening on port 3128
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner privoxy -j REDIRECT --to-port 3128
Agora você instala e configura o privoxy e o squid
guia do servidor Ubuntu squid
O problema com esse método é que você precisa instalar o squidguard, configurar o squid, etc, o que seria um post longo e mais adequado para uma LAN maior.