Debian файрвол и прокси – 2 из 4. Установка и настройка Squid
Итак, мы уже настроили наш будущий сервер на взаимодействие с сетями, в том числе и интернетом, в предыдущей статье.
Теперь приступим к установке и настройке кеширующего прокси-сервера Squid (в дальнейшем – сквид). Чтоб установить его, выполните команду
$ sudo apt-get install squid
и дождитесь пока программа установки скачает сквид и все его зависимости и установит их.
Примечание: установится сквид стабильной второй версии. Если вы хотите установить третий сквид, указывайте squid3. У меня были с ним некоторые проблемы, однако, полагаю, что дело было или в кривизне моих рук (чего у вас, возможно, нет), либо в криво собранном пакете (что вскоре могут исправить).
На этом этапе нам было бы очень полезно (читай – необходимо) иметь еще один компьютер, который можно бы было подключить к внутреннему интерфейсу сервера и на котором мы бы могли проверить соединение с интернетом.
После окончания установки, начинаем редактировать файл конфигурации сквида. Не знаю как вам, лично мне удобнее когда в файле конфига нет ничего лишнего, то есть присутствуют только непосредственно параметры конфигурации. Для этого бекапнем оригинальную конфигурацию сквида (чтоб было где искать описания всех параметров):
$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
и выжмем из оригинальной конфигурации всё, не закоментированное:
$ sudo cat /etc/squid/squid.conf.original | grep -v '^\(#\|$\)' > /etc/squid/squid.conf
В итоге заимеем дефолтный конфигчик без ничего нишнего. Но всё же очень советую кинуть взор в оригинальный конфиг и почитать его на досуге – там очень много интересного!
Ну, наконец, приступим к редактированию:
$ sudo nano /etc/squid/squid.conf
Редактировать начинаем со строк с такими комментариями: # RFC1918 possible internal network
Заменяем указанные сети (сеть) на свои внутренние сети, которые мы будем выпускать. У меня это выглядит так:
# обычные пользователи с ограниченной скоростью
acl lim_access src 192.168.222.0-192.168.223.0/255.255.255.0
# необычные пользователи =)
acl full_access src 192.168.222.38/255.255.255.255
Теперь разрешим ходить им на http. Ищем последнюю строчку http_access deny all и добавляем перед ней такие строчки:
http_access allow full_access
http_access allow lim_access
Не забываем сделать то же самое и для icmp_access. Меняем localnet на наши сети:
icmp_access allow full_access
icmp_access allow full_access
Следующим шагом будет установка порта прокси и указание его прозрачности. Редактируем строчку http_port 3128 к следующему виду (порт можете указать и свой, но этот стандартен и желателен):
http_port 3128 transparent
Что такое прозрачность прокси? Это когда пользователи не обязаны явно указать прокси сервер в своих приложениях, чтоб выйти в интернет. То есть сервер сам перенаправляет запросы с 80 порта (и других указанных) на свой 3128. Так вот, следует заметить, что прозрачность у нас появится не сразу, а только после того как мы соответствующим образом настроим файрвол. Пока что пускай будет так как есть – не прозрачно.
Затем, после «hierarchy_stoplist cgi-bin ?» добавляем настройки кеша (о параметрах почитайте оригинальный squid.conf, забекапленный нами ранее):
cache_mem 64 MB
cache_dir ufs /var/spool/squid 1024 16 256
cache_mgr admin@mail.ua
После строчек с refresh_pattern начинаем настраивать пулы (по сути ограничения на ранее созданные группы сетей; помните acl?):
# указываем количество правил
delay_pools 2
# регистрируем 2 пула 3 класса (о классах читаем знаете где - в комментах исходного конфига)
delay_class 1 3
delay_class 2 3
# указываем кто есть кто и указываем доступ
delay_access 1 allow full_access
delay_access 1 deny all
delay_access 2 allow lim_access
delay_access 2 deny all
# указываем параметры скорости для первого пула (нет ограничений)
delay_parameters 1 -1/-1 -1/-1 -1/-1
# второго пула (это у нас lim_access) - режем скорость примерно до 10 кбайт/с после первого Мб
delay_parameters 2 -1/-1 -1/-1 10000/1024000
Всё! Сохраняем файл и перезапускаем сквид:
$ sudo /etc/init.d/squid restart
Однако, не спешим радоваться, ибо мы еще не настроили файрвол.

IT-совместимый сайт
Январь 15th, 2009 at 14:01
# обычные пользователи с ограниченной скоростью
acl lim_access src 192.168.222.0-192.168.223.0/255.255.255.0
Такая маска не прокатит – получите сообщение «Netmask masks away part of the specified IP» и выпустите в инет всех пользователей. В данном случае она должна быть 255.255.255.255.
Январь 19th, 2009 at 08:02
Мммм… Возможно я что-то упустил. Каюсь, с масками я знаком не так близко, как хотелось бы… Щас покопаю.
——————–
Итак, ничего у меня в логи не сыпется – ни ошибок ни ворнингов (!), однако как вариант можно писать так:
acl lim_access src 192.168.222.1-192.168.222.254/255.255.255.255
acl lim_access src 192.168.223.1-192.168.223.254/255.255.255.255
#если не ошибаюсь, правила просуммируются
Март 4th, 2009 at 20:32
тогда непроше было указать
acl lim_access src 192.168.222.1/255.255.255.0
в самом конфе написано что так описывается вся подсеть
или /24
Июнь 14th, 2009 at 11:17
Дякую за статтю! Дуж гарно розписано )))
але роути не пишуться
Июнь 14th, 2009 at 11:19
REDIRECT пише що не вірна команда ((((
Июнь 14th, 2009 at 20:57
WORM, не может такого быть. Наверное мне стоит упомянуть, что «sudo iptables -t nat -A PREROUTING -s 192.168.222.0/24 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 3128″ – одна команда, а здесь она перенеслась из-за недостаточного места… (=
Каждая моя команда начинается с $ – это какбы приглашение консоли.