Як встановити локальний проксі-сервер SOCKS, який тунелює трафік через SSH?


30

Припустимо, у мене є доступ до SSH-сервера, який підтримує тунелювання, і я перебуваю на ПК, на якому працює * ubuntu, як я можу налаштувати локальний проксі-сервер SOCKS, який тунелює трафік через цей SSH-сервер, перш ніж вийти в Інтернет?

Відповіді:


45

sshДвійковий файл , який використовується при підключенні до сервера з SSH підтримує роботу з SOCKS проксі з коробки з -Dпрапором. Приклад:

ssh -D 1337 -f -C -q -N user@remote -p 22
  • -D 1337повідомляє sshзапустити локально сервер SOCKS на порт 1337.
  • -f виводить процес на другий план.
  • -C Включається стиснення.
  • -q вмикає "Тихий режим", оскільки мета тут полягає лише в тунелі, ми насправді не піклуємося про вихід помилок і подібне.
  • -Nповідомляє, sshщо команди не надсилатимуться ( -fскаржиться, якщо ми цього не вкажемо).
  • -pвказує, який порт використовувати; очевидно, що це значення за замовчуванням до 22, тому твердження вище безглуздо, але включене для ясності.

Коли ваш сервер SOCKS запущений, вам просто потрібно переконатися, що ваша програма (як правило, веб-браузер) намагається підключитися до локального проксі-сервера SOCKS, а не до звичайного Інтернету.

У Firefox 29 (пояснено тут як приклад), це досягається, перейшовши до меню (три ковбаски у верхньому правому куті), далі Параметри> Додатково> Мережа> (З'єднання)> Налаштування ... - переконайтеся, що ви тільки заповніть поле SOCKS! Оскільки ваш проксі-сервер знаходиться в одній і тій же системі, ви можете використовувати localhostабо 127.0.0.1вказувати назад на будь-який порт, який ви встановили в тій самій системі.

Якщо вам потрібні також тунельні запити DNS (якщо їх немає, ваші пошукові запити DNS розкриють, які веб-сайти ви намагаєтесь відвідати), ви можете просто перевірити "Віддалений DNS" або також виконати всю цю конфігурацію about:config. В останньому випадку відкрийте його та встановіть ці значення:

network.proxy.socks : 127.0.0.1
network.proxy.socks_port : 1337
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

Вам також може знадобитися цей параметр, щоб виключити певні домени чи сайти з тунелювання:

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.0.0/24, .yourcompany.com

Ця відповідь була написана з Франції, але тунель через Швецію :)


Це працювало б лише на firefox.
— Брайам

4
Це ніяким чином не Firefox, я включив розділ Firefox як сервіс, оскільки для цього зазвичай використовують SSH тунелювання, він буде працювати в будь-якій програмі, яка підтримує проксі-сервери SOCKS (ssh не хвилює).
— pzkpfw

2
Якщо говорити про налаштування браузера для використання проксі. Якщо ви використовуєте google chrome, вам потрібно буде оголосити проксі-сервер у мережевих налаштуваннях ubuntu, оскільки саме цим буде користуватися google chrome. Неофіційні параметри CLI доступні для оголошення проксі без цього. Але станом на кілька тижнів тому це вже неможливо.
— MadMike

Спасибі, ви вивели мене з пекла. І я потрапив туди лише тому, що не прочитав вашої відповіді близько 10 годин тому. Повинні були звернути увагу -Dі -pрозлучитися.
— озера

Також простіше запам’ятати:ssh -D 1337 user@host
— Алкалін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.