Установка и настройка SOCKS5 прокси-сервера Dante на CentOS


Для проекта потребовалось использовать прокси для работы curl .

Выбор пал на Dante , была взят самый простой vps сервер с CentOS.
Для начала обновляемся:

yum update –y
Добавляем репозиторий:
yum install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
Включаем репозитарий и устанавливаем прокси сервер Dante:
yum --enablerepo=gf-plus install dante-server 
Разрешаем автозагрузку сервиса:
systemctl enable sockd.service
Создаем рабочий каталог:
mkdir /var/run/sockd
Сохраняем для потомков оригинальный файл конфигурации
mv /etc/sockd.conf /etc/sockd.conf.orig
И Создаем свой:
vi /etc/sockd.conf
#logging
logoutput: stderr
#debug: 1

#server address specification
internal: eth0 port = 1080
external: eth0

#server identities
user.privileged: root
user.notprivileged: nobody


#authentication methods
#clientmethod: none
socksmethod: username

# allow any client connection
client pass {
    from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
    log: connect disconnect error
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect disconnect error
    socksmethod: username
}

Немного о настройках.
Строка internal: eth0 port = 1080 указывает на каком порту будет работать прокси, можно указать любой порт в диапазоне от 1 до 65535
Строка socksmethod – указывает на метод авторизации (username - авторизация с указанием логина и пароля системных пользователей. Можно указать none если вы хотите не использовать авторизацию, но не советую оставлять открытым для порта для прокси.)
user.privileged - имя пользователя с расширенными правами. user.unprivileged - имя пользователя с обычными правами.

Добавляем правило для фаервола для подключения с конкретного ip
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="ваш_внешний_ip/32" port protocol="tcp" port="1080" accept" 
или с любого
firewall-cmd --zone=public --permanent --add-port=1080/tcp
Теперь будет разумным сделать отдельного пользователя, который будет у нас работать через наш прокси
    useradd --shell /usr/sbin/nologin userproxy
    passwd userproxy
    [Вводим дважды пароль]
Запускаем и можно начинать работать
systemctl start sockd.service
И тетерь можно дополнить свой скрипт заветной строкой подключения через прокси
curl_setopt($ch, CURLOPT_PROXY, "socks5://userproxy:pass@myproxy.com");
Поскольку SOCKS передает все данные от клиента серверу, ничего не добавляя от себя, то с точки зрения web-сервера socks proxy является клиентом. Поэтому этоn тип proxy-сервера лучше использовать.

Если появится желание проверить работу этого прокси через браузер то помните: Браузеры не поддерживают Socks прокси с авторизацией.

#CentOS

Copyright © 2019