Как настроить локальный прокси-сервер 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 (поясняется здесь в качестве примера) это достигается путем перехода в меню (три сосиски в правом верхнем углу), а затем «Предпочтения»> «Дополнительно»> «Сеть»> «Соединение»> «Настройки» ... заполните поле НОСКИ! Поскольку ваш прокси находится в той же системе, вы можете использовать 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.