Dante – мощный и гибкий SOCKS прокси-сервер, который достаточно прост в настройке и присутствует в репозиториях основных систем.
Для чего нужен прокси-сервер рассказывать не надо, в первую очередь это контроль исходящего трафика пользователей вашей локальной сети. Тем более что Dante предоставляет обширный инструментарий управления трафиком.
Установку мы будем производить в среде Ubuntu 24.02 LTS
apt update
apt install dante-server
После установки откроем файл /etc/danted.conf и приведем его к следующему виду:
logoutput: stdout
internal: 0.0.0.0 port = 1080
external: eth0
socksmethod: username
clientmethod: none
user.privileged: root
user.unprivileged: nobody
user.libwrap: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}
Это минимальная рабочая конфигурация. Коротко пройдем по опциям. Сначала мы перенаправляем лог в стандартный поток вывода, это может показаться странным, но в этом случае мы воспользуемся стандартной возможностью логирования systemd и не будем дублировать лог в файлы, это особенно полезно если вы запускаете Dante на слабой VPS или в контейнере.
Опция internal обозначает, где и как вы принимаете входящие соединения, можете указать IP-адрес или интерфейс. В нашем случае мы слушаем на всех адресах узла. Опция external указывает адрес или интерфейс, через который соединения выпускаем наружу.
Для аутентификации пользователей выбираем socksmethod: username, это включит стандартную аутентификацию по логину и паролю.
Секция client pass отвечает за правила подключения клиентов к серверу, а socks pass за прохождение трафика через сервер. В нашем случае разрешен трафик от любого узла к любому узлу. Но мы можем изменить такое поведение. Например:
client pass {
from: 192.168.0.0/24 to: 0.0.0.0/0
log: connect error
}
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}Разрешит выход через сервер только клиентам локальной сети 192.168.0.0/24 и запретит всем остальным.
А конструкция
socks block {
from: 0.0.0.0/0 to: vk.com
log: connect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}Запретит доступ к vk.com, но разрешит к любым другим узлам. При создании подобных блоков следует учитывать, что правила работают по порядку следования, до первого срабатывания.
Также можем ограничить используемые клиентами протоколы и порты назначения:
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 port = 80
protocol: tcp
log: connect error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 port = 443
protocol: tcp
log: connect error
}
socks block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}В общем, возможности весьма широкие и большее количество информации вы можете почерпнуть в официальной документации: https://www.inet.no/dante/doc/latest/config/index.html
Осталось добавить пользователя:
useradd -N -M -s /sbin/nologin dante
И установить ему пароль:
passwd dante
Для управления службой используйте:
systemctl start|stop|restart|status danted
Наш прокси сервер готов, можете подключаться.
