2016-03-25 8 views
4

Я пытаюсь настроить прозрачный прокси для всех типов фреймов (HTTP, HTTPS), я использую tinyproxy для этого. Я уже настроил маршрутизатор для перенаправления (используя NAT) всех входящих и исходящих кадров на tinyproxy (который прослушивает порт 8888).tinyproxy не удалось переслать методы подключения

Я попытался получить доступ к веб-сайту HTTPS (https://www.google.com/), но я получил ошибку подключения SSL. Просматривая tinyproxy журналы, я вижу следующее:

CONNECT Mar 24 23:34:27 [22533]: Connect (file descriptor 11): 128.112.94.38 [128.112.94.38] 
CONNECT Mar 24 23:34:27 [22533]: Request (file descriptor 11): 
WARNING Mar 24 23:34:27 [22533]: Could not retrieve all the headers from the client 
INFO  Mar 24 23:34:27 [22533]: Read request entity of 103 bytes 

tinyproxy документация говорит, что до тех пор, как я установил следующие строки в файле tinyproxy.conf, пересылка Connect кадров должны работать прозрачно:

# ConnectPort: This is a list of ports allowed by tinyproxy when the 
# CONNECT method is used. To disable the CONNECT method altogether, set 
# the value to 0. If no ConnectPort line is found, all ports are 
# allowed (which is not very secure.) 
# 
# The following two ports are used by SSL. 
ConnectPort 443 
ConnectPort 563 

Я также попытался удалить все строки ConnectPort, чтобы увидеть, работает ли это (это не так). Кто-нибудь знает, почему я не могу трансформировать HTTPS-трафик прозрачно?

ответ

0

Вы не используете термин «кадр» (L2) в обычном сетевом смысле, то есть лучше использовать термины TCP или HTTP/HTTPS (L6/7).

tinyproxy будет иметь дело либо с соединениями HTTP прокси-запросов, из которых CONNECT является один тип, или не-прокси HTTP запросов, когда в прозрачном режиме (который вы можете подтвердить включен в список функций, показанного с tinyproxy -h).

Когда браузер настроен на использование прокси-сервера, он соответствующим образом изменяет свои исходящие запросы. В прозрачном режиме браузер не знает прокси (и не должен быть настроен с одним). Опция ConnectPort перечисляет порты, которые клиенты разрешают CONNECT (для предотвращения злоупотреблений) в обычном режиме прокси.

Если вы используете tinyproxy в прозрачном режиме для HTTPS, то нет CONNECT, и, что еще более важно, нет заголовков (именно по этой причине вы видите эту ошибку) и нет URL-адреса. Обычно части хоста/порта могут быть выведены/выведены из IP-адреса назначения, порта и расширения SNI - поскольку tinyproxy полагается на какой-либо внешний брандмауэр для перенаправления (смены IP-адреса), он не имеет полной информации для запроса.

В настоящее время tinyproxy может использоваться только как прозрачный HTTP-прокси, что-то о документации немного расплывчато. Без проверки HTTPS (то есть расшифровки подключений TLS) для доступа к клиентскому запросу он даже не может быть простым пересылкой TCP-соединений. Другие прокси, такие как squid, поддерживают TLS-проверку (sslbump).

0

У вас не может быть прозрачный прокси-сервер с HTTPS. Это побеждает всю цель SSL. Если вы пытаетесь переадресовать порт 443 (SSL/HTTPS), вы получите сообщение об ошибке SSL, потому что не разрешены атаки Man-in-the-Middle.

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