// 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:

bash
sudo apt update
sudo apt install dante-server

La 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; none significa 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:

bash
sudo useradd -r -M -s /usr/sbin/nologin proxyuser
sudo passwd proxyuser

Arranque y verificación:

bash
sudo systemctl restart danted
sudo systemctl status danted
curl -x socks5h://proxyuser:ПАРОЛЬ@192.0.2.10:1080 https://ifconfig.me

El 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/config con el parámetro ProxyCommand 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/0 es rápidamente encontrada por escáneres y usada para enviar spam y realizar ataques desde su dirección. Active socksmethod: username o 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 external se 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 udpassociate tambié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: username esos 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)

Или оставьте заявку здесь:

Confirme que no es un bot.

Escribir y recibir una respuesta rápida