Debian файрвол и прокси – 2 из 4. Установка и настройка Squid

Автор: Malefic. Дата: 27.11.2008 – 14:56

Итак, мы уже настроили наш будущий сервер на взаимодействие с сетями, в том числе и интернетом, в предыдущей статье.

Теперь приступим к установке и настройке кеширующего прокси-сервера 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

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

Tags: , , ,
Написано в категории “Linux” и имеет 6 комментов.
Если вам понравилась статья, подпишитесь на RSS.

6 ответов. Добавить еще»

  1. 1. RIoQ написал(а):

    # обычные пользователи с ограниченной скоростью
    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. 2. Malefic написал(а):

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

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

  4. 4. WORM написал(а):

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

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

  5. 5. WORM написал(а):

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

  6. 6. Malefic написал(а):

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

Ответить на статью