Назад | Перейти на главную страницу

Передавая squid для нескольких хостов с помощью iptables

У нас есть прокси-сервер squid, который прослушивает порт по умолчанию (3128): на eht0 (192.x.x.x).

У него есть еще один интерфейс eth1 (10.x.x.x), используемый для подключения к внешнему миру. Он выполняет качественную фильтрацию контента с помощью squidguard.

Но теперь мы хотим, чтобы некоторые хосты в сети обходили squid. предоставление полного доступа нескольким людям.

Я думаю о некоторых вещах, использующих iptables: любой пакет с этого конкретного хоста (для которого должен быть передан прокси-сервер), попадающий в eth0 на порт 3128 прокси, должен быть перенаправлен на eth1 и должен иметь доступ ко всему.

Это сработает? Если да, пожалуйста, помогите мне с правилами?

Я знаю, что это можно сделать с помощью squidgaurd, но хочу сделать это только с помощью iptables.

Обход в прозрачном режиме Squid возможен с помощью iptables с правилом диапазона.

#NAT:
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT

#Bypass range of ip: 
iptables -t nat -A PREROUTING -i eth0 -m iprange ! --src-range 192.168.3.39-192.168.3.44 -p tcp --dport 80 -j DNAT --to 192.168.3.1:8028
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8028

Это не сработает, потому что HTTP-чат встроен в сеанс клиент-прокси.

Однако вы можете настроить прокси-сервер как прозрачный и установить правило перенаправления iptables по своему усмотрению.

Вы не сможете добиться этого, если не используете прозрачный прокси, а это не так. С явно настроенным прокси iptables сможет видеть только диалог между клиентским хостом и прокси-сервером squid. Это сделало бы манипулирование трафиком невозможным, потому что iptables не знал бы, на какой веб-сайт / IP-адрес вы пытаетесь попасть.

Однако вы можете сделать это довольно легко с помощью прозрачного прокси. То есть iptables перенаправляет весь трафик www на прокси, если он не соответствует определенным критериям.

Если использование вашего прокси в прозрачном режиме является вариантом для вас, вы можете достичь своей цели, следуя приведенному ниже руководству, но изменив этап предварительной маршрутизации в iptables, чтобы иметь исключения чуть выше перенаправления прокси. Вот так:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -s $PROXY_BYPASS_HOST -j RETURN
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port $SQUID-SERVER:$SQUID_PORT

SQUID / iptables прозрачный прокси как сделать