Настраиваю следующим образом:
eth0 - интернет
eth1 - локалка
/etc/sysctl.conf
net.ipv4.ip_forward = 1
iptables -A INPUT -i lo -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
из внешней сети внутрь
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j REJECT
из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dports 110,25,465,80,443 -m mac --mac-source 00:00:00:00:00:01 -j ACCEPT # computer1
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dports 110,25,465 -m mac --mac-source 00:00:00:00:00:02 -j ACCEPT #computer2
# и т.д.
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
Работает так:
computer1 - открывает http, https, получает и отправляет почту.
computer2 - получает и отправляет почту.
Могу блокировать сайты
iptables -A FORWARD -m string --string "vkontakte.ru" --algo kmp --to 65535 -j DROP
Как вариант тоже нормально.
Но если установить SQUID, он не выполняет правил iptables. Почему?
Хотелось бы чтоб одни только почту получали, другие на web-странички заходили.
ICQ блокировать определенным пользователям тоже не могу.