DansGuardian+Squid3 (Ubuntu 12.04) на внешнем VPS не будет работать прозрачно
Моя цель - установить внешнюю настройку DansGuardian + Squid, которая будет использоваться только некоторыми машинами (особенно детьми) в моем доме. Мне удалось установить оба на дешевом VPS, и у меня были некоторые результаты, которые я искал.
Мой домашний маршрутизатор работает под управлением DD-WRT, поэтому там есть iptables. Изначально я использовал эту команду:
iptables -A PREROUTING -p tcp -m tcp --dport 80 -m mac --mac-source 00:19:B9:3E:BA:DF -j DNAT --to-destination <vps-address>:3182
По сути, эта команда принимает трафик исходящего порта 80, исходящий с указанного mac-адреса, и отправляет его на vps-адрес:3182. При открытии браузера на соответствующем компьютере это работало, но я получил веб-страницу Squid с указанием "Отказано в доступе". По-видимому, используя порт 3182, я указал его непосредственно на Squid, который настроен на пропуск трафика только с localhost.
Поэтому я изменил это вместо этого (порт 8080 вместо 3182)
iptables -A PREROUTING -p tcp -m tcp --dport 80 -m mac --mac-source 00:19:B9:3E:BA:DF -j DNAT --to-destination <vps-address>:8080
Когда я использую этот второй подход, он не работает вообще. Но сумасшедшая вещь в том, что я могу изменить настройки прокси в браузере и указать на vps-адрес:8080, и он работает просто отлично.
Итак, squid прозрачно работает на сетевом уровне - но как мне заставить dansguardian сделать то же самое? Я бы предпочел прозрачное решение - я не хочу полагаться на явно введенные настройки прокси в браузере.
1 ответ
Возможен и другой подход - использовать сервер ICAP, работающий на том же VPS-сервере, что и Squid, и прослушивать только локальный адрес 127.0.0.1, который Squid будет использовать для направления всего трафика. В качестве примера такого ICAP-сервера можно привести qlproxy. Так что, если вам удалось сделать ваш Squid прозрачным, значит, у вас уже есть необходимые настройки. Просто добавьте qlproxy в суп.