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 lim_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

Однако, не спешим радоваться, ибо мы еще не настроили файрвол.

9 Responses to “Debian файрвол и прокси — 2 из 4. Установка и настройка Squid”

  1. RIoQ 15 Январь 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.

  2. Мммм… Возможно я что-то упустил. Каюсь, с масками я знаком не так близко, как хотелось бы… Щас покопаю.
    ———————
    Итак, ничего у меня в логи не сыпется — ни ошибок ни ворнингов (!), однако как вариант можно писать так:
    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
    #если не ошибаюсь, правила просуммируются

  3. snaike 4 Март 2009 at 20:32 #

    тогда непроше было указать
    acl lim_access src 192.168.222.1/255.255.255.0
    в самом конфе написано что так описывается вся подсеть
    или /24

  4. WORM 14 Июнь 2009 at 11:17 #

    Дякую за статтю! Дуж гарно розписано )))

    але роути не пишуться

  5. WORM 14 Июнь 2009 at 11:19 #

    REDIRECT пише що не вірна команда ((((

  6. WORM, не может такого быть. Наверное мне стоит упомянуть, что «sudo iptables -t nat -A PREROUTING -s 192.168.222.0/24 -p tcp -m tcp —dport 80 -j REDIRECT —to-ports 3128″ — одна команда, а здесь она перенеслась из-за недостаточного места… (=
    Каждая моя команда начинается с $ — это какбы приглашение консоли.

  7. wlan 10 Август 2011 at 19:25 #

    >Не забываем сделать то же самое и для icmp_access. Меняем localnet на наши сети:
    >icmp_access allow full_access
    >icmp_access allow full_access

    Скорее всего имелось ввиду lim_access в одной из строк.

  8. Vik 2 Август 2012 at 6:06 #

    Спасибо выручил за 1 день прокси поднял который был нужен

Добавить комментарий