В этом посте, будет описание настройки прокси-сервера Dante на VPS c Ubuntu 22.04.

Предполагается, что на настраиваемой системе, уже настроен доступ по SSH, а так же на VPS используется UFW, в качестве фаервола.

Интересные ссылки: 1, 2, 3

Устанавливаем Dante.

$ sudo apt install dante-server

Создаем новый или раскомментируем следующие строчки в базовом конфиге.

$ sudo vim /etc/danted.conf
logoutput: syslog
user.privileged: proxy
user.unprivileged: nobody

# wg0 must exists - vpn started
internal: wg0 port = 3128
external: eth0

socksmethod: none
clientmethod: none

client pass {
    from: 192.168.99.0/0 to: 0.0.0.0/0
	log: error
}

socks pass {
    from: 192.168.99.0/0 to: 0.0.0.0/0
	log: error
}

Здесь:
internal: wg0 port = 3128 - это сетевой интерфейс и порт, на которых Dante будет висеть (принимать запросы).
external: eth0 - внешний интерфейс, куда Dante будет перекидывать трафик.
from: 192.168.99.0/0 to: 0.0.0.0/0 - это с какой подсети принимать пакеты и в какую перебрасывать.

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

$ sudo ufw allow in on wg0 to any port 3128

Запускаем сервис Dante.

$ sudo systemctl start dented.service

Готово.

Если нужен прокси socks5 с аутентификацией, то нужно выполнить следующее:

  1. Добавить пользователя, с паролем, но без возможности логина.
    $ sudo adduser --system --no-create-home --disabled-login proxy_auth
    $ sudo passwd proxy_auth
    
  2. Поменять в конфиге следующие строчки:
    $ sudo vim /etc/danted.conf
    
    user.privileged: root
    socksmethod: username
    

На клиенте, указываем такую строку: socks://proxy_auth:user_password@192.168.99.1:3128

Update 30.12.2024.

У хостера VPS, поменялись настройки, что-ли, из-за чего dante перестал работать. В ходе отладки выяснилось, что при резолве адреса (hostname resolve), в приоритете используется IPv6. А dante, не настроен на работу с ним. В итоге, проблема решилась так:

socks pass {
    #from: 192.168.99.0/0 to: 0.0.0.0/0
    from: 192.168.99.0/0 to: 0/0
    log: error
}

0/0 разрешает работать как с IPv4 так и с IPv6.

Так же в ходе поиска решения, добавил логов:

logoutput: syslog stdout /var/log/sockd.log
errorlog: syslog stdout /var/log/sockd_err.log

Потом запускал dante прямо из шела и смотрел вывод в консоль:

sudo danted

Для проверки запросов, использовал curl:

curl --socks5 192.168.88.1:3128 ifconfig.me/all -v

Такие дела. С Наступающим! :)