В предыдущей статье я начал описывать как я настраивал прозрачный прокси на Linux Ubuntu Server и остановился на том, что в локальной сети есть интернет для всех пользователей, у кого в настройках сетевой карты прописан шлюз по умолчанию равным Ip-адресу нашего Linux-сервера. При таком положении вещей мы имеем в локальной сети удобный интернет в плане работы почтовых программ, различных обновлений для программ и операционной системы, то есть работаем в интернете как будто бы у нас прямое подключение к интернету, но есть один минус. Такой интернет не контролируется. Если надо какому-нибудь пользователю отключить интернет или установить максимальную скорость, а то и вообще запретить скачивать mp3 или avi файлы, то мы это сделать не сможем. И тут на помощь к нам приходит прозрачный прокси сервер. Я поставил пожалуй самый популярный кэширующий прокси - Squid.
Итак, устанавливаем Squid3:
apt-get install squid3
После установки открываем конфиг на редактирование:
nano /etc/squid3/squid.conf
Указываем порт прокси, а так же признак прозрачности:
http_port 3128 transparent
Кэш:
cache_dir ufs /var/spool/squid3 8192 32 256
Далее создаем access листы, delay pools, разбиваем пользователей на группы, в общем производим настройку Squid. Затем сохраняем конфиг, строим кэш:
/usr/sbin/squid3 -z
и перезапускаем службу:
/etc/init.d/squid3 restart
После этого на клиентском компьютере можно попробовать прописать в настройках браузера параметры прокси (адрес 192.168.5.104 порт 3128) и проверить работоспособность прокси. Теперь осталось настроить прозрачную работу прокси-сервера, чтобы http трафик заворачивался на Squid автоматически, без прописывания прокси на клиенте.
Для этого в файле /etc/nat дописываем в конец:
#Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 -d ! 192.168.5.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.5.104:3128
и перезапускаем сеть:
/etc/init.d/networking restart
Теперь на компьютерах пользователей можно убирать настройки прокси и работать в интернете как будто в локальной сети прямой интернет. Конечно же это будет работать только для тех пользователей, которым в настройках Squid дан доступ на http протокол.
замечание
Выяснилось, что работа с ftp через прозрачный прокси Squid была не совсем корректна. Соединиться с сервером получалось, а вот передача файлов обрывалась с ошибкой передачи данных. Что только не пробовал. И устанавливал пассивный режим - не работает. Помогли настройки Squid‘а:
ftp_passive on
ftp_telnet_protocol on
А так же в автозапуск в файл /etc/rc.local добавлена команда:
modprobe modprobe ip_nat_ftp; modprobe nf_conntrack_ftp
После этого всё работает как часы. Для составления статьи помогли ресурсы: