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

Модератор: padonki

Ответить
Аватара пользователя
Padonak
padonki
Сообщения: 3832
Зарегистрирован: 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
 vim /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/limits.conf

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

[Service]
[Service]
LimitNOFILE=65536
LimitNPROC=32768
Restart=always
RestartSec=10s
Вложения
tun2socks-failover-cleanup.rar
(533 байт) 0 скачиваний
tun2socks-failover.rar
(2.19 КБ) 0 скачиваний
Моя характеристика с детского сада: Хорошо кушает, спит, гуляет! Прошло много лет, ничего не изменилось.
Изображение
Аватара пользователя
Padonak
padonki
Сообщения: 3832
Зарегистрирован: 14 авг 2006, 20:43
Контактная информация:

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

Сообщение Padonak »

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

# =============================================
# 1. ОПТИМИЗАЦИЯ TCP/IP СТЕКА
# =============================================

cat >> /etc/sysctl.conf << 'EOF'
# Буферы ядра
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.netdev_max_backlog = 65535
net.core.somaxconn = 65535
net.core.optmem_max = 65536

# TCP буферы
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_mem = 16777216 16777216 16777216

# TCP оптимизации
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_notsent_lowat = 16384

# BBR congestion control
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

# Fast Open
net.ipv4.tcp_fastopen = 3

# Отключаем ненужное
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_no_metrics_save = 1

# UDP оптимизации
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384

# Увеличиваем лимиты
net.ipv4.ip_local_port_range = 1024 65535
fs.file-max = 1000000
fs.nr_open = 1000000
EOF

# Применить
sysctl -p

# =============================================
# 2. ЗАГРУЗКА BBR (если не загружен)
# =============================================
modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf

# Проверить
sysctl net.ipv4.tcp_congestion_control
# Должно быть: net.ipv4.tcp_congestion_control = bbr

# =============================================
# 3. ЛИМИТЫ ДЛЯ DANTE/3PROXY
# =============================================

# Лимиты для systemd сервиса
mkdir -p /etc/systemd/system/danted.service.d
cat > /etc/systemd/system/danted.service.d/limits.conf << 'EOF'
[Service]
LimitNOFILE=1000000
LimitNPROC=65535
LimitMEMLOCK=infinity
Restart=always
RestartSec=10s
EOF

systemctl daemon-reload

# =============================================
# 4. ОПТИМИЗАЦИЯ СЕТЕВОГО ИНТЕРФЕЙСА
# =============================================

# Узнать интерфейс (обычно eth0 или ens3)
INTERFACE=$(ip route show default | awk '{print $5}')

# Увеличить очередь передачи
ip link set dev $INTERFACE txqueuelen 10000

# Увеличить MTU (если поддерживается)
ip link set dev $INTERFACE mtu 1500

# =============================================
# 5. ОТКЛЮЧЕНИЕ НЕНУЖНОГО
# =============================================

# Отключить IPv6 (если не используется)
cat >> /etc/sysctl.conf << 'EOF'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
EOF

# =============================================
# 6. ОПТИМИЗАЦИЯ ФАЙРВОЛА
# =============================================

# Отключить connection tracking для SOCKS5 трафика (ускоряет)
iptables -t raw -I PREROUTING -p tcp --dport 3334 -j NOTRACK
iptables -t raw -I OUTPUT -p tcp --sport 3334 -j NOTRACK

# Сохранить правила
apt install -y iptables-persistent 2>/dev/null || true
netfilter-persistent save 2>/dev/null || iptables-save > /etc/iptables/rules.v4

# =============================================
# 7. DNS ОПТИМИЗАЦИЯ
# =============================================

cat > /etc/resolv.conf << 'EOF'
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 9.9.9.9
EOF

# Защитить от перезаписи
chattr +i /etc/resolv.conf

# =============================================
# 8. ПЕРЕЗАПУСК ПРОКСИ
# =============================================

# Для Dante
systemctl restart danted
systemctl status danted

# Или для 3proxy
# systemctl restart 3proxy
# systemctl status 3proxy

# =============================================
# 9. ПРОВЕРКА РЕЗУЛЬТАТОВ
# =============================================

echo "=== Проверка оптимизаций ==="
echo "BBR: $(sysctl net.ipv4.tcp_congestion_control)"
echo "RMEM: $(sysctl net.core.rmem_max)"
echo "WMEM: $(sysctl net.core.wmem_max)"
echo "Fast Open: $(sysctl net.ipv4.tcp_fastopen)"
echo "Лимиты: $(ulimit -n)"

# Тест скорости
curl --socks5-hostname socks5://127.0.0.1:3334 \
     -o /dev/null \
     -w "Speed: %{speed_download} B/s (%{time_total}s)\n" \
     http://speedtest.tele2.net/10MB.zip
Вложения
optimizatsiya_servera.rar
(1.77 КБ) 0 скачиваний
Моя характеристика с детского сада: Хорошо кушает, спит, гуляет! Прошло много лет, ничего не изменилось.
Изображение
Ответить