Статьи

Как я настраивал прозрачный прокси в Linux Ubuntu Server. Часть 2

В предыдущей статье я начал описывать как я настраивал прозрачный прокси на 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

После этого всё работает как часы. Для составления статьи помогли ресурсы:

  1. Обеспечение централизованного выхода в Интернет при помощи Linux.
  2. Linux. Настройка роутера (NAT + DHCP + Squid)