// Engineering Log
Servidores proxy: Parte 4 — Dante
Publicado el 21.09.2026
Dante — servidor proxy SOCKS libre de la empresa Inferno Nettverk. Implementa los protocolos SOCKS4, SOCKS4a y SOCKS5 (RFC 1928) y se distribuye bajo la licencia BSD/CMU. La última versión es 1.4.4, lanzada en diciembre de 2024. En Debian y Ubuntu el servidor se instala desde el paquete dante-server; el servicio se llama danted.
En qué se diferencia SOCKS de un proxy HTTP
Un proxy HTTP analiza las peticiones del protocolo HTTP: ve la URL de la página, las cabeceras, puede cachear respuestas y filtrar contenido. Un proxy SOCKS opera a un nivel inferior: el cliente le pide que se conecte a una dirección y puerto indicados, tras lo cual el proxy simplemente transmite bytes en ambas direcciones sin inspeccionar su significado. Por eso a través de SOCKS se puede pasar cualquier tráfico TCP: SSH, protocolos de correo, bases de datos, mensajería, — y SOCKS5 además soporta UDP.
Las versiones del protocolo se diferencian en funcionalidades:
- SOCKS4 — solo TCP, sin autenticación por contraseña, la dirección de destino se transmite por dirección IP;
- SOCKS4a — lo mismo, pero permite pasar el nombre del host para que lo resuelva el proxy;
- SOCKS5 — TCP y UDP, IPv6, autenticación por nombre de usuario y contraseña.
Para qué se usa Dante
- Punto de salida único. El tráfico de las aplicaciones desde la red interna sale a Internet a través de un único servidor, con una sola dirección y bajo unas mismas reglas.
- Acceso a recursos con lista blanca de direcciones IP. Si un servicio externo solo acepta desde una dirección concreta, basta poner Dante en la máquina con esa dirección.
- Salida a través de otro servidor o de otro país. El servidor destino ve la dirección del proxy y no la del cliente. Esto se usa para comprobar versiones regionales de sitios y para trabajar con servicios accesibles solo desde ciertos países.
- Control de acceso. Las reglas de Dante definen desde qué direcciones se puede conectar al proxy y hacia dónde está permitido ir a través de él.
- Proxificar todo el tráfico de un sistema o contenedor. Aplicaciones que no soportan SOCKS directamente se pueden encaminar al proxy mediante tun2socks — esto se trata en los artículos para el contenedor y para todo el sistema.
Instalación
En Debian y Ubuntu:
sudo apt update
sudo apt install dante-serverLa configuración está en el archivo /etc/danted.conf. Justo después de la instalación el servicio puede no arrancar — en el archivo estándar no están indicadas las interfaces. Es normal: primero hay que escribir la configuración.
Configuración operativa con contraseña
A continuación — la configuración de un proxy SOCKS5 que acepta conexiones en el puerto 1080 y solo permite usuarios con contraseña. Reemplace el nombre de la interfaz externa (eth0) por la suya — se muestra con el comando ip -br addr.
logoutput: syslog
internal: eth0 port = 1080
external: eth0
clientmethod: none
socksmethod: username
user.privileged: root
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: error connect disconnect
}Qué ocurre aquí:
internal— la dirección y el puerto en los que Dante acepta conexiones de clientes;external— la interfaz desde la que el proxy establece conexiones con los servidores destino;clientmethod— verificación a nivel de conexión TCP, antes de que empiece la sesión SOCKS;nonesignifica que en esta etapa no se hace ninguna comprobación;socksmethod: username— comprobación de usuario y contraseña en el ámbito de SOCKS5. Dante los compara con la base de usuarios del sistema, por eso necesita permisos root para leer las contraseñas al arrancar (user.privileged), y el trabajo principal lo realiza con un usuario sin privilegios (user.notprivileged);client pass— quién tiene permitido conectarse al proxy;socks pass— qué comandos SOCKS y hacia dónde están permitidos:connect— conexión TCP normal,bind— conexiones entrantes (necesario, por ejemplo, para FTP en modo activo),udpassociate— envío de UDP.
Las reglas se evalúan de arriba abajo; se aplica la primera que encaja. Si ninguna encaja, el acceso queda denegado.
El usuario para el proxy se crea como una cuenta del sistema sin permiso de inicio de sesión:
sudo useradd -r -M -s /usr/sbin/nologin proxyuser
sudo passwd proxyuserArranque y verificación:
sudo systemctl restart danted
sudo systemctl status danted
curl -x socks5h://proxyuser:ПАРОЛЬ@192.0.2.10:1080 https://ifconfig.meEl prefijo socks5h significa que el nombre del sitio lo resuelve el proxy y no el cliente. El comando debe mostrar la dirección externa del servidor con Dante.
Conexión de clientes
- Navegador. En Firefox el proxy SOCKS se configura en las opciones de red: host, puerto 1080, tipo SOCKS v5 y la casilla «Enviar consultas DNS a través del proxy». Chromium y los navegadores basados en él toman la configuración del sistema o el parámetro de arranque
--proxy-server="socks5://192.0.2.10:1080"; no soportan la contraseña para SOCKS, por eso para ellos normalmente se restringe el proxy por direcciones. - Programas de consola. Muchas utilidades, incluido curl, reconocen la variable de entorno
ALL_PROXY=socks5h://proxyuser:ПАРОЛЬ@192.0.2.10:1080. - SSH. La conexión a un servidor a través de un proxy SOCKS se especifica en
~/.ssh/configcon el parámetroProxyCommand nc -X 5 -x 192.0.2.10:1080 %h %p(se necesita netcat de OpenBSD). Este método no transmite la contraseña, por lo que es adecuado para proxys restringidos por direcciones. - Aplicaciones sin soporte de proxy se encaminarán al SOCKS mediante tun2socks o proxychains.
Restricción de acceso por direcciones
Si el proxy solo debe servir a empleados de la oficina o a otros de sus servidores, limite la fuente en client pass:
client pass {
from: 198.51.100.0/24 to: 0.0.0.0/0
log: error
}También en socks pass se puede prohibir el acceso a redes internas, para que no se pueda llegar a su infraestructura local a través del proxy. La regla que deniega se coloca antes de la que permite:
socks block {
from: 0.0.0.0/0 to: 10.0.0.0/8
log: connect error
}Errores típicos
- Proxy abierto. Una configuración sin contraseña y con
from: 0.0.0.0/0es rápidamente encontrada por escáneres y usada para enviar spam y realizar ataques desde su dirección. Activesocksmethod: usernameo limite las fuentes por direcciones; mejor — ambas cosas. - La contraseña se transmite en texto plano. Así funciona SOCKS5: usuario y contraseña viajan por la red sin cifrar. La documentación de Dante advierte expresamente sobre esto. Si los clientes se conectan a través de Internet, encapsule SOCKS dentro de un túnel SSH o WireGuard.
- Interfaz externa incorrecta. Si en
externalse indica una interfaz sin salida a Internet, el cliente se conecta al proxy pero no se establecen las conexiones salientes. - Puerto cerrado en el cortafuegos. Hay que abrir el puerto TCP 1080, y para
udpassociatetambién los puertos UDP por los que Dante envía datagramas. - El cliente usa SOCKS4. En SOCKS4 no hay autenticación por contraseña, por lo que con
socksmethod: usernameesos clientes recibirán rechazo. - Errores en la configuración. Tras editar conviene revisar el registro:
journalctl -u danted -n 50. Dante indica el número de línea con el error.
Ventajas y limitaciones
Ventajas:
- proxifica cualquier tráfico TCP y UDP, no solo web;
- consume pocos recursos y funciona incluso en el VPS más pequeño;
- reglas flexibles de acceso por direcciones, usuarios y comandos SOCKS;
- larga trayectoria y funcionamiento estable;
- licencia libre, paquetes en las principales distribuciones.
Limitaciones:
- no tiene funciones de proxy HTTP: cacheo, filtrado por URL, terminación TLS — para eso hacen falta Squid o Nginx;
- la contraseña en SOCKS5 no está cifrada, hay que proteger el canal por separado;
- configuración solo por archivo de texto, no hay interfaz gráfica;
- no hay contabilidad de tráfico por usuario integrada — solo el registro de conexiones.
Cuándo elegir Dante
Dante es adecuado cuando se necesita un proxy SOCKS5 fiable con autenticación y reglas de acceso claras: para aplicaciones que necesitan salir desde una dirección concreta, para acceso a servicios con lista blanca de IP o para encaminar el tráfico de contenedores mediante tun2socks. Si en cambio se necesitan proxy HTTP, contabilidad de tráfico y límites por usuario en un solo programa, es más cómodo 3proxy; si son importantes el filtrado de tráfico web y los informes de sitios visitados — Squid.
// Contact
¿Necesitas ayuda?
Escríbeme y te ayudaré a resolver el problema
Respondo en un día laborable (03:00-13:00 GMT)
Или оставьте заявку здесь:
// Related