Як ланцюжок проксі-серверів SOCKS?


10

Вступ: Я шукаю чіткі інструкції у тому ж форматі, що і вище. Тобто щось на кшталт запуску: "... запустіть команду X на машині A, а потім команду Y на машині B ..."

У мене є робочий проксі-носок від мого ноутбука (машина A) до машини B:

[A]$ ssh -ND 8888 B

Я можу налаштувати Firefox використовувати проксі-сервер SOCKS на локальному порту 8888A та переглядати A-режим. Все йде нормально.

Але у мене також є проксі-шкарпетка між машинами B і C:

[B]$ ssh -ND 8157 C

Таким чином, я можу переглядати B, як якщо б я був на C, встановлюючи Firefox проксі-носки B на 8157.

Чи є спосіб з'єднати два проксі, щоб я міг використовувати Firefox локально (на A) під час використання з'єднання з C?

Тобто, якимось чином пересилаю всі запити шкарпеток Firefox на всьому шляху від A до C. A і C не бачать один одного безпосередньо, але у мене повний корінний доступ SSH скрізь. Усі машини Debian.

Зауважте, що я не хочу пересилати жодного порту, як порт 80, але хочу повністю проксі-ланцюг проксі SOCK .


ви не повинні просто зробити -L 8888:B:8157[A]?
bdecaf

@bdecaf Окрім заданих команд? Натомість? Немає змін у налаштуваннях FireFox?
користувач124114

Тільки для [A]. Решта, як ви описуєте.
bdecaf

ssh -L 8888:B:8157не вдається, потрібен параметр імені хоста. Чи можете ви дати більш повну відповідь? Якщо це спрацює, я прийму.
користувач124114

це 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, Розкрити порт 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.2це IP-адреса другого проксі-сервера SOCKS, 8157це порт, на якому прослуховується другий проксі-сервер SOCKS, і так далі.

Тепер, використовуйте proxychains, виконуючи 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

Чи встановлюють проксі-ланцюги проксі-сервера і для вас? чи просто допомогти вам підключитися до існуючих проксі-серверів?
glallen

Проксі-ланцюги підключатимуться лише до існуючих проксі-серверів.
Джеймс

Якщо це так, то я не погоджуюся з фразою "правильний шлях до ...", оскільки питання конкретно стосується налаштування проксі-серверів для прив’язки на декількох машинах, а не просто спрямування Firefox на існуючі проксі. Можливо - "альтернативний метод, коли проксі-сервери будуть на місці", був би інформативним, не маючи на увазі, що використання прямого ssh якимось чином неправильне . Хоча додаткова додаткова інформація. Дякую. Редагуйте, і ви отримаєте мою нагороду.
glallen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.