как аутентифицировать только один порт, когда Squid прослушивает 2 порта

Вопрос или проблема

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

# auth_param не показан, но работает

http_port 3128
http_port 3129
acl input_3128 myportname 3128
acl input_3129 myportname 3129
acl authenticated proxy_auth REQUIRED

http_access allow authenticated input_3129
http_access deny input_3129
http_access allow input_3128
http_access deny all

К сожалению, это не работает вовсе. Squid всегда требует аутентификацию.

пример запроса:

curl -v --proxy http://myproxy.example.com:3128 http://debian.org/

Ответ Squid:

* обрабатывается: http://debian.org/
10.1.2.3:3128...
* Подключено к myproxy.example.com (10.1.2.3) порт 3128
> GET http://debian.org/ HTTP/1.1
> Host: debian.org
> User-Agent: curl/8.2.1
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 407 Требуется аутентификация прокси
< Server: squid/5.9
< Mime-Version: 1.0
< Date: Ср, 23 Окт 2024 10:15:01 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 3511
< X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
< Vary: Accept-Language
< Content-Language: en
< Proxy-Authenticate: Basic realm="Squid proxy-caching web server"
< X-Cache: MISS from myproxy
< X-Cache-Lookup: NONE from myproxy:3129
< Via: 1.1 myproxy (squid/5.9)
< Connection: keep-alive
<

Вопрос

Как заставить Squid требовать аутентификацию только на порту 3129?

Ответ или решение

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

1. Анализ текущей конфигурации

Ваш текущий конфиг выглядит следующим образом:

# auth_param not shown but working

http_port 3128
http_port 3129
acl input_3128 myportname 3128
acl input_3129 myportname 3129
acl authenticated proxy_auth REQUIRED

http_access allow authenticated input_3129
http_access deny input_3129
http_access allow input_3128
http_access deny all

2. Исправление конфигурации

Ваша ошибка заключается в неправильном порядке правил доступа и в том, что проверки применяются к обоим портам. Ниже приведён исправленный пример конфигурации:

# Настройка портов
http_port 3128
http_port 3129

# Определение ACL для каждого порта
acl input_3128 myportname 3128
acl input_3129 myportname 3129

# ACL для аутентификации
acl authenticated proxy_auth REQUIRED

# Настройка правил доступа
# Разрешить доступ для неаутентифицированных пользователей на порту 3128
http_access allow input_3128
# Аутентификация обязательна для порта 3129
http_access allow authenticated input_3129
# Заблокировать доступ для неавторизованных на порту 3129
http_access deny input_3129

# Запретить доступ всем остальным
http_access deny all

3. Объяснение настроек

  • http_access allow input_3128: Этот параметр разрешает доступ к порту 3128 для всех пользователей без аутентификации. Таким образом, когда клиент обращается к этому порту, он не обязан проходить аутентификацию.

  • http_access allow authenticated input_3129: Это правило позволяет доступ только тем пользователям, которые успешно прошли аутентификацию, когда они пытаются подключиться к порту 3129.

  • http_access deny input_3129: Если пользователь не прошел аутентификацию, доступ к порту 3129 будет заблокирован.

4. Перезапуск Squid

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

sudo systemctl restart squid

5. Проверка конфигурации

Не забудьте проверить правильность вашей конфигурации:

squid -k parse

Если ошибок нет, теперь вы сможете использовать curl для тестирования вашего прокси-сервера.

6. Примеры запросов

Для проверки работы прокси-сервера можно использовать следующие команды:

Для порта 3128 (без аутентификации):

curl -v --proxy http://myproxy.example.com:3128 http://debian.org/

Для порта 3129 (с аутентификацией), вам потребуется указать имя пользователя и пароль:

curl -v --proxy http://myproxy.example.com:3129 --proxy-user username:password http://debian.org/

Заключение

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

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

Капча загружается...