Вопрос или проблема
Я только что настроил 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
В этом примере:
- Мы создали
acl
для определения URL-адресов WebSocket. - На первом и втором шагах мы используем команду
peek
, чтобы получать информацию о соединениях, не расшифровывая их. - На третьем шаге
ssl_bump bump !web_sockets all
говорит Squid не бампить соединения, которые соответствуют ACLweb_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. Если проблема продолжает существовать, пожалуйста, предоставьте дополнительные сведения о логах и конфигурации, чтобы мы могли углубиться в диагностику.