LINUX.ORG.RU

Как прозрачный прокси узнаёт hostname соединения?

 ,


0

2

Привет! Надумал к самописному сжимающему прокси прикрутить прозрачный режим. Столкнулся с проблемой при TLS соединении: из первого «Client Hello» сообщения я могу получить только ip адрес назначения. Но сейчас очень мало сайтов на одном ip. DNS reverse lookup никак не помогает в этом случае. Благодарю за помощь.

★★

В http он идёт в хедере.

В https он тоже идёт в хедере, но ты его не увидишь. Непрозрачный сервер получит его вместе с HTTP CONNECT и лезть в трафик все равно не сможет.

Прозрачному придётся делать MitM на каждое соединение. Такое, наверное, возможно, но предварительная настройка левого CA на клиенте загубит все радости прозрачности.

Посему у меня к тебе вопросы:

  1. что-что ты хочешь? глобально, без твоих соображений по поводу реализации

  2. с чего ты взял, что это вообще возможно?

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

Выше товарищ уже ответил:

Without this extension a HTTPS server would not be able to provide service for multiple hostnames on a single IP address (virtual hosts) because it couldn’t know which hostname’s certificate to send until after the TLS session was negotiated and the HTTP request was made.

Просто нужно парсить Client Hello, в траффик лезть не нужно.

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

Не, ты меня не понял: у меня mitm прокси, но я не об этом: чтобы узнать имя remote host, оказалось, что не нужно залазить в траффик. Это важно, чтобы сгенерировать сертификат до отправки server hello.

Кстати, вчера прикрутил два режима: прозрачный и пропускающий. Теперь с андроида, находясь в тоннеле wireguard, можно пользоваться прокси, и в случае необходимости, переключать в пропускающий режим, не теряя доступ к простеньком веб-интерфейсу. Также с телефона могу графику и сжатие регулировать.

Прозрачный режим и нужен был, чтоб на телефоне заставить работать.

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

Задачи:

    1. со всеми TLS соединениями работать по протоколу http/2, даже если конечный сервер не поддерживает;
    1. сжимать графику, конвертируя в webp (настраивается через веб интерфейс);
    1. кешировать пережатое, чтобы при повторе быстро возвращать;
    1. использовать максимальное сжатие контента, пережимать всё в brotli, если браузер поддерживает;
    1. работать в прозрачном режиме, чтобы андроид мог внутри VPN (иначе прокси работает только с «белыми» ip);
    1. определять и пропускать часть соединений в forward режиме, чтобы на телефоне могли без проблем работать приложения, вроде телеграмчика;
    1. научиться работать с async/await логикой (ибо io) :)

У меня очень плохой интернет, и лучше его не сделать при текущих условиях, прокси выручает.

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

работать в прозрачном режиме, чтобы андроид мог внутри VPN (иначе прокси работает только с «белыми» ip);

Вот эти слова не понимаю. Что не так с VPN + непрозрачным?

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

У меня 6 андроид. Может в новых версиях можно настроить работу прокси при работающем VPN, но в моём случае я не знаю, как с подключенным wireguard заставить firefox на телефоне пропускать траффик через прокси на локальном адресе 10.*. *. *.

Есть настройки прокси в свойствах каждой локальной сети, есть в опциях about:config, но ни в том ни в другом случае проксирование не работает.

Ты знаешь как настроить?

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

Не знаю, не юзаю проксей, а VPN только на роутере.

t184256 ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.