Установка Dante SOCKS Proxy на Ubuntu 24.04

Модератор: padonki

Ответить
Аватара пользователя
Padonak
padonki
Сообщения: 3819
Зарегистрирован: 14 авг 2006, 20:43
Контактная информация:

Установка Dante SOCKS Proxy на Ubuntu 24.04

Сообщение Padonak »

1. Обновление системы

Код: Выделить всё

apt update && sudo apt upgrade -y
apt install -y wget curl net-tools
Установка Dante SOCKS Proxy

Код: Выделить всё

apt install -y dante-server
Конфигурация Dante (sockd.conf)

Код: Выделить всё

 mv /etc/danted.conf /etc/danted.conf.backup
 nano /etc/danted.conf
Базовый конфиг для старта

Приведу пример конфигурации, которая:

Слушает на всех интерфейсах порт 3334
Разрешает подключения только с локальной сети
Использует аутентификацию по логину/паролю (PAM)
Логирует ошибки и успешные подключения

Код: Выделить всё

# Логгирование: syslog или указать файл
logoutput: /var/log/danted.log

# Интерфейсы и порты для входящих подключений
internal: 0.0.0.0 port = 3334

# Внешний интерфейс (через который идёт исходящий трафик)
external: ens3

# Методы аутентификации
# none — без аутентификации (не рекомендуется)
# username — аутентификация по логину/паролю
socksmethod: username

# Метод аутентификации для отдельных правил (если нужно)
clientmethod: none

# Пользователи, которым разрешено подключаться
# Можно указать конкретных пользователей или всех аутентифицированных
client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect disconnect error
}

# Правила для SOCKS-запросов
# Разрешаем проходить трафик только аутентифицированным пользователям
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind connect udpassociate
    log: connect disconnect error
    socksmethod: username
}

# Блокируем всё остальное
socks block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
}

Вариант без аутентификации (для тестов)

Опасно! Такую конфигурацию используй только в закрытых тестовых сетях. В интернете это приведёт к созданию открытого прокси.

Код: Выделить всё

logoutput: /var/log/danted.log
internal: 0.0.0.0 port = 3334
external: ens3

# Отключаем аутентификацию
socksmethod: none
clientmethod: none

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind connect udpassociate
}
Создание пользователей для аутентификации

Dante использует системную PAM-аутентификацию. Проще всего создать отдельного пользователя ОС:

Код: Выделить всё

sudo useradd -r -s /bin/false proxyuser
sudo passwd proxyuser
# Задай надежный пароль
Теперь можно подключаться к прокси с логином proxyuser и указанным паролем.

Запуск и управление службой Dante

# Проверка синтаксиса конфигурации

Код: Выделить всё

sudo danted -f /etc/danted.conf -V
# Запуск службы

Код: Выделить всё

sudo systemctl start danted
# Автозагрузка при старте системы

Код: Выделить всё

sudo systemctl enable danted
# Проверка статуса

Код: Выделить всё

sudo systemctl status danted
# Просмотр логов в реальном времени

Код: Выделить всё

sudo tail -f /var/log/danted.log
# Перезагрузка конфигурации без разрыва соединений
sudo systemctl reload danted

Тестирование подключения

Протестируем наш SOCKS5 proxy с разных клиентов.
1. Через cURL (командная строка)
# Без аутентификации

Код: Выделить всё

curl --socks5-hostname 127.0.0.1:3334 https://drivesource.ru/
# С аутентификацией

Код: Выделить всё

curl --proxy socks5://proxyuser:пароль@127.0.0.1:3334 https://drivesource.ru
2. Настройка в браузере (Firefox)

Зайди в Настройки → Прокси-сервер → Ручная настройка прокси:

Код: Выделить всё

    SOCKS Хост: IP твоего сервера
    Порт: 3334
    Тип: SOCKS v5
    Отметь «Использовать этот прокси-сервер для всех протоколов»
3. Через SSH туннель (если нужно)

Код: Выделить всё

ssh -D 3334 -N -f user@your-dante-server.com
Продвинутая настройка и оптимизация

Ограничение по IP-адресам

Допустим, мы хотим разрешить подключение к прокси только с определенной подсети:

Код: Выделить всё

client pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0
    log: connect disconnect error
}

client block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
}
Настройка таймаутов и производительности

Код: Выделить всё

# Таймаут подключения клиента (секунды)
clienttimeout: 30

# Таймаут операции ввода-вывода
iottimeout: 30

# Лимит одновременных подключений
# user.privileged: root
# user.notprivileged: nobody

# Максимальное количество клиентов
client limit: 1000
Мониторинг и диагностика
# Проверка открытых портов

Код: Выделить всё

sudo netstat -tlnp | grep 3334
# Количество активных подключений

Код: Выделить всё

sudo ss -tpn | grep danted
# Детальные логи (анализ проблем)

Код: Выделить всё

sudo journalctl -u danted -f
# Проверка конфигурации на ошибки

Код: Выделить всё

sudo danted -f /etc/danted.conf -V -N

Ошибка «could not open or create logfile "/var/log/danted.log" for writing: Read-only file system» возникает при настройке прокси-сервера Danted :

Ошибка может быть связана с неправильной конфигурацией службы запуска демона Danted. Например, в файле

/lib/systemd/system/danted.service

не указана строка ReadWriteDirectories=/var/log, которая разрешает запись в директорию /var/log/

Решение:
Остановить службу
Изменить конфигурацию службы. В файле /lib/systemd/system/danted.service

Код: Выделить всё

добавить строку ReadWriteDirectories=/var/log
Например, файл может выглядеть так:
InaccessibleDirectories=/boot /home /media /mnt /opt /root
ReadOnlyDirectories=/bin /etc /lib -/lib64 /sbin /usr /var
ReadWriteDirectories=/var/log
...


Применить изменения. Для этого нужно выполнить команды:

Код: Выделить всё

systemctl daemon-reload  
systemctl restart danted  
Производительность и оптимизация

Для высоконагруженных систем стоит настроить несколько параметров. Добавим в конфиг:

Код: Выделить всё


# Настройки производительности
child.maxrequests: 0
child.maxlifetime: 0

# Буферизация
resolveprotocol: tcp
Также стоит увеличить системные лимиты:

# В /etc/security/limits.conf

Код: Выделить всё

nobody soft nofile 65536
nobody hard nofile 65536
# В

Код: Выделить всё

 vim /lib/systemd/system/danted.service

Код: Выделить всё

[Service]
LimitNOFILE=65536
Моя характеристика с детского сада: Хорошо кушает, спит, гуляет! Прошло много лет, ничего не изменилось.
Изображение
Ответить