Установка Dante SOCKS Proxy на Ubuntu: настройка, конфигурация, безопасность | AdminWiki

Установка Dante SOCKS Proxy на Ubuntu: Полное руководство от А до Я

18 декабря 2025 9 мин. чтения #dante #devops #linux #socks proxy #socks5 #ubuntu #прокси сервер #сетевая безопасность

Что такое Dante и зачем он нужен?

Представь, что тебе нужно безопасно направлять сетевой трафик через промежуточный сервер — для обхода ограничений, аудита или шифрования. Dante SOCKS proxy — это именно тот инструмент, который делает это профессионально. Это стабильный, высокопроизводительный прокси-сервер, поддерживающий протоколы SOCKS4 и SOCKS5, с гибкой системой аутентификации и контроля доступа.

Ключевые преимущества Dante: Поддержка IPv6, возможность цепочечного подключения прокси (proxy chaining), встроенная аутентификация (PAM, LDAP, RADIUS), детальное логирование и минимальное потребление ресурсов.

Подготовка сервера Ubuntu

Давай разберем подготовительные шаги. Для работы нам понадобится чистый сервер Ubuntu 22.04 LTS или 24.04 LTS с минимальными правами суперпользователя.

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

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl net-tools

2. Настройка брандмауэра (если используется UFW)

По умолчанию Dante слушает порт 1080. Откроем его:

bash
sudo ufw allow 1080/tcp
sudo ufw enable
sudo ufw status verbose
Внимание! На продакшн-серверах ограничивай доступ к порту прокси только с доверенных IP-адресов: sudo ufw allow from 192.168.1.0/24 to any port 1080

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

Установка выполняется буквально одной командой, так как пакет есть в официальных репозиториях Ubuntu.

bash
sudo apt install -y dante-server

После установки сервис danted будет автоматически добавлен в systemd, но не запущен, так как требуется конфигурация.

Конфигурация Dante (sockd.conf)

Основной файл конфигурации находится по пути /etc/danted.conf. Создадим его с нуля для полного контроля.

bash
sudo mv /etc/danted.conf /etc/danted.conf.backup
sudo nano /etc/danted.conf

Базовый конфиг для старта

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

  • Слушает на всех интерфейсах порт 1080
  • Разрешает подключения только с локальной сети
  • Использует аутентификацию по логину/паролю (PAM)
  • Логирует ошибки и успешные подключения
config
# Логгирование: syslog или указать файл
logoutput: /var/log/danted.log

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

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

# Методы аутентификации
# 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
}

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

Опасно! Такую конфигурацию используй только в закрытых тестовых сетях. В интернете это приведёт к созданию открытого прокси.
config
logoutput: /var/log/danted.log
internal: 0.0.0.0 port = 1080
external: eth0

# Отключаем аутентификацию
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-аутентификацию. Проще всего создать отдельного пользователя ОС:

bash
sudo useradd -r -s /bin/false proxyuser
sudo passwd proxyuser
# Задай надежный пароль

Теперь можно подключаться к прокси с логином proxyuser и указанным паролем.

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

bash
# Проверка синтаксиса конфигурации
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 (командная строка)

bash
# Без аутентификации
curl --socks5-hostname 127.0.0.1:1080 https://httpbin.org/ip

# С аутентификацией
curl --proxy socks5://proxyuser:пароль@127.0.0.1:1080 https://httpbin.org/ip

2. Настройка в браузере (Firefox)

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

  • SOCKS Хост: IP твоего сервера
  • Порт: 1080
  • Тип: SOCKS v5
  • Отметь «Использовать этот прокси-сервер для всех протоколов»

3. Через SSH туннель (если нужно)

bash
ssh -D 1080 -N -f user@your-dante-server.com

Продвинутая настройка и оптимизация

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

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

config
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
}

Настройка таймаутов и производительности

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

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

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

# Максимальное количество клиентов
client limit: 1000

Сравнение режимов работы

Параметр SOCKS4 SOCKS5 (без auth) SOCKS5 (с auth)
Аутентификация Нет Нет Логин/пароль
Поддержка UDP Нет Да Да
Безопасность Низкая Средняя Высокая
Использование Устаревшие клиенты Внутренние сети Публичный доступ

Мониторинг и диагностика

bash
# Проверка открытых портов
sudo netstat -tlnp | grep 1080

# Количество активных подключений
sudo ss -tpn | grep danted

# Детальные логи (анализ проблем)
sudo journalctl -u danted -f

# Проверка конфигурации на ошибки
sudo danted -f /etc/danted.conf -V -N

Частые проблемы и решения

Проблема: «Connection refused» при подключении
Решение: Проверь, запущен ли демон (systemctl status danted), открыт ли порт в брандмауэре и слушает ли Dante на нужном интерфейсе.
Проблема: «Authentication failed»
Решение: Убедись, что в конфиге указан socksmethod: username, пользователь существует и пароль введен верно. Проверь PAM-конфигурацию.
Проблема: Медленная скорость
Решение: Увеличь лимиты в конфиге (client limit), проверь сетевую задержку, рассмотри использование более мощного сервера.

Безопасность: обязательные шаги

  1. Всегда используй аутентификацию для публичных серверов.
  2. Ограничивай доступ по IP через client pass/block правила.
  3. Регулярно обновляй пакет Dante: sudo apt update && sudo apt upgrade dante-server.
  4. Настрой ротацию логов чтобы они не занимали всё место на диске.
  5. Используй нестандартный порт (например, 51080) для уменьшения внимания ботов.
  6. Рассмотри использование iptables/nftables для дополнительного фильтрации трафика.
Профессиональный совет: Для максимальной безопасности разверни Dante за обратным прокси (например, Nginx) с TLS-терминацией. Это позволит использовать SOCKS-over-TLS и скрыть трафик прокси от провайдера.

Автоматизация развертывания

Для DevOps-практик приведу пример Ansible-плейбука для автоматической установки:

yaml
- name: Install and configure Dante SOCKS5 proxy
  hosts: proxy_servers
  become: yes
  vars:
    dante_port: 1080
    allowed_network: "192.168.1.0/24"
  tasks:
    - name: Install Dante package
      apt:
        name: dante-server
        state: present
        update_cache: yes

    - name: Create Dante configuration
      template:
        src: templates/danted.conf.j2
        dest: /etc/danted.conf
        owner: root
        group: root
        mode: '0644'

    - name: Create proxy user
      user:
        name: "{{ proxy_user }}"
        password: "{{ proxy_password | password_hash('sha512') }}"
        shell: /bin/false
        system: yes
        create_home: no

    - name: Open firewall port
      ufw:
        rule: allow
        port: "{{ dante_port }}"
        proto: tcp

    - name: Start and enable Dante service
      systemd:
        name: danted
        state: started
        enabled: yes
        daemon_reload: yes

FAQ: Ответы на частые вопросы

Чем Dante лучше других SOCKS прокси (например, 3proxy)?

Dante отличается стабильностью, поддержкой enterprise-сценариев (LDAP, RADIUS), подробным логированием и активным развитием. Он идеален для продакшн-сред.

Можно ли настроить несколько портов на одном сервере?

Да, в конфигурации можно указать несколько блоков internal: с разными портами и настройками аутентификации для каждого.

Как ограничить пропускную способность (bandwidth) для пользователей?

На уровне Dante это сложно. Используй TC (Traffic Control) или промежуточный шейпер. Либо рассмотри специализированные решения вроде Squid.

Поддерживает ли Dante IPv6?

Да, полностью. Укажи IPv6-адреса в конфиге: internal: [::1] port = 1080 и настрой соответствующие правила.

Как сделать высокодоступную кластерную конфигурацию?

Используй балансировщик нагрузки (HAProxy, Nginx) перед несколькими экземплярами Dante с общим бэкендом аутентификации (LDAP).

Заключение

Ты успешно прошел путь от нуля до полностью рабочего SOCKS5 прокси-сервера на Ubuntu. Dante — это мощный, гибкий инструмент, который при правильной настройке прослужит годами без сбоев.

Ключевые моменты для запоминания:

  • Всегда защищай свой прокси аутентификацией и IP-фильтрацией
  • Тестируй конфигурацию командой danted -V перед запуском
  • Мониторь логи и производительность
  • Для продакшн-сред используй отдельного пользователя и нестандартные порты

Теперь у тебя есть собственный прокси-сервер для безопасного серфинга, тестирования или построения сложных сетевых архитектур. Удачи в эксплуатации!

Поделиться:
Сохранить гайд? В закладки браузера