Squid3 прокси-сервер ssl-bump блокирует Web Socket соединения

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

Я только что настроил Squid Server 3.5.26 на Ubuntu 16.04.2 LTS с конфигурацией SSL-bump. HTTP и HTTPS работают отлично, но любые веб-сервисы, которые требуют Web Sockets, не работают, например, тест скорости.

Я добавил следующие строки в свою конфигурацию squid, пытаясь заставить соединение работать напрямую и предотвратить кэширование SSL для соединений веб-сокетов.

#Временно разрешить все соединения для отладки
http_access allow all

acl bump-bypass dstdomain 192.168.0.245 .speedtest.net
# URL содержит ws (большинство URL веб-сокетов это делают)
acl ssl-web-sockets SSL::server_name_regex \/ws

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice bump-bypass ssl-web-sockets tcp-web-sockets

#Я читал, что была ошибка в bump, которая требовала !explicitly 
# чтобы splice работал для веб-сокетов
ssl_bump bump !ssl-web-sockets all

#просто bump all тоже не работает
#ssl_bump bump all

Если я отключаю ssl_bump и не расшифровываю зашифрованный трафик, всё работает отлично.

Как я могу настроить squid для разрешения прямого подключения веб-сокетов?

Обновление

Обновлен до Squid Server 4.0.21 и добавлено в конфигурацию

on_unsupported_protocol tunnel all 

Документация говорит, что это должно позволить TCP-туннельные соединения

К сожалению, это тоже не исправило проблему, по-прежнему возникает ошибка веб-сокетов

Соединение закрыто до получения ответа на рукопожатие

Разве это не acl в вашем squid.conf?

Я думаю, вам нужно написать
acl step1 at_step SslBump1
вместо
ssl_bump step1 at_step SslBump1

С уважением,
Йожеф

К счастью, в моей конфигурации speedtest.net работает отлично.
Моя конфигурация здесь:

acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3

ssl_bump peek step1 all
ssl_bump peek step2 all
ssl_bump bump all

Теперь step3 acl не нужен, но в этой конфигурации нет “белого списка” (списка URL, не подлежащих bump).

Я думаю, что это не сильно отличается, но я использую это на Debian 8.7.

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

К сожалению, настройки прокси-сервера Squid с использованием SSL-Bump могут быть несколько сложными, особенно когда дело касается подключения WebSocket. Позвольте мне помочь вам настроить ваш Squid Proxy для корректной работы с WebSocket-соединениями.

Во-первых, проблема с вашим текущим конфигом может заключаться в том, что обработка WebSocket не была корректно реализована. Убедитесь, что вы используете правильные ACL и порядок обработки каждого шага.

Вот пример конфигурации, который может помочь вам:

# Разрешаем доступ ко всем для отладки (позже скорректируйте это)
http_access allow all

# Определяем ACL для WebSocket
acl web_sockets url_regex ^wss:// | ^ws://

# Определяем шаги для SSL Bump
acl step1 at_step SslBump1
acl step2 at_step SslBump2

# На первом шаге мы "подсматриваем" соединения
ssl_bump peek step1 all
# На втором шаге мы также "подсматриваем"
ssl_bump peek step2 all
# На третьем шаге мы бампим все URL, кроме WebSocket
ssl_bump bump !web_sockets all

# Включаем туннелирование для неподдерживаемых протоколов
on_unsupported_protocol tunnel all

В этом примере:

  1. Мы создали acl для определения URL-адресов WebSocket.
  2. На первом и втором шагах мы используем команду peek, чтобы получать информацию о соединениях, не расшифровывая их.
  3. На третьем шаге ssl_bump bump !web_sockets all говорит Squid не бампить соединения, которые соответствуют ACL web_sockets, тем самым они будут обработаны как обычные TCP-соединения и их не будет нужно расшифровывать.

Также убедитесь, что ваш Squid имеет доступ к CA-сертификатам, необходимым для правильной работы с SSL. Важно правильно настроить сертификаты в конфигурации самого Squid.

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

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

sudo systemctl restart squid

Для проверки состояния и диагностики используйте логи Squid:

tail -f /var/log/squid/access.log
tail -f /var/log/squid/cache.log

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

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

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