2

192.168.2.4 - это машина, на которой работает Squid Proxy через порт 3128, а веб-сервер через порт 80 доступен только через этот прокси.

Если я бегу:

$ curl 192.168.2.4 --proxy 192.168.2.4:3128

Он отлично работает, и cURL выводит содержимое домашней страницы. Теперь, когда я пытаюсь использовать ProxyChains:

$ cat proxychains.conf
strict_chain
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
http 192.168.2.4 3128

$ proxychains curl 192.168.2.4
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-192.168.2.4:3128-<><>-192.168.2.4:80-<--denied
curl: (7) Couldn't connect to server

Не работает Кажется, он правильно подключается к Squid Proxy, но не к конечному веб-серверу.

Есть идеи, почему это так?

1 ответ1

1

Я обнаружил с wireshark , что при разговоре с прокси - curl использует GET в то время как proxychains использует CONNECT Разница объясняется здесь: в чем разница между «ПОДКЛЮЧИТЬ» и «ПОЛУЧИТЬ HTTPS»?

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

Теперь в статье в Википедии о HTTP-туннелировании говорится следующее:CONNECT:

Не все прокси-серверы HTTP поддерживают эту функцию, и даже те, которые поддерживают ее, могут ограничивать поведение (например, разрешать только подключения к стандартному HTTPS-порту 443 или блокировать трафик, который не является SSL).

Действительно, Siki Cache Wiki утверждает (выделение мое):

Важно отметить, что протоколы, проходящие через CONNECT , не ограничиваются теми протоколами, которые обычно обрабатывает Squid. Буквально все, что использует двустороннее TCP-соединение, может быть передано через туннель CONNECT . Вот почему списки ACL по умолчанию для Squid начинаются с deny CONNECT !SSL_Ports и почему у вас должна быть очень веская причина размещать над ними любые типы разрешающих правил.

Я предполагаю, что ваш squid.conf содержит такую строку:

http_access deny CONNECT !SSL_Ports

Я нашел ответ, который говорит, что достаточно прокомментировать эту строку. Проверено, все работает. Однако, если вы не хотите пробивать такую большую дыру в вашем прокси, попробуйте добавить следующие три строки в ваш squid.conf:

acl myserver dst 192.168.2.4
acl myport port 80
http_access allow CONNECT myserver myport
# the original uncommented line must be below, like this
http_access deny CONNECT !SSL_Ports

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .