Recherche sur le site Web

Installer le serveur proxy Dante Socks v5 sur Ubuntu 26.04


Ceci est un guide étape par étape montrant comment installer et configurer le serveur proxy Dante socks5 sur Ubuntu 26.04 LTS.

Dante est un logiciel libre et open-source permettant de router le trafic réseau entre les clients et les serveurs. Avec lui, vous pouvez contourner les restrictions réseau, par exemple visiter des ressources réseau qui ne sont pas accessibles via un accès direct.

Vous pouvez également l'utiliser pour masquer votre adresse IP originale, de sorte que le serveur de destination ne voie que l'adresse IP du serveur Dante. Dans mon cas, j'utilise le proxy Dante Socks pour réduire la latence afin d'améliorer l'expérience de jeu.

Prérequis :

Pour suivre ce tutoriel, vous avez besoin d'un serveur Ubuntu 26.04 avec des privilèges sudo.

Dans mon cas, j'ai un serveur VPS avec 1 processeur central, 1 Go de mémoire et 20 Go de stockage.

Étape 1 : Installer le serveur Dante

Dante est disponible dans Ubuntu et dans les dépôts système de la plupart des autres distributions Linux. Pour l’installer, connectez-vous à votre serveur Ubuntu, puis exécutez les commandes ci-dessous une par une :

sudo apt update
sudo apt install dante-server

Après avoir installé le paquet serveur, il créera automatiquement un service systemd et l'exécutera silencieusement en arrière-plan.

Pour vérifier l'état du service, utilisez la commande :

systemctl status danted.service

Pour Debian, exécutez systemctl enable --now danted.service pour activer et démarrer le service s'il ne fonctionne pas.

Si le service est activé mais n’a pas réussi à s’exécuter, ne vous inquiétez pas, suivez l’étape 2 pour modifier le fichier de configuration.

Étape 2 : Configurer le serveur Dante

Dante charge par défaut le fichier /etc/danted.conf pour les configurations du serveur. Le fichier a par défaut toutes les configurations désactivées, ce qui empêche le service de fonctionner.

Pour modifier le fichier de configuration, vous pouvez probablement d'abord faire une sauvegarde (ou supprimer le fichier si vous le souhaitez) en exécutant la commande :

sudo mv /etc/danted.conf /etc/danted.conf.backup

Ensuite, exécutez la commande ci-dessous pour modifier le fichier :

sudo nano /etc/danted.conf

La commande créera automatiquement le fichier avec un contenu vide si vous avez supprimé le fichier original ou utilisé la commande mv pour effectuer une sauvegarde.

Lorsque le fichier s'ouvre, ajoutez le contenu suivant et modifiez-le en conséquence.

logoutput: /var/log/danted.log
errorlog: /var/log/danted.errlog
user.privileged: root
user.unprivileged: nobody

# The listening network interface or address.
internal: 0.0.0.0 port=1080
internal: :: port = 1080

# The proxying network interface or address.
external: eth0

# socks-rules determine what is proxied through the external interface.
socksmethod: username

# client-rules determine who can connect to the internal interface.
clientmethod: none

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
    log: error connect disconnect
}

Voici plus d'informations sur les règles :

  • logoutput: /var/log/danted.log - définir l’emplacement du journal d’accès (optionnel).
  • errorlog : /var/log/danted.errlog - définir l’emplacement du journal des erreurs (facultatif).
  • user.privileged : root - exécuter le service en arrière-plan en tant que root, il abandonnera les privilèges par la suite.
  • user.unprivileged : nobody - exécuter le fonctionnement normal du proxy avec l’utilisateur nobody.
  • internal: 0.0.0.0 port=1080 - écoute sur toutes les interfaces IPv4 sur le port 1080. Si vous le souhaitez, vous pouvez modifier l'adresse IP et le numéro de port en conséquence.
  • internal: :: port=1080 - écouter sur IPv6 (facultatif).
  • external: eth0 - remplacez eth0 par le nom de l’interface réseau de votre serveur. Exécutez la commande ip route get 1.1.1.1 | awk '{print $5; exit}' sur le serveur pour le savoir.
  • clientmethod : none - signifie que toute IP dans client pass {} peut démarrer une connexion TCP.
  • socksmethod: username - vous devez fournir un nom d'utilisateur et un mot de passe pour l'authentification, même avec clientmethod: none. Utilisez socksmethod: none (bien que non sécurisé) afin que toute IP dans la section socks pass {} puisse accéder sans authentification.
  • client pass { from: 0.0.0.0/0 to: 0.0.0.0/0 ...} - la première passerelle (connexion TCP) lorsque le client tente d'accéder au serveur Dante. Cela signifie permettre l'accès depuis n'importe quelle IP vers n'importe quelle interface réseau sur le serveur. Vous pouvez utiliser from: 23.168.111.125/32 to: 0.0.0.0/0, de sorte que seule une certaine IP (23.168.111.125 dans ce cas est votre IP PUBLIQUE) puisse accéder.
  • socks pass { from: 0.0.0.0/0 to: 0.0.0.0/0 ...} - contrôle ce que les clients autorisés peuvent faire. Avec socksmethod: username, une authentification par mot de passe est nécessaire. De plus, vous pouvez remplacer l’IP en conséquence.

Les règles ci-dessus sont pour les connexions TCP. Vous pouvez ajouter plus de sections client pass {} et socks pass {} avec les règles suivantes :

  • from: ::/0 to: ::/0 - permet d'accéder depuis n'importe quelle adresse IPv6.
  • command: udpreply - autoriser l'association UDP.
  • udp.portrange : 40000-45000 - définir la plage de ports UDP.

Donc, cela peut ressembler à :

client pass {
  from: 0.0.0.0/0 to: 0.0.0.0/0
}
client pass {
  from: ::/0 to: ::/0
}

socks pass {
  from: 0.0.0.0/0 to: 0.0.0.0/0
  command: connect udpassociate
  log: connect disconnect ioop
}
socks pass {
  from: ::/0 to: ::/0
  command: connect udpassociate
  log: connect disconnect ioop
}

# Log UDP replies from remote hosts back to clients
socks pass {
  from: 0.0.0.0/0 to: 0.0.0.0/0
  command: udpreply
  log: connect disconnect ioop
}
socks pass {
  from: ::/0 to: ::/0
  command: udpreply
  log: connect disconnect ioop
}

Après avoir modifié le fichier, appuyez sur Ctrl+S pour enregistrer, et sur Ctrl+X pour quitter.

Étape 3 : Créer un utilisateur pour l'authentification

Pour des fins d'authentification, vous devez créer un utilisateur côté serveur en exécutant la commande ci-dessous :

sudo useradd -M -s /usr/sbin/nologin USER_NAME_HERE

Ensuite, définissez un mot de passe pour l'utilisateur :

sudo passwd USER_NAME_HERE

Remplacez USER_NAME_HERE par le nom de votre choix. Ensuite, vous pouvez utiliser le nom d'utilisateur et le mot de passe pour vous authentifier lors de la connexion.

Étape 4 : Créer des fichiers journaux et changer la propriété

Si vous avez activé les journaux, vous devez également modifier la propriété des fichiers journaux.

Tout d'abord, exécutez la commande pour créer les fichiers journaux :

touch /var/log/danted.log
touch /var/log/danted.errlog

Ensuite, changez le propriétaire en nobody et le groupe en nogroup :

chown nobody:nogroup /var/log/danted.log
chown nobody:nogroup /var/log/danted.errlog

Étape 5 : Configurer le pare-feu

Si vous avez le pare-feu activé sur le serveur Ubuntu (exécutez sudo ufw status), exécutez alors les commandes ci-dessous pour ouvrir les ports pour le serveur proxy Dante :

sudo ufw allow 1080/tcp

Ici, remplacez 1080 selon le port que vous utilisez, et exécutez également la commande ci-dessous si vous avez l'association UDP activée :

sudo ufw allow 40000:45000/udp

Étape 6 : Appliquer les modifications

Enfin, redémarrez le service dante pour appliquer les modifications :

sudo systemctl restart danted

Et, exécutez la commande ci-dessous pour vérifier l'état du service :

sudo systemctl status danted --no-pager

Toute mauvaise configuration dans /etc/danted.conf peut entraîner l'échec du démarrage du service.

Étape 7 : Essayez de vous connecter au serveur Dante

Après avoir correctement configuré le serveur, vous pouvez essayer d'exécuter la commande ci-dessous sur un ordinateur Linux local pour démarrer la connexion :

curl -v -x socks5://USER_NAME:PASSWORD@SERVER_IP:1080 http://www.google.com/
It should output something looks like:
*   Trying xx.xxx.xxx.xxx:1080...
* Host www.google.com:80 was resolved.
* IPv6: 2001:4860:482a:7700::, 2001:4860:4826:7700::, 2001:4860:482b:7700::, 2001:4860:4827:7700::, 2001:4860:4829:7700::, 2001:4860:482d:7700::, 2001:4860:4828:7700::, 2001:4860:482c:7700::
* IPv4: 142.251.153.119, 142.251.156.119, 142.251.150.119, 142.251.157.119, 142.251.152.119, 142.251.154.119, 142.251.151.119, 142.251.155.119
* Opened SOCKS connection from 192.168.0.104 port 49060 to www.google.com port 80 (via 23.106.152.194 port 1138)
* Established connection to 23.106.152.194 (23.106.152.194 port 1138) from 192.168.0.104 port 49060 
* using HTTP/1.x
...

Pour un client SOCKS5 graphique, j'utilise Proxifier, qui cependant n'est PAS un logiciel gratuit. Vous pouvez essayer le logiciel libre et open-source ProxyBridge qui fonctionne sur Linux, Windows et macOS.