Установка и настройка SOCKS5 proxy Dante в Docker Compose

Золотые правила автообновления Docker

Если вам нужен быстрый, стабильный и предсказуемый 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.

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх