Настройка SOCKS сервера
SOCKS - сетевой протокол, который позволяет клиент-серверным приложениям прозрачно использовать сервисы за межсетевыми экранами (фаерволами). SOCKS — это сокращение от "SOCKet Secure". SOCKS не зависит от конкретных протоколов уровня приложений (7-го уровня модели OSI) и базируется на стандарте TCP/IP — протоколе 4-го уровня.
- Что такое SOCKS proxy server?
Хотя этот протокол разработан достаточно давно, он является относительно новым (по сравнению с HTTP proxy). SOCKS позволяет работать с любыми (версия Socks 4 - с TCP, Socks 5 - с TCP и UDP) протоколами. SOCKS proxy просто передает данные от клиента к серверу, не вникая в содержимое самих данных (поэтому он может работать с HTTP, FTP, SMTP, POP3, NNTP, etc.).
Читайте также: Лучшие прокси-провайдеры SOCKS5/HTTP/HTTPS
Настройка SOCKS5 через SSH туннель
Настройка SOCKS5 через SSH. Создать SOCKS5- прокси довольно просто. Достаточно выполнить команду по следующей схеме:
ssh -f -C2qTnN -D [bind_address:]<порт> <удаленный_пользователь>@<удаленный_сервер>
- -f Запросит ssh перейти в фоновый режим только перед выполнением команды.
- -C Включит сжатие всех данных (включая stdin, stdout, stderr и данные для перенаправленных Х11 и TCP/IP соединений).
- -2 Принуждает ssh использовать только протокол версии 2.
- -q Тихий режим. Подавляет все предупреждения и диагностические сообщения. Будут отображены только фатальные ошибки.
- -T Отменить переназначение терминала.
- -n Перенаправляет стандартный ввод из /dev/null (фактически, предотвращает чтение из стандартного ввода).
- -N Не выполнять удаленную команду.
- -D [локальный IP : ] порт
Например:
sudo ssh -f -C2qTnN -D 1080 roman@8.8.8.8
После введения пароля к удаленному серверу, SSH перейдёт в фоновый режим.
Далее вам следует открыть любой браузер, в котором прописать адрес SOCKS5 прокси в параметрах соединения.
Для браузера Mozilla Firefox повседневные вопросы настройки:
- Идём «Правка» → «Настройки» → вкладка «Дополнительно» → вкладка «Сеть» → раздел «Соединение» → кнопка «Настроить»
- Устанавливаем там пункт «Ручная настройка сервиса прокси», в поле «Узел SOCKS» пишем наш IP адрес (обычно 127.0.0.1), а в поле «Порт» — указанный порт (в примере 1080).
- Ставим ключ на пункт "SOCKS 5" и применяем настройки.
После чего идём на любой сайт для определение IP-адреса и видим не свой IP, а IP удалённого сервера, к которому мы установили SSH - соединение.
Возможности Dante
Dante - A free SOCKS server — это стабильный SOCKS-прокси с открытым исходным кодом. В этом мануале вы научитесь устанавливать и настраивать SOCKS-прокси Dante на удаленном сервере VPS.
Для запуска SOCKS сервера вам предварительно потребуется купить недорогой VPS и настроить его, например по этому руководству Чек лист по настройке VPS/VDS, выделенного сервера Linux с нуля.
Установка SOCKS сервер Dante в Ubuntu версии 18 и выше
В случае Ubuntu выше 18.04.4 LTS (Ubuntu 20.04.1 LTS Focal, Ubuntu 22.04 LTS Jammy) Dante Server ставится стандартно из репозитория. Предварительно обновим пакеты:
apt update apt full-upgrade
Посмотрим версию пакета Dante SOCKS сервера в репозиториях
apt search dante-server dante-server/jammy 1.4.2+dfsg-7build4 amd64 SOCKS (v4 and v5) proxy daemon (danted)
Установим:
apt install dante-server
Проверим добавился ли Dante в автозагрузку:
systemctl is-enabled danted enabled
Правим конфигурационный файл /etc/danted.conf (сделайте предварительно бэкапа этого файла). Прописываем параметры в явном виде. Ниже полностью рабочий конфигурационный файл Dante Servera с доступом клиента по логину и паролю.
- danted.conf
logoutput: syslog stdout /var/log/sockd.log #logoutput: stderr internal: ens3 port = 1080 external: ens3 socksmethod: username #socksmethod: username none user.privileged: root user.unprivileged: nobody user.libwrap: nobody client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error }
- logoutput определяет, как Dante будет регистрировать подключения (в данном случае это происходит с помощью обычного системного лога).
- user.privived предоставляет серверу root-права для проверки разрешений
- user.uncitationd блокирует работу сервера в качестве непривилегированного пользователя (так как в этом нет необходимости, если нет более детализированных разрешений).
- internal определяет порт, на котором запущен сервис, и IP-адреса, к которым можно подключиться.
- external определяет сетевой интерфейс для исходящих подключений (это eth0 по умолчанию на большинстве серверов).
Перечитаем конфиг демона
systemctl restart danted
Cервер Dante будет использовать для аутентификации обычные учетные записи пользователей Linux. Это нормально, однако пароль, используемый для этого соединения, будет отправлен в виде простого текста. Потому лучше создать выделенного пользователя SOCKS, у которого не будет никаких других прав в системе
Создадим пользователя, который будет использовать наш SOCKS сервер и добавим его в группу proxy или в ту группу которая указана в параметре user.privileged конфига Dante.
useradd -s /bin/false proxyuser && passwd proxyuser usermod -aG proxy proxyuser
Разрешим в фаерволе, я использую UFW, порт TCP 1080 для подключения клиентов
sudo ufw allow 1080/tcp
Все. Удачи! — Dmytro Yakovenko 2023/07/11
Если возникли ошибки при запуске Dante. Для того чтобы увидеть подробно причину ошибки нужно запустить демона вручную, командой danted. В моем случае ошибка сразу понятна - не настроен метод аутентификации
# danted Jul 20 16:13:47 (1595250827.128796) danted[31184]: warning: checkconfig(): no socks authentication methods enabled. This means all socks requests will be blocked after negotiation. Perhaps this is not intended? Jul 20 16:13:47 (1595250827.128892) danted[31184]: error: checkconfig(): no internal address given for server to listen for clients on Jul 20 16:13:47 (1595250827.128927) danted[31184]: alert: mother[1/1]: shutting down
Если после настройки журнала лога для службы danted вы получаете ошибки, например:
alert: configparsing(): could not (re)open logfile "/var/log/socks.log": Read-only file system
остановите службу и изменить конфигурацию службы запуска демона danted для разрешения записи в директорию /var/log/. Для этого добавьте строку ReadWriteDirectories, это будет выглядить так:
nano /lib/systemd/system/danted.service ... InaccessibleDirectories=/boot /home /media /mnt /opt /root ReadOnlyDirectories=/bin /etc /lib -/lib64 /sbin /usr /var ReadWriteDirectories=/var/log ...
Примените изменения systemd и перезагрузите службу:
systemctl daemon-reload systemctl restart danted
Проверка подключения через Dante
Для подключения можно использовать бесплатные антидетект браузеры с поддержкой SOCKS 5.
Для тестирования можно использовать использовать curl. Данная утилита установлена по умолчанию во всех современных средах Windows, Mac и Linux, поэтому вы можете открыть любую локальную оболочку для ее запуска:
curl -v -x socks5://your_dante_user:your_dante_password@your_server_ip:1080 http://www.google.com/
Установка SOCKS сервер Dante в Ubuntu версии 14 и 16
В репозиториях Ubuntu 14.04.5 LTS Trusty и Ubuntu 16.04.2 LTS установлена старая версия Dante Server 1.1.19 и к тому же она не может работать с логином и паролем (доступ к прокси можно регулировать только Руководство по iptables: Настройка и оптимизация фаервола Linux). Баг этот известен давно, но так и не был исправлен(how to set up danted (dante-server) SOCKS proxy on Ubuntu 14.04 with authentication).
- Инсталляция и настройка SOCKS сервера Dante Server из исходных кодов в Хостинг VPS/VDS на Ubuntu 14.04.5 LTS Trusty в контейнере OpenVZ.
cd /opt wget http://www.inet.no/dante/files/dante-1.4.2.tar.gz tar -xvf dante-1.4.2.tar.gz cd dante-1.4.2/
Компиляция Dante Server. Вначале установим необходимые утилиты и зависимости Dante для компиляции Ubuntu:
aptitude install gcc cc libwrap0 libwrap0-dev libpam0g-dev make
CentOS 6.6:
yum install gcc pam-devel tcp_wrappers-devel
mkdir /opt/dante ./configure --prefix=/opt/dante
К конце будет выведен статус конфигурации
Client: Enabled Server: Enabled Preloading: Enabled Libwrap: Enabled BSD Auth: Disabled, usable bsd_auth.h not found PAM: Enabled GSSAPI: Not found/disabled KRB5: Not found/disabled SASL: Not found/disabled UPNP: Not found/disabled Compatability: issetugid setproctitle strlcpy strvis Modules: redirect: Not found bandwidth: Not found ldap: Not found
make make install
Проверим запускается ли собранный файл, посмотрим версию сервера:
/opt/dante/sbin/sockd -v Dante v1.4.2. Copyright (c) 1997 - 2014 Inferno Nettverk A/S, Norway
Рабочий конфигурационный файл (подставьте свой IP или название сетевого интерфейса). Скачать файл sockd.conf командой
wget -c http://wiki.dieg.info/_export/code/socks?codeblock=10 -O /etc/sockd.conf
- sockd.conf
#logoutput: /var/log/socks.log logoutput: stderr # На каком сетевом интерфейсе и порту обслуживаем socks клиентов internal: venet0:0 port = 1080 # С какого IP или интерфейса выходим во внешний мир external: venet0:0 #internal: x.x.x.x port = 1080 #external: x.x.x.x # Используемый метод авторизации клиентов. none - без авторизации. socksmethod: username #socksmethod: username none user.privileged: root user.notprivileged: nobody client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error } socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect } socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: connect error }
Запуск сервера Dante как сервиса
/opt/dante/sbin/sockd -D
Всё! Наслаждаемся работой.
- start.sh
#!/bin/bash /opt/dante/sbin/sockd -f /etc/sockd.conf -D
- stop.sh
#!/bin/bash /usr/bin/pkill sockd
Добавим пользователя, который будет пользоваться нашим SOCKS сервером
sudo useradd -s /bin/false proxyuser && sudo passwd proxyuser
Разрешим TCP порт 1080 в фаерволе iptables для начинающих: Простое управление брандмауэром с UFW
sudo ufw allow proto tcp from any to any port 1080
Вывести все правила ufw можно командой
ufw status
- Разрешаем клиенту 192.168.0.2 выход через socks.
client pass { from: 192.168.0.2/32 to: 0.0.0.0/0 log: connect disconnect iooperation }
Альтернативные SOCKS сервера
- 3proxy с поддержкой http(s) и socks5-proxy - это маленький многоплатформенный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).
- ss5.sourceforge.net SS5 is a socks server that implements the SOCKS v4 and v5 protocol для CENT OS
Читайте также
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах