squid установка

Thank you for reading this post, don't forget to subscribe!

squid  - это бес­плат­ная про­грам­ма для настрой­ки прок­си-сер­ве­ра. Явля­ет­ся крос­сплат­фор­мен­ным про­грамм­ным обес­пе­че­ни­ем и может быть уста­нов­ле­но на опе­ра­ци­он­ные систе­мы семей­ства Windows или UNIX (напри­мер, FreeBSD, Ubuntu, CentOS).

Для ана­ли­за потреб­ле­ния тра­фи­ка через Squid Proxy могут исполь­зо­вать­ся SAMS или SARG.

Подготовка CentOS

Обнов­ля­ем систему:

yum update

Добав­ля­ем пра­ви­ло в firewalld:

firewall-cmd --permanent --add-port=3128/tcp

* где 3128 — порт, на кото­ром будет настро­ен наш прокси-сервер.

и пере­за­пус­ка­ем firewalld:

firewall-cmd --reload

Установка и настройка Squid

Уста­нав­ли­ва­ем прок­си-сер­вер сле­ду­ю­щей командой:

yum install squid

И откры­ва­ем на редак­ти­ро­ва­ние кон­фи­гу­ра­ци­он­ный файл:

vi /etc/squid/squid.conf

Если сеть кли­ент­ских ком­пью­те­ров отли­ча­ет­ся от стан­дарт­ной (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), необ­хо­ди­мо ее доба­вить в acl, например:

acl localnet src 217.66.157.0/24

или через файл:

acl localnet src "/etc/squid/acl_localnet"

* кавыч­ки обязательны
** после необ­хо­ди­мо создать файл /etc/squid/acl_localnet и с каж­дой строч­ки пере­чис­лить раз­ре­шен­ные IP-адреса.

Что­бы раз­ре­шить весь тра­фик, добав­ля­ем сле­ду­ю­щую строчку:

http_access allow all

* важ­но, что­бы она была выше запре­ща­ю­щей — http_access deny all

 

Настра­и­ва­ем дирек­то­рию для кэша:

cache_dir ufs /var/spool/squid 4096 32 256

* где ufs — фай­ло­вая систе­ма (ufs для SQUID явля­ет­ся самой под­хо­дя­щей); /var/spool/squid — дирек­то­рия хра­не­ния кэша; 4096 — объ­ем про­стран­ства в мега­бай­тах, кото­рое будет выде­ле­но под кэш; 32 — коли­че­ство ката­ло­го пер­во­го уров­ня, кото­рое будет созда­но для раз­ме­ще­ние кэша; 256 — коли­че­ство ката­ло­го вто­ро­го уров­ня, кото­рое будет созда­но для раз­ме­ще­ние кэша.

Теперь созда­ем струк­ту­ру папок под кэш сле­ду­ю­щей командой:

squid -z

И уже мож­но запус­кать squid:

systemctl start squid

Не забы­ва­ем раз­ре­шить его автозапуск:

systemctl enable squid

Проверка

Захо­дим в настрой­ки бра­у­зе­ра и настра­и­ва­ем исполь­зо­ва­ние прок­си-сер­ве­ра. Напри­мер, в Mozilla Firefox настрой­ки нуж­но выста­вить такими:

* где 192.168.163.166 — IP-адрес мое­го прокси-сервера.

Теперь откры­ва­ем сайт 2ip.ru. После его загруз­ки мы уви­дем внеш­ний IP-адрес — он дол­жен соот­вет­ство­вать той сети, от кото­рой рабо­та­ет настро­ен­ный SQUID.

Прозрачный прокси

Про­зрач­ный прок­си поз­во­ля­ет авто­ма­ти­че­ски исполь­зо­вать прок­си-сер­вер, не настра­и­вая при этом бра­у­зер ком­пью­те­ра. Поль­зо­ва­те­ли могут даже не знать, что тра­фик идет через squid.

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл:

vi /etc/squid/squid.conf

Нахо­дим строчку:

http_port 3128

И при­во­дим ее к сле­ду­ю­ще­му виду:

http_port 3128 transparent

И пере­за­гру­жа­ем squid:

systemctl restart squid

Squid + HTTPS

Спе­ци­аль­но настра­и­вать https для squid в CentOS 7 мне не при­шлось — все зара­бо­та­ло по умолчанию.

Авторизация по логину и паролю

Откры­ва­ем кон­фи­гу­ра­ци­он­ный файл:

vi /etc/squid/squid.conf

Встав­ля­ем следующее:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param basic children 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 hours
acl auth_users proxy_auth REQUIRED

* где /usr/lib64/squid/basic_ncsa_auth — рас­по­ло­же­ние ncsa_auth (в зави­си­мо­сти от систе­мы может нахо­дить­ся в дру­гом ката­ло­ге); /etc/squid/auth_users — файл с логи­на­ми и паро­ля­ми; children 25 раз­ре­ша­ет 25 одно­вре­мен­ных под­клю­че­ний; SQUID PROXY — про­из­воль­ная фра­за для при­вет­ствия; credentialsttl 3 hours будет дер­жать сес­сию 3 часа, после потре­бу­ет­ся повтор­ный ввод логи­на и пароля.

И после:

http_access deny !Safe_ports

Добав­ля­ем:

http_access allow auth_users

Созда­ем файл с поль­зо­ва­те­ля­ми и созда­ем первую пару логи­на и пароля:

htpasswd -c /etc/squid/auth_users user1

* если систе­ма вер­нет ошиб­ку «bash: htpasswd: command not found» уста­но­вим htpasswd коман­дой yum install httpd-tools

Созда­ем вто­ро­го пользователя:

htpasswd /etc/squid/auth_users user2

И пере­за­гру­жа­ем squid:

systemctl restart squid

Исходящий сетевой интерфейс

На нашем сер­ве­ре может быть несколь­ко внеш­ний IP-адре­сов. По умол­ча­нию, все исхо­дя­щие запро­сы будут рабо­тать через интер­фейс со шлю­зом по умол­ча­нию. Что­бы иметь воз­мож­ность рабо­ты со squid через раз­ные интер­фей­сы в настрой­ку вносим:

vi /etc/squid/squid.conf

acl 217_66_157_33 localip 217.66.157.33
tcp_outgoing_address 217.66.157.33 217_66_157_33

acl 217_66_157_34 localip 217.66.157.34
tcp_outgoing_address 217.66.157.34 217_66_157_34

* в дан­ном при­ме­ре, при под­клю­че­нии к прок­си через IP 217.66.157.33, исхо­дя­щие паке­ты будут от IP 217.66.157.33; ана­ло­гич­но для IP 217.66.157.34.