Что такое Dante и зачем он нужен?
Представь, что тебе нужно безопасно направлять сетевой трафик через промежуточный сервер — для обхода ограничений, аудита или шифрования. Dante SOCKS proxy — это именно тот инструмент, который делает это профессионально. Это стабильный, высокопроизводительный прокси-сервер, поддерживающий протоколы SOCKS4 и SOCKS5, с гибкой системой аутентификации и контроля доступа.
Подготовка сервера Ubuntu
Давай разберем подготовительные шаги. Для работы нам понадобится чистый сервер Ubuntu 22.04 LTS или 24.04 LTS с минимальными правами суперпользователя.
1. Обновление системы
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl net-tools
2. Настройка брандмауэра (если используется UFW)
По умолчанию Dante слушает порт 1080. Откроем его:
sudo ufw allow 1080/tcp
sudo ufw enable
sudo ufw status verbose
sudo ufw allow from 192.168.1.0/24 to any port 1080
Установка Dante SOCKS Proxy
Установка выполняется буквально одной командой, так как пакет есть в официальных репозиториях Ubuntu.
sudo apt install -y dante-server
После установки сервис danted будет автоматически добавлен в systemd, но не запущен, так как требуется конфигурация.
Конфигурация Dante (sockd.conf)
Основной файл конфигурации находится по пути /etc/danted.conf. Создадим его с нуля для полного контроля.
sudo mv /etc/danted.conf /etc/danted.conf.backup
sudo nano /etc/danted.conf
Базовый конфиг для старта
Приведу пример конфигурации, которая:
- Слушает на всех интерфейсах порт 1080
- Разрешает подключения только с локальной сети
- Использует аутентификацию по логину/паролю (PAM)
- Логирует ошибки и успешные подключения
# Логгирование: 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
}
Вариант без аутентификации (для тестов)
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-аутентификацию. Проще всего создать отдельного пользователя ОС:
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: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 туннель (если нужно)
ssh -D 1080 -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
Сравнение режимов работы
| Параметр | SOCKS4 | SOCKS5 (без auth) | SOCKS5 (с auth) |
|---|---|---|---|
| Аутентификация | Нет | Нет | Логин/пароль |
| Поддержка UDP | Нет | Да | Да |
| Безопасность | Низкая | Средняя | Высокая |
| Использование | Устаревшие клиенты | Внутренние сети | Публичный доступ |
Мониторинг и диагностика
# Проверка открытых портов
sudo netstat -tlnp | grep 1080
# Количество активных подключений
sudo ss -tpn | grep danted
# Детальные логи (анализ проблем)
sudo journalctl -u danted -f
# Проверка конфигурации на ошибки
sudo danted -f /etc/danted.conf -V -N
Частые проблемы и решения
Решение: Проверь, запущен ли демон (
systemctl status danted), открыт ли порт в брандмауэре и слушает ли Dante на нужном интерфейсе.
Решение: Убедись, что в конфиге указан
socksmethod: username, пользователь существует и пароль введен верно. Проверь PAM-конфигурацию.
Решение: Увеличь лимиты в конфиге (
client limit), проверь сетевую задержку, рассмотри использование более мощного сервера.
Безопасность: обязательные шаги
- Всегда используй аутентификацию для публичных серверов.
- Ограничивай доступ по IP через
client pass/blockправила. - Регулярно обновляй пакет Dante:
sudo apt update && sudo apt upgrade dante-server. - Настрой ротацию логов чтобы они не занимали всё место на диске.
- Используй нестандартный порт (например, 51080) для уменьшения внимания ботов.
- Рассмотри использование iptables/nftables для дополнительного фильтрации трафика.
Автоматизация развертывания
Для DevOps-практик приведу пример Ansible-плейбука для автоматической установки:
- 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перед запуском - Мониторь логи и производительность
- Для продакшн-сред используй отдельного пользователя и нестандартные порты
Теперь у тебя есть собственный прокси-сервер для безопасного серфинга, тестирования или построения сложных сетевых архитектур. Удачи в эксплуатации!