LINUX.ORG.RU
ФорумAdmin

Помогите расшифровать и победить сетевую проблему

 , , ,


0

2

Здравствуйте.

Для случаев, когда требуется проксирование сайтов, по каким-либо причинам недоступным напрямую, я использую privoxy, в настройках которого для каких-то нужных мне паттернов прописан соответствующий прокси-сервер. listen-address :8118, дело нехитрое.

С некоторых пор cтал сталкиваться с

piyavking@hata: ~ $ wget -O - https://www.сайт.com/
--2026-09-17 07:59:12--  https://www.сайт.com/
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Connecting to 127.0.0.1:8118... connected.
GnuTLS: The TLS connection was non-properly terminated.
Unable to establish SSL connection.

Firefox, соответственно, пишет, что

Secure Connection Failed

The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.
What can you do about it?

The issue is most likely with the website, and there is nothing you can do to resolve it. You can notify the website’s administrator about the problem.

Error Code: PR_END_OF_FILE_ERROR

Чисто органолептически пришёл к выводу, что коннект-то как таковой есть, просто есть какая-то маленькая, но очень важная штучка (вот это вот TLS/SSL), которая не пролазит, и из-за этого весь сыр бор. И на проводном, и на беспроводном соединении картина одинаковая.

Я не очень хорошо разбираюсь в таких вещах. Помогите, пожалуйста, более-менее понять, отловить, решить. Спасибо за внимание.

P.S. Перемудрил. Дело было просто в нескольких протухших проксях. Иногда полезнее быть дураком, нежели чем полудурком, и в дебри без нужды не лезть. Большое спасибо поучаствовамшим!

★★★★★

Последнее исправление: piyavking (всего исправлений: 3)
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

С этой стороны всё вроде должно быть чисто, я с несколькими «заведомо рабочими» проксями пробовал. Добегу до тачки, попробую в явной форме.

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 2)

Когда-то у меня был прозрачный прокси на squid, и мне пришлось от него избавиться из-за такой проблемы: разработчики дропнули поддержку «устаревших» версий протоколов, вроде SSL 3.0, TLS 1.1 и наборов шифров для них. А часть софта (не браузеры) все еще использовало те протоколы, и в результате все ломалось.

Возможно, privoxy делает нечто подобное, или согласует какой-то режим, который твой браузер не принимает.

Еще privoxy по умолчанию зачищает заголовки, что может ломать сайты.

Khnazile ★★★★★
()
Последнее исправление: Khnazile (всего исправлений: 1)
Ответ на: комментарий от Khnazile

Вряд ли виновато privoxy. Оно отлично работало. А сейчас на тех же самых сайтах, где оно отлично работало, происходит вышеописанное. Обновлений никаких на него не прилетало, конфиги его я не мучил...

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

Ну еще сами сайты могут детектить, что у тебя handshake не характерный для «настоящего» браузера и сразу глушить соединение. Например, для защиты от ai-ботов.

Прблема со всеми сайтами, или только с некоторыми?

Khnazile ★★★★★
()
Ответ на: комментарий от piyavking

А ты говоришь что раньше все работало на этом же конфиге? Может ты что то поменял и после этого сломалось? Попробуй curl-ом проверить, почитай с какими ключами его выполнить, чтоб побольше информации было.

Tesler
()

У wget есть ключик «игнорировать сертификат». Если на той стороне самоподписанный, то так и будет. Или если российский, а у тебя корневых от российских УЦ нет.

--no-check-certificate don't validate the server's certificate

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от Khnazile

handshake не характерный для «настоящего» браузера

Я даже не знаю, что это такое. И потом, в обозримые пару недель я настройки броузера абсолютно не трогал.

со всеми сайтами, или только с некоторыми?

Со всеми.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от Tesler

раньше все работало на этом же конфиге?

Да.

Может ты что то поменял и после этого сломалось?

Точно не трогал.

Попробуй curl-ом проверить

piyavking@headcrab: ~ $ curl -v -s https://сайт.com/
* Uses proxy env variable no_proxy == 'localhost,127.0.0.1,::1,192.168.1.1,192.168.0.1'
* Uses proxy env variable https_proxy == 'http://127.0.0.1:8118'
*   Trying 127.0.0.1:8118...
* CONNECT: no ALPN negotiated
* Establishing HTTP proxy tunnel to сайт.com:443
> CONNECT сайт.com:443 HTTP/1.1
> Host: сайт.com:443
> User-Agent: curl/8.22.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection established
<
* CONNECT phase completed for HTTP proxy
* CONNECT tunnel established, response 200
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* SSL Trust Anchors:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
* TLSv1.3 (OUT), TLS alert, decode error (562):
* TLS connect error: error:0A000126:SSL routines::unexpected eof while reading
* closing connection #0

Какое-то ALPN ещё вылезло...

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking
  • TLSv1.3 (OUT), TLS alert, decode error (562):

  • TLS connect error: error:0A000126:SSL routines::unexpected eof while reading

Болван говорит следующее:

  • сервер (или что-то между вами и сервером) разорвал соединение во время TLS-рукопожатия, не отправив ни корректного ответа, ни TLS-алерта. Соединение просто «оборвалось» (EOF — end of file).

Причины:

  • Система DPI (ТСПУ) обрывает соединение
  • Сервер не поддерживает TLS 1.3
  • Брандмауэр / прокси / VPN режет трафик
  • MTU-проблемы на маршруте

Видимо, наиболее вероятный первый вариант.

Можешь wireshark подрубить, посмотреть что там по рукопожатию. Если ответа нет - оно.

bbc69
()
Последнее исправление: bbc69 (всего исправлений: 1)
Ответ на: комментарий от bbc69

наиболее вероятный первый вариант

По этому вопросу и у меня сомнений ноль. Просто сформулировал аккуратненько. Но кроме «кто виноват?» существует ещё «что делать?». Оное тпсу не рвёт тлс при прямом соединении. По каким признакам оно узнаёт о наличии прокси? И как эти признаки прибить? Вот есть у меня аддон-аггрегатор Feedbro. Вот он совершенно спокойно (правда, без больших картинок) и отображает, и обновляет все потоки, несмотря ни на что. Значит, что-то как-то всё-таки просачивается...

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 2)
Ответ на: комментарий от firkax

Я несколько прокси пробовал. Вряд ли они все поломались с одинаковым симптомом.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от firkax

Я тебе так скажу. У меня была гипотеза, что он в алгоритмах шифорования запутался. Т.е. зашифровали одним, а расшифровали другим. Решил проверить себя и вот оно как получилось. Я бы в любом случае порекомендовал пакеты смотреть, чтобы видеть, кто на ком стоял. Будем считать, этим мы сократили себе путь.

bbc69
()
Ответ на: комментарий от piyavking

О том, как работает ТСПУ я тебе не скажу, да и никто не скажет. Но считатается, что он пытается понять, куда идёт трафиг по косвенным признакам. Видимо, характер больно подозрительный. Как-то так.

bbc69
()
Ответ на: комментарий от piyavking

Как я и говорил, я к wireshark’у привык. Скачиваешь, запускаешь и смотришь. Единственное, на живой системе довольно много пакетов ходит. Надо по возможности всё вырубить и фильтрацию настроить. У него есть клишный вариант tshark, но я его ни разу не пользовал, так что могу послать только к ману.

Если болван прав, то после пакета Client Hello ты вообще ничего не увидишь. Но это просто подтвердить гипотезу.

Если нет, там можно попробовать что-нибудь ещё выудить.

bbc69
()
Ответ на: комментарий от piyavking

Какая та же?

privoxy, насколько я знаю, сам терминирует tls, так что проблемы внешних соединений не должны на нём так отражаться.

Или не сам? Ты локальное CA ставил?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от bbc69

Наверное даже не признаются, что они создатели.

Эт да, я бы тоже «постеснялся» в содеянном признаваться.

anc ★★★★★
()
Ответ на: комментарий от firkax

Какая та же?

Что в посте описал. Просто руками в явной форме коннекчусь через оконечный прокси, минуя privoxy, и всё то же самое всё равно(

CA

Это про сертификаты? Какую настройку в конфиге смотреть?

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 1)
Ответ на: комментарий от piyavking

У privoxy есть фича HTTPS Inspection. Когда privoxy при обработке запроса CONNECT не прозрачно туннелирует TCP соединение, а терминирует TLS соединение от браузера, создаёт TLS соединение до сайта, и расшифровывает-туннелирует-шифрует заново нешифрованный контент. Настройки: https://www.privoxy.org/user-manual/config.html#HTTPS-INSPECTION-DIRECTIVES

Но если мимо privoxy ошибка та же, то privoxy не при чём.

TLS Alert это сообщение, которое сервер прислал клиенту. decode error в нём означает, что сервер не смог декодировать TLS Client Hello сообщение. В TLS Client Hello отсылается версия TLS и набор поддерживаемых криптосьютов. Что-то из этого серверу не нравится.

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 2)
Ответ на: комментарий от iliyap

Но если мимо privoxy ошибка та же, то privoxy не при чём.

Да. Но а если сделать, чтобы privoxy стало при чём?

У privoxy есть фича HTTPS Inspection

Проверил:

FEATURE_HTTPS_INSPECTION 	No

То есть моё привокси укомпилировано без этой кнопки. Получается, что есть смысл перекомпилировать, включить, и посмотреть, что будет. Спасибо за наводку!

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

Если у тебя он без этого, то скорее всего прокся дохлая. Ты её нашёл в списках бесплатных проксей в инете? Там работают 1 из 10, если не меньше, и обычно недолго.

firkax ★★★★★
()
Ответ на: комментарий от firkax

в списках бесплатных проксей в инете?

В чуть менее смешном источнике, но да, прокся протухла. И следующая. И следующая. А вот следующая выстрелила.

Вот оно упорство. Его надо было применять при переборе проксей, а не при конфиге привоксей)

Всем большое спасибо за отклики, соображения, знания, тема, хвала Небесам, на какое-то время решена)

piyavking ★★★★★
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария