Установка и настройка прокси-сервера squid в ubuntu linux Для начала установим прокси-сервер squid sudo apt-get install squid потом откроем любым текстовым редактором файл конфигурации sudo nano /etc/squid3/squid.conf Следующая строка устанавливает номер порта http-прокси (в данном случае 3128) http_port 3128 Для добавления одного ip-адреса (для примера 192.168.0.100) вставим строку acl mynet src 192.168.0.100 Так же добавим строку http_access allow mynet Перезапустим прокси-сервер sudo /etc/init.d/squid restart Теперь всё готово - можно пользоваться! №2. Для повышения безопасности сервер будет обслуживать запросы только из локальной сети, IP адреса в моей локальной сети из диапазона 192.168.1.0/24, Где: 192.168.1.0-подсеть, /24-количество бит в маске-идентификаторе сети (255.255.255.0) #acl localnet src 10.0.0.0/24 # RFC1918 possible internal network #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.1.0/24 # RFC1918 possible internal network Разрешаем доступ из localnet: http_access allow localnet Находим и раскоментируем, правило кеширования cache_dir ufs /var/spool/squid 4096 32 256 Если на сервер не много оперативной памяти-1Gb то имеет смысл установить лимит ее использования, нашим сервером. Нам необходимо найти и раскоментировать: memory_pools on memory_pools_limit 50 MB 50мб установлено по умолчанию. Для уведомления пользователей об ошибках можно установить страницу ошибок на русском задается она в параметре error_directory и установить кодировку Windows-1251, для желающих можно зайти в директроию /usr/share/squid/errors/ и там посмотреть список папок. error_directory /usr/share/squid/errors/Russian-1251 На этом основная настройка закончена, сохраняем изменения выходим. Нам необходимо перестроить кеш который хранится в /usr/sbin/squid sudo /usr/sbin/squid -z sudo /etc/init.d/squid start Технически сервер работает и готов к использованию и данной, минимальной конфигурации, вполне хватит для тестов, но он висит на порту 3128 к которому http запросы никаким образом не попадают, для этого нам необходимо завернуть порт 80 и 8080 на 3128 где их примет Squid и обработает. Лезем в файл rc.local sudo nano /etc/rc.local В локальную сеть у меня смотрит интерфейс eth2 IP которого 192.168.1.1 В сеть провайдера eth1, из этих условий вытекает то что указано ниже: iptables -t nat -A PREROUTING -i eth2 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 iptables -t nat -A PREROUTING -i eth2 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 3128 Добавляем это в rc.local заменив IP адрес шлюза на тот что используется в вашей сети. Перезагружаем шлюз чтобы настройки применились, можно конечно перезапустить rc.local, но иногда возникают непонятные глюки, которые отнимают много времени. Намного быстрее перезагрузить систему! Проверяем на любом клиентском ПК интернет должен работать, без дополнительных настроек браузера. В целом кеширование данных передаваемых из сети, а также DNS запросов от пользователей, будет производиться, но нам необходимо заблокировать, некоторые сайты и создать нечто, похожее на контент-фильтр. Теперь нам необходимо добавить правила для заблокированных сайтов sudo nano /etc/squid/squid.conf И добавляем туда следующее: acl ru url_regex "/etc/squid/ru.acl" acl com url_regex "/etc/squid/com.acl" acl org url_regex "/etc/squid/org.acl" acl net url_regex "/etc/squid/net.acl" http_access deny ru http_access deny com http_access deny org http_access deny net Для тех кто использует файлы из архива, их достаточно скопировать в /etc/squid/. Чтобы заблокировать сайт достаточно добавить его в один из файлов и перезагрузить squid. Перезапускаем Squid: sudo /etc/init.d/squid stop sudo /etc/init.d/squid start Пробуем перейти с клиентского ПК по первому попавшемуся адресу из списка, должны получить сообщение что доступ заблокирован-значит все сделано правильно.