{"id":51480,"date":"2026-06-29T15:05:39","date_gmt":"2026-06-29T15:05:39","guid":{"rendered":"https:\/\/ubuntuhandbook.org\/?p=51480"},"modified":"2026-06-29T15:06:06","modified_gmt":"2026-06-29T15:06:06","slug":"install-dante-socks-v5-proxy-server-in-ubuntu-26-04","status":"publish","type":"post","link":"https:\/\/ubuntuhandbook.org\/index.php\/2026\/06\/install-dante-socks-v5-proxy-server-in-ubuntu-26-04\/","title":{"rendered":"Install Dante Socks v5 Proxy Server in Ubuntu 26.04"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-43605\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon-250x250.webp\" alt=\"\" width=\"250\" height=\"250\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon-250x250.webp 250w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon-300x300.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon-600x600.webp 600w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon-768x768.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2023\/01\/network-icon.webp 1200w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/p>\n<p>This is a step by step guide shows how to install and set up Dante socks5 proxy server in Ubuntu 26.04 LTS.<\/p>\n<p>Dante is a free open-source software allowing to route network traffic between clients and servers. With it, you may bypass network restrictions, e.g., visit network resources that&#8217;re not available via direct access.<\/p>\n<p>You may also use it to hide your original IP address, so that the destination server only sees the Dante server&#8217;s IP. In my case, I use dante socks proxy to reduce latency for better gaming experiences.<br \/>\n<!--more--><\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve.webp\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-51481\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve-700x289.webp\" alt=\"\" width=\"610\" height=\"252\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve-700x289.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve-300x124.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve-768x317.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-sockserve.webp 1493w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<h3>Prerequisites:<\/h3>\n<p>To follow this tutorial, you need an Ubuntu 26.04 server with sudo privileges.<\/p>\n<p>In my case, I have a VPS server with <code>1 core CPU<\/code>, <code>1 GB<\/code> memory, and <code>20 GB<\/code> storage.<\/p>\n<h3>Step 1: Install Dante Server<\/h3>\n<p>Dante is available in Ubuntu and most other Linux Distributions&#8217; system repositories. To install it, connect to your Ubuntu server, then run commands below one by one:<\/p>\n<pre>sudo apt update<\/pre>\n<pre>sudo apt install dante-server<\/pre>\n<p>After installed the server package, it will automatically create a systemd service and run it silently in the background.<\/p>\n<p>To check the service status, use command:<\/p>\n<pre>systemctl status danted.service<\/pre>\n<p>For Debian, run <code>systemctl enable --now danted.service<\/code> to enable and start the service if it&#8217;s not running.<\/p>\n<p>If the service is enabled but failed to run, don&#8217;t worry, follow step 2 to edit the configuration file.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-51482\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-service-700x492.webp\" alt=\"\" width=\"610\" height=\"429\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-service-700x492.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-service-300x211.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-service-768x540.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-service.webp 787w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<h3>Step 2: Configure Dante Server<\/h3>\n<p>Dante by default loads <code>\/etc\/danted.conf<\/code> file for server configurations. The file by default has all configuration disabled, causing the service failed to run.<\/p>\n<p>To edit the config file, you may probably firstly make a backup (or delete the file if you want) by running command:<\/p>\n<pre>sudo mv \/etc\/danted.conf \/etc\/danted.conf.backup<\/pre>\n<p>Next, run the command below to edit the file:<\/p>\n<pre>sudo nano \/etc\/danted.conf<\/pre>\n<p>The command will automatically create the file with empty content if you deleted the original file or used the <code>mv<\/code> command to backup.<\/p>\n<p>When file opens, add the following content and edit accordingly.<\/p>\n<pre>logoutput: \/var\/log\/danted.log\r\nerrorlog: \/var\/log\/danted.errlog\r\nuser.privileged: root\r\nuser.unprivileged: nobody\r\n\r\n# The listening network interface or address.\r\ninternal: 0.0.0.0 port=1080\r\ninternal: :: port = 1080\r\n\r\n# The proxying network interface or address.\r\nexternal: eth0\r\n\r\n# socks-rules determine what is proxied through the external interface.\r\nsocksmethod: username\r\n\r\n# client-rules determine who can connect to the internal interface.\r\nclientmethod: none\r\n\r\nclient pass {\r\n    from: 0.0.0.0\/0 to: 0.0.0.0\/0\r\n    log: error connect disconnect\r\n}\r\n\r\nsocks pass {\r\n    from: 0.0.0.0\/0 to: 0.0.0.0\/0\r\n    log: error connect disconnect\r\n}<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-51483\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-confedit-700x569.webp\" alt=\"\" width=\"610\" height=\"496\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-confedit-700x569.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-confedit-300x244.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-confedit-768x624.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-confedit.webp 840w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<p>Here are more about the rules:<\/p>\n<ul>\n<li><code>logoutput: \/var\/log\/danted.log<\/code> &#8211; set the access log location (optional).<\/li>\n<li><code>errorlog: \/var\/log\/danted.errlog<\/code> &#8211; set the error log location (optional).<\/li>\n<li><code>user.privileged: root<\/code> &#8211; run the background service as root, it will drop privilege afterwards.<\/li>\n<li><code>user.unprivileged: nobody<\/code> &#8211; run normal proxy operation with user <code>nobody<\/code>.<\/li>\n<li><code>internal: 0.0.0.0 port=1080<\/code> &#8211; listen on all IPv4 interfaces on port 1080. If want, you may change the IP and port number accordingly.<\/li>\n<li><code>internal: :: port = 1080<\/code> &#8211; listen on IPv6 (optional).<\/li>\n<li><code>external: eth0<\/code> &#8211; replace <b>eth0<\/b> with your server network interface name. Run <code>ip route get 1.1.1.1 | awk '{print $5; exit}'<\/code> command in server to tell.<\/li>\n<li><code>clientmethod: none<\/code> &#8211; means any IP in the <code>client pass {}<\/code> can start TCP connection.<\/li>\n<li><code>socksmethod: username<\/code> &#8211; you need to given username and password to authentication, even with <code>clientmethod: none<\/code>. Use <code>socksmethod: none<\/code> (though not secure) so any IP in <code>socks pass {}<\/code> section can access without authentication.<\/li>\n<li><code>client pass { from: 0.0.0.0\/0 to: 0.0.0.0\/0 ...}<\/code> &#8211; the first gate (TCP connection) when client trying to access dante server. It means allowing access from any IP to any network interface in server. You may use <code>from: 23.168.111.125\/32 to: 0.0.0.0\/0<\/code>, so only certain IP (23.168.111.125 in the case is your PUBLIC IP) can access.<\/li>\n<li><code>socks pass { from: 0.0.0.0\/0 to: 0.0.0.0\/0 ...}<\/code> &#8211; control what allowed clients may do. With <code>socksmethod: username<\/code> it needs password authentication. Also, you may replace IP accordingly.<\/li>\n<\/ul>\n<p>The rules above are for TCP connections. You may add more <code>client pass {}<\/code> and <code>socks pass {}<\/code> sections with following rules:<\/p>\n<ul>\n<li><code>from: ::\/0 to: ::\/0<\/code> &#8211; allow accessing from any IPv6 address.<\/li>\n<li><code>command: udpreply<\/code> &#8211; allow UDP associate.<\/li>\n<li><code>udp.portrange: 40000-45000<\/code> &#8211; set UDP port range.<\/li>\n<\/ul>\n<p>So, it can be look like:<\/p>\n<pre>client pass {\r\n  from: 0.0.0.0\/0 to: 0.0.0.0\/0\r\n}\r\nclient pass {\r\n  from: ::\/0 to: ::\/0\r\n}\r\n\r\nsocks pass {\r\n  from: 0.0.0.0\/0 to: 0.0.0.0\/0\r\n  command: connect udpassociate\r\n  log: connect disconnect ioop\r\n}\r\nsocks pass {\r\n  from: ::\/0 to: ::\/0\r\n  command: connect udpassociate\r\n  log: connect disconnect ioop\r\n}\r\n\r\n# Log UDP replies from remote hosts back to clients\r\nsocks pass {\r\n  from: 0.0.0.0\/0 to: 0.0.0.0\/0\r\n  command: udpreply\r\n  log: connect disconnect ioop\r\n}\r\nsocks pass {\r\n  from: ::\/0 to: ::\/0\r\n  command: udpreply\r\n  log: connect disconnect ioop\r\n}<\/pre>\n<p>After edited the file, press <b>Ctrl+S<\/b> to save, and <code>Ctrl+X<\/code> to exit.<\/p>\n<h3>Step 3: Create User for Authentication<\/h3>\n<p>For authentication purpose, you need to create a user in the server side by running the command below:<\/p>\n<pre>sudo useradd -M -s \/usr\/sbin\/nologin USER_NAME_HERE<\/pre>\n<p>Then set a password for the user:<\/p>\n<pre>sudo passwd USER_NAME_HERE<\/pre>\n<p>Replace USER_NAME_HERE with whatever name that you want. Then, you may use the username and password to authenticate during the connection.<\/p>\n<h3>Step 4: Create Log Files and Change ownership<\/h3>\n<p>If you enabled logs, then you also need to edit the ownership of log files.<\/p>\n<p>First, run command to create the log files:<\/p>\n<pre>touch \/var\/log\/danted.log<\/pre>\n<pre>touch \/var\/log\/danted.errlog<\/pre>\n<p>Then, change the owner to <code>noboby<\/code> and <code>nogroup<\/code>:<\/p>\n<pre>chown nobody:nogroup \/var\/log\/danted.log<\/pre>\n<pre>chown nobody:nogroup \/var\/log\/danted.errlog<\/pre>\n<h3>Step 5: Configure Firewall<\/h3>\n<p>If you have firewall enabled in the Ubuntu server (run <code>sudo ufw status<\/code>), then run the commands below to open the ports for dante proxy server:<\/p>\n<pre>sudo ufw allow 1080\/tcp<\/pre>\n<p>Here replace <code>1080<\/code> according to which port you use, and also run the command below if you have UDP association enabled:<\/p>\n<pre>sudo ufw allow 40000:45000\/udp<\/pre>\n<h3>Step 6: Apply Changes<\/h3>\n<p>Finally, restart the dante service to apply change:<\/p>\n<pre>sudo systemctl restart danted<\/pre>\n<p>And, do run the command below to check the service status:<\/p>\n<pre>sudo systemctl status danted --no-pager<\/pre>\n<p>Any mis-configuration in <code>\/etc\/danted.conf<\/code> may cause the service start failure.<\/p>\n<h3>Step 7: Try connecting to Dante server<\/h3>\n<p>After properly set up the server, you may try running the command below in a local Linux computer to start connection:<\/p>\n<pre>curl -v -x socks5:\/\/USER_NAME:PASSWORD@SERVER_IP:1080 http:\/\/www.google.com\/<\/pre>\n<pre>It should output something looks like:\r\n*   Trying xx.xxx.xxx.xxx:1080...\r\n* Host www.google.com:80 was resolved.\r\n* 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::\r\n* 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\r\n* Opened SOCKS connection from 192.168.0.104 port 49060 to www.google.com port 80 (via 23.106.152.194 port 1138)\r\n* Established connection to 23.106.152.194 (23.106.152.194 port 1138) from 192.168.0.104 port 49060 \r\n* using HTTP\/1.x\r\n...<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-51484\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-curlconnect-700x478.webp\" alt=\"\" width=\"610\" height=\"417\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-curlconnect-700x478.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-curlconnect-300x205.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-curlconnect-768x524.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2026\/06\/dante-curlconnect.webp 973w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<p>For a graphical socks5 client, I use proxifier, which however is NOT a free software. You may try the free open-source <a href=\"https:\/\/github.com\/InterceptSuite\/ProxyBridge\" target=\"_blank\" rel=\"noopener\">ProxyBridge<\/a> that works in Linux, Windows, and macOS.<\/p>","protected":false},"excerpt":{"rendered":"<p>This is a step by step guide shows how to install and set up Dante socks5 proxy server in Ubuntu 26.04 LTS. Dante is a free open-source software allowing to route network traffic between clients and servers. With it, you may bypass network restrictions, e.g., visit network resources that&#8217;re not available via direct access. You [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":43605,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[2171],"class_list":["post-51480","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","tag-socks5"],"_links":{"self":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/51480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/comments?post=51480"}],"version-history":[{"count":0,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/51480\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media\/43605"}],"wp:attachment":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media?parent=51480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/categories?post=51480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/tags?post=51480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}