Установка прокси сервера Socks5 на Centos 7

В данной статье я хочу поднять для многих актуальную тему настройки прокси-сервера с помощью пакета Dante. На данный момент тема очень актуальна в свете блокировки Telegram. Благо Дуров предусмотрел поддержку SOCKS5-прокси.

И так начнем.

Подключаем репозиторий gf:

yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm

Устанавливаем dante-server:

yum --enablerepo=gf-plus install dante-server

Прописываем автозагрузку при включении системы:

systemctl enable sockd.service

Сохраняем оригинальный конфиг:

mv /etc/sockd.conf /etc/sockd.conf.orig

Создаем свой:

nano /etc/sockd.conf

internal: eth0 port = 1080

external: eth0

socksmethod: username

user.privileged: root

user.unprivileged: nobody

client pass {

from: 0/0 to: 0/0

log: error

}

socks pass {

from: 0/0 to: 0/0

log: error

}

Для понимания можно почитать оригинальный конфиг. Там все доступно. Благо мы его сохранили.

Тем не менее пара слов по конфигу:

internal: eth0 port = 1080 — указываем интерфейс и порт к которому будет идти подключение;

external: eth0 — указываем интерфейс через который пускать трафик;

socksmethod: username — указываем использовать вход по логину и паролю системных пользователей;

user.privileged: root — ставим root, потому что нам нужно читать файл /etc/passwd;

client pass — правила работы с клиентами;

socks pass — что разрешаем клиентам;

Теперь сделаем отдельного пользователя, с ключем -s /sbin/nologin, чтобы на вашем сервере не могли шариться через SSH по этому логину:

useradd test -M -s /sbin/nologin

passwd test

Создаем рабочую папку:

mkdir /var/run/sockd/

Запускаем:

systemctl start sockd.service

Добавляем правило в файрвол:

firewall-cmd --zone=public --add-port=1080/tcp --permanent

firewall-cmd --reload

Все наш прокси готов, для поключения нужно будет помнить 4 настройки: IP-адрес вашего сервера, порт (в моем конфиге 1080), логин (в моем примере test) и пароль, который вы этому пользователю указали.

Я немного перфекционист и решил сделать субдомен для прокси, чтобы моим знакомым и друзьям не нужно было запоминать странный IP-адрес. Однако столкнулся с забавной сложностью. Дело в том, что в домене я прописал A- и AAAA-записи сразу, так как сервер поддерживал IPv6. Однако изначально я настроил сервер Dante без поддержки IPv6. В итоге мой ПК пытался подключится по умолчанию через IPv6, но не получал ответа. Возможно кому-то это пригодится.

P.S. Ссылки на прокси в Телеграме можно распостранять в интересном формате: https://t.me/socks?server=IP&port=PORT&user=USERNAME&pass=PASSWORD или tg://socks?server=IP&port=PORT&user=USERNAME&pass=PASSWORD