Skip to content

Dante

Dante es un servidor proxy SOCKS (v4/v5) que permite enrutar conexiones TCP/UDP a través de un servidor intermedio. Ideal para redirigir tráfico de salida, encapsular conexiones o simplemente restringir el acceso a recursos externos.

Instalacion

En sistemas basados en Debian (APT):

apt update
apt install dante-server -y

Configuración

El archivo principal de configuración es /etc/danted.conf.

Parámetros de configuracion:

Logs:

1
2
3
4
5
6
7
=== LOGS ===
Salida del log.
Valores:
- /var/log/danted.log
- syslog

logoutput: /var/log/danted.log

Interfaces:

=== INTERFACES ===
IP/Interfaz y puerto en el que escucha peticiones.
Valores:
- eth0 port = 1080
- 0.0.0.0 port = 1080

internal: 0.0.0.0 port = 1080


IP/Interfaz por la que salen peticiones.
Valores:
- eth0
- 192.168.8.10

external: eth0

Usuario del aplicativo:

1
2
3
4
=== USUARIO NO PRIVILEGIADO ===
Usuario que usará el proceso una vez arrancado (mejor uno con permisos mínimos)

user.notprivileged: nobody

Metodos de autenticacion:

=== MÉTODOS DE AUTENTICACIÓN ===
El metodo de autenticacion.
Valores:
- none (proxy abierto)
- username (proxy filtrado por usuario y contraseña)

method: none
method: username

Se pueden habilitar ambos metodos, el primero tiene prioridad:

method: username none

El usuario se autentica contra el sistema, por lo que hay que crear el usuario en linux.

Reglas de cliente:

=== REGLAS DE CLIENTE ===
client: puede tener valor pass o block para indicar que la regla acepta o bloquea las peticiones de entrada.
  - pass
  - block
from: infica el origen y destino (y puerto si se indica)
  - 192.168.1.10/32 to: 8.8.8.8/32 port = 53
  - 192.168.1.10/32 to: 8.8.8.8/32 
log: indica lo que se registrara en el log sobre esta regla
     connect: Se logea al iniciar una conexión.
     disconnect: Se logea al cerrar una conexión.
     error: Registra errores de conexión o autenticación.
     data: Muestra tráfico.

Estructura:

client pass {
  from:
  log:
}

client block {
  from:
  log:
}

Reglas del SOCKS:

=== REGLAS DE SOCKS ===
socks: puede tener valor pass o block para indicar que la regla acepta o bloquea las peticiones de salida.
  - pass
  - block
from: infica el origen y destino (y puerto si se indica)
  - 192.168.1.10/32 to: 8.8.8.8/32 port = 53
  - 192.168.1.10/32 to: 8.8.8.8/32 
command: indica el tipo de trafico que esta permitido
  - connect: Permite conexiones TCP hacia destinos externos.
  - bind: Permite conexiones TCP entrantes (como un servidor que escucha detrás del proxy).
  - udpassociate: Habilita tráfico UDP (útil para DNS, VoIP, etc.).
  - udpreply: Respuestas UDP relacionadas con udpassociate
log: indica lo que se registrara en el log sobre esta regla
  - connect: Se logea al iniciar una conexión.
  - disconnect: Se logea al cerrar una conexión.
  - error: Registra errores de conexión o autenticación.
  - data: Muestra tráfico.

Estructura:

socks pass {
  from:
  command:
  log:
}

socks block {
  from:
  command:
  log:
}

Para el modo de autenticación necesitas crear usuarios en el sistema: `useradd -M -s /usr/sbin/nologin proxyuser` `passwd proxyuser`

Configuración Proxy Abierto:

internal: eth0 port = 1080
external: eth0
method: none
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: bind connect udpassociate
    log: connect disconnect error
}
EOF

Configuración Proxy con Autenticación

internal: eth0 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: bind connect udpassociate
    log: connect disconnect error
}
EOF

Iniciar el servicio

systemctl enable danted
systemctl start danted

Tests

Sin autenticación:

curl --socks5 192.168.1.10:1080 http://ipinfo.io

Sin autenticación y resolución DNS via proxy:

curl --socks5-hostname 192.168.1.10:1080 http://ipinfo.io

Con autenticación:

curl --socks5 user:[email protected]:1080 http://ipinfo.io

Con autenticacion y resolución DNS vía proxy SOCKS5:

curl --socks5-hostname user:[email protected]:1080 http://ipinfo.io

Logs y debug

Fichero de log:

tail -f /var/log/danted.log

También puedes iniciar el servicio en modo debug:

sockd -f /etc/danted.conf -D