Squid - это бесплатное программное обеспечение с открытым исходным кодом и прокси-сервер для веб-кошинга, который поддерживает HTTP, HTTPS, FTP и другие протоколы. Кэшируя и повторно используя часто запрошенные веб-страницы, кальмар сохраняет пропускную способность и улучшает время реагирования, делая доступ к веб-страницам очень быстрым. Squid имеет обширные возможности контроля доступа, что делает его отличным серверным ускорителем.

Эта статья объясняет, как установить и настроить Squid Proxy Server на AlmaLinux 10.1.

Предпосылки

  • Сервер под управлением AlmaLinux 10.1 или любой другой RHEL дистрибутив Linux.
  • Привилегии пользователя: пользователь root или обычный пользователь с привилегиями sudo

Конвенции

1
2
# — данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ – данные команды должны выполняться от имени обычного пользователя.

Шаг 1. Обновите систему

Мы предполагаем, что у вас установлена ​​новая версия AlmaLinux 10.1. Нам необходимо обновить системные пакеты до последних доступных версий. Для этого выполните следующие команды:

1
sudo dnf update -y && sudo dnf upgrade -y

Система может нуждаться в перезагрузке после обновления.

1
sudo reboot -f

Шаг 2. Включите репозиторий EPEL

EPEL имеет набор высококачественных дополнительных пакетов для Enterprise Linux. Пакет Squid не доступен для AlmaLinux на системных хранилищах по умолчанию, отсюда и необходимость установки EPEL.

Чтобы установить epel-release, выполните команду ниже:

1
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.1.noarch.rpm

Шаг 3. Установка Squid Proxy Server

Запустите команду, приведенную ниже, чтобы установить Squid Proxy Serve

1
sudo dnf install squid -y

Шаг 4. Запустить и включить Squid

Чтобы запустить и включить Squid и включить его при перезагрузке:

1
2
sudo systemctl start squid
sudo systemctl enable squid

Шаг 5. Разрешить Squid на Firewall

Если ваш сервер работает и включается, то он позволяет клиентским машинам достичь его. Запустите команды ниже, чтобы включить Squid на брандмауэре.

1
2
sudo firewall-cmd --add-service=squid --permanent
sudo firewall-cmd --reload

Если Squid настроен для прослушивания из другого порта, кроме номера порта по умолчанию 3128, то настройте брандмауэр следующим образом:

1
2
sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload

Затем запустите SELinux в режиме исполнения, назначив порт на определение типа порта squid_port_t:

1
sudo semanage port -a -t squid_port_t -p tcp 3128

Squid обычно прослушивает порт 3128 по умолчанию. Если вы хотите изменить порт обслуживания, редактируйте Squid файл конфигурации.

1
sudo nano /etc/squid/squid.conf

Этот раздел:

1
2
3
# Squid normally listens to port 3128
 http_port 3128
# http_port 3128 transparent

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

1
http_port 8080

Если вы хотите настроить конкретный IP-адрес, через который слушает сервис Squid, вы можете сделать это:

1
http_port [YOUR IP ADDRESS]:3128

Чтобы добавить несколько параметров http_port для Squid, чтобы выслушать как номера портов, так и IP-адреса:

1
2
http_port 192.168.102.20:3128
http_port 192.168.102.21:8080

Затем перезагрузите Squid:

1
sudo systemctl restart squid

Вот как вы устанавливаете Squid Proxy Server на AlmaLinux 10.1. Теперь мы кратко проверим функциональность тестирования Squid.

Шаг 6. Тестирование функциональности Squid

Есть два метода тестирования Squid функциональности на вашей локальной системе.

Метод 1: Использование команды squidclient

Команда squidclient выводит ответ на веб-запрос, аналогичный wget или curl. В отличие от wget и curl, squidclient автоматически подключается к настройке Squid, localhost:3128.

На вашей командной строке и как обычный пользователь или пользователь sudo выдайте эту команду:

1
squidclient http://www.example.com

Метод 2: Использование веб-браузера – Firefox

Вы можете выполнить вышесказанное, установив своего локального хоста в качестве прокси и 3128 в качестве номера порта. Затем загрузите свою страницу и проверьте заголовки ответов в панели Network браузера Inspector или Developer Tools.

Остановить, перезагрузить и перезапустить Squid.

Выдать команды ниже:

1
2
3
sudo systemctl reload squid
sudo systemctl restart squid
sudo systemctl stop squid

Удалить Squid

Чтобы полностью удалить Squid из вашей системы, удалите каталог /etc/cache/squid вручную.

Шаг 7. Дополнительные конфигурации Squid

Файл конфигурации squid по умолчанию расположен на /etc/squid/squid.conf. Этот файл имеет минимальные рекомендуемые конфигурации для Squid Proxy Server. Прокси доступен для localhost по умолчанию номер порта 3128.

Чтобы настроить свои собственные конфигурации, сделайте копию этого файла.

1
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Образец вывода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#
# Recommended minimum configuration:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access allow all
# Squid normally listens to port 3128
 http_port 3128
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

Настройка списка контроля доступа

Squid имеет подробную систему контроля доступа к прокси-серверу. Эти списки контроля доступа (ACL) - это списки, основанные на правилах, которые обрабатываются в последовательном порядке. ACL’s должны быть определены до их использования. Default ACL’s, такие как all и localhost, уже существуют.

Как показано, синтаксис ACL.

1
acl ACL_NAME TYPE DATA
  • ACL_NAME – Может быть выбран произвольно
  • TYPE – Вы можете выбрать тип из различных вариантов, найденных в разделе ACCESS CONTROLS в файле /etc/squid/squid.conf.
  • DATA – Зависит от индивидуального типа ACL, например, хостов, IP-адресов и т.д

Пример: Разрешение хостов в 192.168.58.0/24 сеть для доступа к интернету через прокси-сервер, редактировать /etc/squid/squid.conf и добавить запись UCL, как показано ниже.

1
2
3
4
5
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl internal src 192.168.58.0/24 # Allow Internal hosts
...

Затем позвольте доступ из сети на основе вашего определенного ACL выше.

1
2
3
4
5
6
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl internal src 192.168.58.0/24 # Allow Internal hosts
http_access allow internal
...

Блокирование нежелательных сайтов

Чтобы заблокировать определенный сайт, например dzen, создайте файл, который определяет домен этого веб-сайта. как показано ниже.

1
sudo nano /etc/squid/restricted-sites.squid

Затем добавьте список всех сайтов, которые вы хотите заблокировать. Каждый должен начинаться с точки. точка указывает, что вы блокируете подсайты основного сайта

1
.dzen.ru

Затем создайте ACL для заблокированных/ограниченных сайтов в /etc/squid/squid.conf и установите правило deny для определенного правила.

1
2
3
4
5
6
7
8
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl internal src 192.168.58.0/24 # Allow Internal hosts
acl blockedsites dstdomain "/etc/squid/restricted-sites.squid" # For blocked/restricted sites
http_access deny blockedsites
http_access allow internal
...

Блокировать сайты с определенными словами

Как и блокирование веб-сайтов на домене, вы можете заблокировать веб-сайты с определенными ключевыми словами.

Создайте файл с ключевыми словами

1
sudo nano /etc/squid/block_keywords.squid

Определение списка всех ваших ключевых слов для ограничения

1
2
gamble
games

Затем измените свой файл конфигурации:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
...
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
acl internal src 192.168.58.0/24 # Allow Internal hosts
acl blockedsites dstdomain "/etc/squid/restricted-sites.squid" # For blocked/restricted sites
acl keyword-ban url_regex "/etc/squid/block_keywords.squid"
http_access deny blockedsites
http_access deny block_keywords
http_access allow internal
...

Шаг 8. Настроить клиентов для использования Squid Proxy

Это может быть достигнуто путем установки общесистемных конфигураций прокси, настройки клиентов, чтобы использовать Squid Proxy в качестве шлюза или путем настройки параметров прокси в вашем браузере.

Системный прокси-конфигурации

Чтобы настроить общесистемную конфигурацию прокси, создайте файл в /etc/profile.d с переменными среды, определяющими Squid данные Proxy Server.

1
sudo nano /etc/profile.d/squid.sh

Определите детали вашего Squid Proxy Server:

1
2
3
4
5
6
7
8
PROXY_URL="192.168.201.2:3128"
HTTP_PROXY=$PROXY_URL
HTTPS_PROXY=$PROXY_URL
FTP_PROXY=$PROXY_URL
http_proxy=$PROXY_URL
https_proxy=$PROXY_URL
ftp_proxy=$PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy  

Затем создайте свой файл конфигурации.

1
source /etc/profile.d/squid.sh

Настройка на браузере

Чтобы настроить прокси-сервер с Squid на вашем браузере Firefox, перейдите в Настройки > Общие > Параметры сети > Конфигурация ручного прокси

Проанализируйте журналы сервера:

1
sudo tail -f /var/log/squid/access.log 

Завершение

Это было пошаговое руководство о том, как установить и настроить прокси-сервер Squid на AlmaLinux 10.1.

Вы можете поделиться статьей со своими друзьями в социальных сетях, которым может быть интересна эта статья или просто оставить комментарий ниже. Спасибо.