Довольно часто требуется пускать трафик мимо прокси-сервера, поэтому информация должна пригодиться.
Данная задача реализуется следующим способом:
1. Трафик, идущий из внутренней сети на 80 порт шлюза редиректим на порт работы Squid (обычно 3128):
iptables -t nat -A PREROUTING -i «Внутренний интерфейс» -s «Локальная сеть» -p tcp -m multiport —dport 80 -j REDIRECT —to-port 3128
2. Записываем через правило RETURN ip-адреса (через запятую) внутренней сети, трафик с которых не пойдет на порт сквида:
iptables -t nat -A PREROUTING -s внутренний ip1,внутренний ip2 -p tcp -m multiport —dport 80 -j RETURN
3. Указываем домены или ip-адреса, на которые клиенты будут переходить без использования прокси-сервера:
iptables -t nat -A PREROUTING -d Домен/ip-адрес1 , Домен/ip-адрес2 -p tcp -m tcp —dport 80 -j RETURN
Несколько деталей:
1. Правила должны быть записаны в следующем порядке:
iptables -t nat -A PREROUTING -d Домен/ip-адрес1 , Домен/ip-адрес2 -p tcp -m tcp —dport 80 -j RETURN
iptables -t nat -A PREROUTING -s внутренний ip1,внутренний ip2 -p tcp -m multiport —dport 80 -j RETURN
iptables -t nat -A PREROUTING -i «Внутренний интерфейс» -s «Локальная сеть» -p tcp -m multiport —dport 80 -j REDIRECT —to-port 3128
2. Squid должен работать в прозрачном режиме.
3. На шлюзе должна быть настроена NAT для клиентов локальной сети.
4. Squid не фильтрует https-трафик по умолчанию, необходимо дорабатывать.