Как связать SOCKS прокси?


10

Предисловие: Я ищу явные инструкции в том же формате, что и выше. То есть что-то вроде run: «… запустить команду X на машине A, затем команду Y на машине B…»

У меня есть рабочий прокси от моего ноутбука (машина A) до машины B:

[A]$ ssh -ND 8888 B

Я могу настроить Firefox для использования SOCKS прокси на локальном порту A 8888, и просмотр на A работает. Все идет нормально.

Но у меня также есть прокси-носки между машинами B и C:

[B]$ ssh -ND 8157 C

Так что я могу просматривать B, как если бы я был на C, устанавливая прокси-серверы Firefox B на 8157.

Есть ли способ связать два прокси, чтобы я мог использовать Firefox локально (на A) при подключении к C?

То есть каким-то образом пересылать все запросы Firefox на носки от A до C. A и C не могут видеть друг друга напрямую, но у меня везде есть полный root-доступ по SSH. Все машины Debian.

Обратите внимание, что я не хочу пересылать один порт, например, порт 80, но мне нужен полностью связанный SOCK прокси .


ты не должен просто сделать -L 8888:B:8157на [A]?
bdecaf

@bdecaf В дополнение к данным командам? Вместо? Нет изменений в настройках FireFox?
user124114

Просто для [A]. Остальное как вы описываете.
bdecaf

ssh -L 8888:B:8157терпит неудачу, требует параметра имени хоста. Можете ли вы дать более полный, сквозной ответ? Если это сработает, я приму.
user124114

B действительно название вашей машины?
bdecaf

Ответы:


12

Просто подтвердил, что это работает с некоторыми виртуальными машинами:

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

От А , вы открываете порт вперед туннель от 8888 до 8157 локально на B -L8888:localhost:8157 . После того, как вы установили соединение с B, удаленная команда ssh -t -D 8157 user@Cвыполняется, которая обеспечивает ваш SOCKS прокси через C . Из того, что я прочитал, кажется, что -t требуется, хотя мне еще предстоит выяснить, почему.

Заметим, что это одна команда на первом хосте , который вызывает SSH в два раза, от A-> B и от B-> C . Вы также можете разбить это на отдельные команды, как описано ниже.

Бонус: для объединения трех прокси ...

Т.е. A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

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

Ссылки:


Перевод, строка за строкой: - 1. Сделайте динамический порт вперед от хоста B на 57, откройте порт 56 от B, выставьте порт 55 от B. - 2. Сделайте форвард динамического порта на порт 56 от хоста C, Expose порт 55 от C - 3. Выполните динамическую переадресацию порта на порт 55 с хоста D - конечным результатом является прокси Socks от каждого хоста через SSH на каждом шаге. Порты с 57 по 55 будут содержать прокси с конечными точками в B, C и D.
Рэй Фосс

Есть ли у вас бесплатные ssh прокси? Я не нашел ни одного.
Aemonge

4

Отличный ответ glallen с использованием SSH сделает работу. Тем не менее, правильный способ сделать это - использовать proxychainsпрограмму. ProxyChains - это мощный инструмент, который позволяет вам легко использовать несколько прокси-серверов одновременно. Например, он используется хакерами, чтобы скрыть свою идентификацию при выполнении интернет-атак - объединяя в цепочку множество прокси по всему миру, судебным следователям становится практически невозможно отследить весь трафик до них. Нельзя сказать, что вы злонамеренный хакер - он будет работать для многих разных вариантов использования. ;)

ProxyChains устанавливается по умолчанию в некоторых дистрибутивах Linux (например, Kali Linux). Например, в Ubuntu / Debian вы можете легко установить его, выполнив:

  • sudo apt-get install proxychains

Proxychains ищет файл конфигурации по адресу /etc/proxychains.conf. После его установки сделайте резервную копию существующего файла конфигурации Proxychains (если он существует) и создайте новый:

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

Теперь вставьте в этот пример конфигурацию, которую я написал для вас:

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

В этом примере 192.168.1.1это IP-адрес первого прокси-сервера SOCKS, 8888порт, который прослушивает первый прокси-сервер SOCKS, 192.168.1.2IP-адрес второго прокси-сервера SOCKS, 8157порт, который прослушивает второй прокси-сервер SOCKS, и так далее.

Теперь используйте прокси-цепочки, proxychains firefoxзапустив Firefox из командной строки. (Сначала убедитесь, что Firefox закрыт.) Теперь, когда Firefox устанавливает исходящее соединение, программа proxychains инкапсулирует трафик так, что он будет передаваться через все серверы, указанные в этом файле конфигурации. Чтобы было ясно, в ваших настройках Firefox не следует указывать ЛЮБЫЕ прокси-серверы - прокси-цепочки позаботятся обо всем за кадром.

Обратите внимание, что в целях устранения неполадок, вы, вероятно, должны попытаться заставить его работать, используя 1 прокси за один раз, прежде чем пытаться все 3.;)

Ссылки:

  • Официальный веб-сайт proxychains (последняя версия 3.1, выпущенная в 2006 году): http://proxychains.sourceforge.net
  • Веб-сайт для proxychains-ng(ветвь исходных прокси-цепей, которая фактически сохраняется на 2015 год): https://github.com/rofl0r/proxychains-ng

Цепочки прокси также настраивают прокси для вас? или просто помочь подключиться к существующим прокси?
выпал

Прокси-цепочки будут подключаться только к существующим прокси-серверам.
Джеймс

Если это так, то я не согласен с фразой «правильный путь к…», поскольку речь идет конкретно о настройке прокси-серверов для цепочки на нескольких машинах, а не просто о направлении firefox на существующие прокси-серверы. Возможно - «альтернативный метод, как только прокси будут установлены» был бы информативным, не подразумевая, что использование прямого ssh как-то неуместно . Хорошая дополнительная справочная информация, однако. Спасибо. Отредактируйте и вы получите мой ответ.
выпал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.