Как настроить локальный прокси-сервер SOCKS, который туннелирует трафик через SSH?

30

Предположим, у меня есть доступ к SSH-серверу, который поддерживает туннелирование, и я нахожусь на ПК с запущенной * ubuntu, как мне настроить локальный SOCKS-прокси, который туннелирует трафик через этот SSH-сервер, прежде чем попасть в Интернет?

PzKpfw
источник

Ответы:

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

Этот ответ был написан из Франции, но переправлен через Швецию :)

PzKpfw
источник
Это только будет работать на Firefox.
Брайам
4
Это никоим образом не относится к Firefox, я включил раздел Firefox в качестве службы, поскольку именно для этого люди и используют SSH-туннелирование; он будет работать в любом приложении, поддерживающем прокси-серверы SOCKS (ssh не заботится).
pzkpfw
2
Кстати, о настройке браузера на использование прокси. Если вы используете Google Chrome, вам нужно будет объявить прокси в сетевых настройках Ubuntu, так как именно это будет использовать Google Chrome. Неофициальные опции CLI были доступны для объявления прокси без этого. Но несколько недель назад это уже невозможно.
MadMike
Спасибо, ты вытащил меня из ада. И я попал туда только потому, что не прочитал ваш ответ должным образом около 10 часов назад. Надо было обратить внимание -Dи на -pчасть.
Озеро
Также легче запомнить:ssh -D 1337 user@host
Алкалин