Как настроить прокси-сервер Socks с помощью туннеля SSH
Мы можем настроить прокси-сервер socks поверх туннеля SSH. Помимо общих функций прокси, таких как просмотр веб-страниц, прокси поверх туннеля SSH также обеспечивает безопасность между браузером и прокси-сервером (сервером SSH). В этом посте мы представляем и объясняем, как настроить прокси-сервер через SSH-туннель и его механизм.
Оглавление
- Создание прокси-сервера ssh
- 1) Прокси-сервер слушает только порт localhost
- 2) Прокси-сервер, прослушивающий определенный IP-адрес
- Прокси-сервер squid для перенаправления портов
- Глобальный прокси в GNOME с NetworkManager в Linux
- Создание и использование прокси-сервера Socks в Windows
- Использование Socks Proxy на iOS
Начнем с простого примера. У нас есть доступ к sshd-серверу
sshd_server, и мы хотим использовать его в качестве прокси-сервера socks5. Это просто с помощью ssh:
Code:
$ ssh -D 8080 username@sshd_server
или, чтобы разрешить удаленным хостам также использовать прокси socks5,
Code:
$ ssh -g -D 8080 username@sshd_server
После этого настройте браузер, например прокси-сервер Firefox, на использование прокси-сервера socks5 127.0.0.1:8080. Это оно!
Затем проверьте, является ли ваш IP-адрес прокси-сервером с точки зрения веб-сайтов.
Создание прокси-сервера ssh
Мы можем настроить более сложный прокси-сервер через ssh. Например, у нас есть sshd-сервер s2 и другой сервер s1 в качестве прокси-сервера. Затем мы можем настроить систему прокси-сервера с использованием туннеля ssh. s1 будет действовать как прокси-сервер, а s2 подключается к поставщику услуг (s3). Систему в целом можно представить так:
Code:
c0:p0 <--> s1:p1 <==> s2:p2 <--> s3
Возможно, в большинстве случаев c0 и s1 - это те же машины, что и в простом примере в начале сообщения.
Использование ssh в качестве прокси для просмотра веб-страниц очень полезно в некоторых ситуациях: ограничение локального доступа, например, за строгим брандмауэром в какой-либо стране, компании или учебном заведении; Вы находитесь в небезопасной сетевой среде, пока хотите войти в свою учетную запись.
Теперь давайте посмотрим, как настроить прокси с помощью туннеля ssh. При этом используется «динамическая» функция переадресации портов ssh с использованием параметра «-D». ssh выделяет сокет для прослушивания порта на локальной стороне, необязательно привязанный к указанному IP-адресу. При каждом подключении к этому порту оно пересылается по каналу ssh, а затем используется протокол приложения, чтобы определить, куда подключиться с удаленного компьютера.
1) Прокси-сервер слушает только порт localhost
Этот прокси-сервер можно использовать только на localhost, что означает, что другие пользователи не могут его использовать. c0 и s1 на графике выше - это одна и та же машина.
Команда такая:
Code:
$ ssh -D p1 username@sshd_server
p1 - это порт на локальном хосте. Любой порт больше 1024 может быть выбран как p1. После настройки этого прокси-туннеля установите для параметра прокси в браузере значение
127.0.0.1
1 и используйте socks5. Тогда дело сделано. Наслаждайтесь сейчас

.
2) Прокси-сервер, прослушивающий определенный IP-адрес
Такой прокси-сервер может предоставлять услуги другим пользователям. Пользователи (и, конечно, вы сами) могут использовать этот прокси socks5 с адресом
s1_ip и портом
p1.
Команда такая:
Code:
$ ssh -D s1_ip:p1 username@sshd_server
Эта команда устанавливает прокси-сервер socks5 на s1. Адрес прокси:
s1_ip: p1 .
* Некоторые полезные аргументы ssh
Есть еще несколько аргументов ssh, которые могут сделать переадресацию портов более удобной для нас:
Code:
-C Запрашивает gzip-сжатие всех данных
-T Отключить выделение псевдо-tty
-N Не выполнить удаленную команду. Это является полезным для всего переадресации портов.
-f просит SSH, чтобы перейти на фоне только что перед тем выполнением команды.
-n Перенаправляет stdin из / dev / null (фактически предотвращает чтение из stdin).
-q Тихий режим. Причины наиболее предупреждения и диагностические сообщения, чтобы быть подавлены.
Эти аргументы можно использовать с -D для различных целей. Мне нравится использовать эту комбинацию:
Code:
$ ssh -CnfND 8080 username@sshd_server
Когда я хочу закрыть туннель прокси-сервера ssh, мне нужно найти его
pid с помощью
а затем убить его.
Или пусть запускается в оболочке:
Code:
$ ssh -CTND 8080 username@sshd_server
Вы также можете настроить его для прослушивания всех адресов на хосте:
Code:
$ ssh -D "*:8080" username@sshd_server
Прокси-сервер squid для перенаправления портов
Этот пост в основном посвящен использованию ssh для построения прокси-системы. Но соединение между клиентом и другим прокси-сервером, таким как squid, также может использовать ssh-туннель. Я привожу здесь только простой пример, а более подробную информацию о переадресации портов ssh можно найти в теме «Переадресация портов с использованием ssh tunnel». Например, прокси-сервер и порт - это
прокси:порт. Теперь мы можем перенаправить на него порт 8080 на локальном хосте следующим образом:
Code:
$ ssh -L 8080:proxy:port username@sshd_server
Глобальный прокси в GNOME с NetworkManager в Linux
Если вы используете Linux с NetworkManager, очень удобно настроить глобальный прокси-сервер GNOME для использования прокси-сервера socks, созданного SSH.
Прокси-сервер с использованием SSH-туннеля в Windows
Механизм похож на тот, что описан с «Прокси-сервером, прослушивающим только порт localhost».
- Настройте PuTTY и создайте туннель SSH
- Настройте свои программы для использования прокси
PuTTY - это программное обеспечение, которое мы используем здесь для переадресации портов. Загрузите его.
Настройте PuTTY и создайте туннель SSH
Скачайте PuTTY. Сначала введите имя пользователя и имя хоста, как показано на следующем рисунке. В качестве примера мы используем "
zma@example.com" на порту 22. Вы можете ввести только хост, и PuTTY запросит имя пользователя.
Во-вторых, установите динамическую переадресацию портов, как показано на следующем рисунке. Здесь мы используем порт 8080 в качестве локального прокси-порта.
После нажатия кнопки «добавить» вы должны увидеть конфигурацию, показанную на следующем рисунке.
Наконец, нажмите кнопку «Открыть», чтобы подключиться к серверу SSH. PuTTY спросит у вас пароль. После успешного подключения PuTTY к серверу туннель SSH готов.
Вы также можете сохранить свои конфигурации как сеанс, вернувшись в окно «Сеанс» и сохранив сеанс перед последним шагом, чтобы ваши конфигурации можно было повторно использовать, и вам не нужно было устанавливать их каждый раз.
Настройте свои программы для использования прокси
Теперь вы можете настроить свои программы в Windows, такие как Internet Explorer и Chrome, на использование прокси-сервера socks:
Пример конфигурации Internet Explorer (он также используется в Chrome) показан на следующем рисунке.
Как настроить iOS для использования прокси-сервера Socks через SSH с хостом Linux / Unix
Socks-прокси, очень хорошо работает как в Linux, так и в Windows. Однако, когда я пытаюсь настроить свой iPhone и iPad с iOS, я обнаруживаю, что iOS не поддерживает прокси-сервер socks в интерфейсе настроек. Я не знаю, почему он не добавляется, хотя прокси-сервер socks действительно поддерживается операционной системой iOS. В этом посте рассказывается, как настроить iOS для использования прокси-сервера socks, созданного туннелем SSH.
Здесь мы предполагаем, что вы уже настроили один прокси (следовательно, вам нужен один хост Linux или Unix или другие, на которых вы можете настроить SSH-прокси, прослушивающие общедоступные IP-адреса), который прослушивает IP-адрес, который может быть подключен устройством iOS. .
Одна из типичных конфигураций может заключаться в том, что и хост Linux, и устройство iOS подключены к той же сети Wi-Fi, к которой подключено ваше устройство iOS. Предположим, что адрес и порт прокси-сервера socks через SSH-туннель proxy_host

roxy_port. Таким образом, вам нужно
- Устройство iOS подключить к Wi-Fi.
- Хост Linux / Unix подключается к тому же Wi-Fi для настройки прокси-сервера socks через SSH.
- Веб-хост для размещения вашего собственного файла PAC. Один в вашей локальной сети тоже подойдет.
Вам нужны дополнительные хосты и конфигурации. Преимущество заключается в том, что прокси-сервер, предоставляемый хостом Linux / Unix, очень надежен и стабилен.
Подготовить файл PAC на хосте
Вам понадобится файл автоматической настройки прокси (PAC), чтобы настроить iOS для использования прокси-сервера socks. Файл PAC - это текстовый файл, который содержит следующее содержимое:
Code:
function FindProxyForURL(url, host)
{
return "SOCKS proxy_host:proxy_port";
}
Здесь вам нужно заменить proxy_host

roxy_port настройку прокси-сервера.
Вам понадобится веб-сервер для размещения файла PAC. Один в вашей локальной сети или один, подключенный к Интернету, оба подходят. Для этого есть много вариантов. Вы можете настроить свой собственный веб-сервер, использовать Dropbox, выбрать общий хостинг-сервер или использовать
github.
Здесь, в этом руководстве, мы предполагаем, что этот файл PAC имеет имя proxy.pac и хранится по адресу
http://www.my-server.com/proxy.pac.
Настройте устройство iOS для использования прокси-сервера socks
Теперь мы можем настроить iOS на использование прокси-сервера socks, указав его на файл PAC.
В iOS перейдите в
«Настройки» ->
«Wi-Fi» и щелкните синюю стрелку вправо справа от беспроводной сети, выберите
«Авто» в разделе
«HTTP-прокси» и заполните URL-адрес файла PAC (
http://www.my-server.com/proxy.pac в нашем примере).
К настоящему времени вы настроили свое устройство iOS для использования прокси-сервера socks через туннель SSH. Проверьте и вы уже должны были быть за прокси.