Если вам нужен быстрый, стабильный и предсказуемый SOCKS5-proxy без шаманства с iptables и systemd —
Dante в Docker Compose это как швейцарский нож системного администратора.
Работает всегда, настраивается один раз, ломается только если очень постараться (или дать доступ джуну).
Что такое Dante и зачем он нужен
Dante — это промышленный SOCKS-proxy (v4/v5), который любят за:
- высокую производительность
- гибкие ACL (кто, куда и зачем)
- аутентификацию (username/password)
- предсказуемое поведение (редкость в наши дни)
Используется для:
- туннелирования трафика
- доступа к закрытым ресурсам
- разграничения сетевого доступа
- и, конечно, «мне просто нужен socks5»
Архитектура решения
Мы поднимем:
- контейнер с Dante
- аутентификацию по логину/паролю
- порт 1080
- минимально разумные ACL
Хост: Linux (Ubuntu, Debian — не принципиально)
Docker + Docker Compose уже установлены.
Структура проекта
/dante-proxy ├── docker-compose.yml ├── dante.conf └── users.txt
docker-compose.yml
version: "3.9"
services:
dante:
image: ghcr.io/paulritter/dante
container_name: dante-proxy
restart: unless-stopped
ports:
- "1080:1080"
volumes:
- ./dante.conf:/etc/dante/danted.conf:ro
- ./users.txt:/etc/dante/users.txt:ro
cap_add:
- NET_ADMIN
network_mode: bridge
Да, NET_ADMIN нужен — Dante не из тех, кто работает «без прав».
Файл конфигурации dante.conf
logoutput: stderr
internal: 0.0.0.0 port = 1080
external: eth0
method: username
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
log: connect disconnect error
}
Это «золотой минимум»: всё разрешено, всё логируется, без лишней бюрократии.
ACL можно ужесточать бесконечно — Dante это любит.
Файл пользователей users.txt
user1:password123 admin:supersecret
Да, в открытом виде. Нет, это не идеально. Да, для продакшена лучше secrets или vault.
Но мы же админы, а не параноики… хотя нет, параноики, но практичные.
Запуск proxy
<a class="wpil_keyword_link" href="https://it-apteka.com/tag/docker/" title="Docker" data-wpil-keyword-link="linked" data-wpil-monitor-id="96">docker</a> compose up -d
Проверяем:
docker logs dante-proxy
Если контейнер не упал — уже успех.
Практические примеры использования
Пример 1. Проверка через curl
curl --socks5 user1:password123@127.0.0.1:1080 https://ifconfig.me
IP сменился? Поздравляю, вы только что поняли Dante.
Пример 2. Использование в браузере
- Тип: SOCKS5
- Хост: IP сервера
- Порт: 1080
- Логин/пароль: из users.txt
Работает в Firefox, Chrome, даже в браузере на холодильнике (если он поддерживает SOCKS).
Пример 3. Proxy для Docker-контейнера
environment: - ALL_PROXY=socks5://user1:password123@dante:1080
Отлично подходит для контейнеров без прямого доступа в интернет.
Пример 4. Ограничение доступа по IP
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
}
Теперь только «свои». Остальные идут читать документацию.
Пример 5. Запрет всего, кроме HTTPS
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
protocol: tcp
port: 443
}
Параноидальный режим активирован.
Типовые проблемы и грабли
- Dante не стартует → проверяйте
external: eth0 - Нет логов → смотрите
stderr - Не коннектится → firewall хоста
- Работает, но не туда → ACL, всегда ACL
Вывод
Dante в Docker Compose — это:
- минимум телодвижений
- максимум контроля
- идеально для dev / prod / «быстро надо»
Один раз настроил — и забыл. Пока не понадобилось добавить ещё один ACL.


