Я хочу настроить фильтр содержимого для своей сети. У меня настроен и работает squidGuard. Я бы хотел, чтобы все клиенты использовали его. Сюда входят клиенты, которых я не контролирую (BYOD и тому подобное). Как сделать так, чтобы весь трафик проходил через прокси?
Другой вариант - использовать параметр 252 dhcp и задать URL-адрес сценария автоматической настройки прокси. Или вы можете настроить URL http: //wpad/wpad.dat с настройками прокси. Или вы можете сделать и то, и другое. Метод DNS обычно более поддерживается.
Это зависит от возможности установить параметры с DHCP-сервером и клиентами, поддерживающими автоматическую конфигурацию прокси-сервера таким образом. Клиенты Windows и Mac должны работать нормально. Сообщается, что iPad работает, но лично у меня нет опыта в этом отношении и нет уверенности в Android. Формат файла PAC следующий
function FindProxyForURL(url, host) {
// If the hostname matches, send direct.
if (dnsDomainIs(host, ".intranet.domain.com") ||
shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
return "DIRECT";
// If the protocol or URL matches, send direct.
if (url.substring(0, 4)=="ftp:" ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";
// If the requested website is hosted within the internal network, send direct.
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
return "DIRECT";
// If the IP address of the local machine is within a defined
// subnet, send to a specific proxy.
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
return "PROXY 1.2.3.4:8080";
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}
Проверять, выписываться http://findproxyforurl.com/example-pac-file/ откуда этот пример. Ваш, вероятно, будет намного проще.
Настройте свой маршрутизатор на использование вашей машины squidguard в качестве «прозрачного прокси». Вы не упомянули, что вы использовали для маршрутизатора, но если он поддерживается, скорее всего, в Интернете есть учебное пособие по настройке его для использования с прокси-сервером.
Вы можете настроить squid как прозрачный кеширующий прокси. Это фактически применяет правило fw для пересылки всех пакетов на порт squid с веб-портов 80.
Пример конфигурации для squid.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.1.1 192.168.2.0/24
http_access allow localhost
http_access allow lan
Правила Iptables для активации.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Если вы используете аутентификацию squid, вам придется пожертвовать, поскольку это способ перехвата сетевого взаимодействия. Источник Вот.