Работа мессанджера Whatsapp через прокси-сервер Squid 4.9
В работе имеется прокси-сервер Squid 4.9, работающий с HTTPS поддержкой. Столкнулся с проблемой в работе мессанджера Whatsapp (Web, Desktop версии) на конечных системах.
Проблема заключается в том что web, desktop версии Whatsapp не соединяются со своими серверами и выдают сообщение что отсутствует подключение к сети интернет. В логах Squid access.log
видны следующие события при попытке Whatsapp установить соединение:
1582785108.113 154 10.10.15.9 TCP_MISS/400 231 GET https://web.whatsapp.com/ws - ORIGINAL_DST/31.13.72.52 -
1582785108.278 161 10.10.15.9 TCP_REFRESH_MODIFIED/200 390 GET https://web.whatsapp.com/status.json - ORIGINAL_DST/31.13.72.52 text/json
Видно что приложение пытается открыть WebSocket соединение, о чем свидетельствует /ws
в строке запроса. Так же в браузере при просмотре кода можно увидеть что не удается выполнить WebSocket соединение — WebSocket connection to 'wss://web.whatsapp.com/ws' failed: Error during WebSocket handshake: Unexpected response code: 400
Чтобы решить данную проблему нужно чтобы Squid не пытался посмотреть HTTPS трафик в направлении whatsapp адресов, а просто выполнял соединение.
Для этого создадим файл (прим. /etc/squid/sites_webwhatsapp.txt
) в котором укажем для каких сайтов не предпринимать никаких действий:
w[0-9]+\.web\.whatsapp\.com$
\.web\.whatsapp\.com$
web\.whatsapp\.com$
В конфигурационном файле /etc/squid/squid.conf
указываем следующие параметры:
acl whatsapp ssl::server_name_regex -i "/etc/squid/sites_whatsapp.txt"
acl step1 at_step SslBump1
ssl_bump splice whatsapp
ssl_bump peek step1
ssl_bump bump all
splice
должно быть до каких либо действий с HTTPS трафиком.Перечитываем конфиг — /etc/init.d/squid reload
и проверяем работу.
Обсуждение
Нет комментариев.