Complete Guide to Setting Up a DNS Tunnel

Complete Guide to Setting Up a DNS Tunnel

SamNet Tech


این راهنما به شما کمک می‌کنه که روی سرور خودتون تونل DNS راه بندازید.

تونل DNS داده‌ها رو داخل درخواست‌های DNS رمزگذاری می‌کنه و چون DNS تقریباً هیچوقت فیلتر نمیشه،

حتی در زمان قطعی کامل اینترنت هم کار می‌کنه.


پروتکل‌هایی که نصب می‌کنیم:

 - Slipstream + SOCKS (سریع‌ترین - حدود 63 کیلوبایت بر ثانیه)

 - Slipstream + SSH (برای اتصال SSH از طریق DNS)

 - DNSTT + SOCKS (کلاسیک و پایدار - حدود 42 کیلوبایت بر ثانیه)


 پیش‌نیازها:



1. یک سرور VPS با سیستم‌عامل ترجیحا بر پایه Debian/Ubuntu

  - حداقل 1GB رم

  - آی‌پی ثابت (مثال: 1.2.3.4)

  - دسترسی root با SSH


2. یک دامنه (مثال: example.com)

  - دامنه باید روی Cloudflare باشه


3. اپلیکیشن SlipNet برای موبایل (اندروید)

  - دانلود از GitHub: github.com/anonvector/SlipNet/releases




 مرحله ۱: تنظیم DNS در Cloudflare


وارد داشبورد Cloudflare بشید و دامنه‌تون رو انتخاب کنید.

به قسمت DNS > Records برید.


رکوردهای زیر رو اضافه کنید:


 رکورد ۱: نوع A  | نام: ns | مقدار: آی‌پی سرور  | پراکسی: خاموش (DNS Only)

 رکورد ۲: نوع NS | نام: t2 | مقدار: ns.example.com

 رکورد ۳: نوع NS | نام: d2 | مقدار: ns.example.com

 رکورد ۴: نوع NS | نام: s2 | مقدار: ns.example.com


مهم:

 - رکورد A حتماً باید DNS Only باشه (ابر خاکستری، نه نارنجی)

 - نام رکورد A حتماً "ns" باشه (نه "tns")

 - به جای "example.com" دامنه خودتون رو بذارید

 - به جای "آی‌پی سرور" آی‌پی واقعی سرورتون رو بذارید


مثال برای example.com:

 A  ns  1.2.3.4      (DNS Only)

 NS  t2  ns.example.com

 NS  d2  ns.example.com

 NS  s2  ns.example.com


توضیح ساب‌دامین‌ها:

 t2 = Slipstream + SOCKS

 d2 = DNSTT + SOCKS

 s2 = Slipstream + SSH



 مرحله ۲: اتصال به سرور



از طریق SSH به سرور وصل بشید:


 ssh root@آی‌پی_سرور

 مرحله ۳: نصب dnstm



dnstm (DNS Tunnel Manager) ابزاریه که همه تونل‌ها رو مدیریت می‌کنه.


قبل از نصب، مطمئن بشید پورت 53 آزاده:


 ss -ulnp | grep :53


 - اگه خروجی خالی بود: پورت آزاده، برید مرحله بعد.

 - اگه توی خروجی کلمه "systemd-resolve" رو دیدید: باید غیرفعالش کنید:


 systemctl stop systemd-resolved

 systemctl disable systemd-resolved

 echo "nameserver 8.8.8.8" > /etc/resolv.conf


حالا dnstm رو نصب کنید:


 # دانلود باینری dnstm

 curl -fsSL -o /usr/local/bin/dnstm https://github.com/net2share/dnstm/releases/latest/download/dnstm-linux-amd64

 chmod +x /usr/local/bin/dnstm


 # نصب (حالت مولتی تونل - برای چند تونل همزمان)

 dnstm install --mode multi


 # بررسی نصب

 dnstm --version


نکته: دستور install همه چیز رو خودکار انجام میده:

 - دانلود باینری‌های تونل (slipstream-server, dnstt-server, microsocks)

 - ساخت کاربر سیستمی dnstm

 - تنظیم فایروال (پورت 53)

 - ایجاد سرویس DNS Router

 - نصب و راه‌اندازی microsocks (پراکسی SOCKS5)




 مرحله ۴: بررسی پورت 53


دستور dnstm install فایروال سرور رو تنظیم کرده.

ولی باید مطمئن بشید پورت 53 از بیرون قابل دسترسه.


بررسی کنید DNS Router داره گوش میده:


 ss -ulnp | grep :53


باید چیزی شبیه این ببینید:

 UNCONN ... 0.0.0.0:53 ... users:(("dnstm"...))


اگه خروجی خالیه، روتر رو استارت کنید:

 dnstm router start


اگه فایروال سرور پورت 53 رو بلاک کرده:


 # ufw

 ufw allow 53/tcp

 ufw allow 53/udp


 # iptables

 iptables -A INPUT -p tcp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --dport 53 -j ACCEPT


مهم:

 - بعضی هاستینگ‌ها یک فایروال جداگانه دارن (مثل پنل وب).

  حتماً پورت 53 UDP و TCP رو از اون پنل هم باز کنید.

 - مطمئن بشید هم UDP و هم TCP باز هستن (فقط TCP کافی نیست!)




 مرحله ۵: ایجاد تونل‌ها

--- تونل ۱: Slipstream + SOCKS ---


دستور زیر رو اجرا کنید (دامنه خودتون رو جایگزین کنید):


 dnstm tunnel add --transport slipstream --backend socks --domain t2.example.com --tag slip1



--- تونل ۲: DNSTT + SOCKS ---


 dnstm tunnel add --transport dnstt --backend socks --domain d2.example.com --tag dnstt1


بعد از ایجاد DNSTT، کلید عمومی (Public Key) نمایش داده میشه.

این کلید رو یادداشت کنید! برای تنظیم کلاینت لازمه.


اگه بعداً خواستید کلید رو ببینید:

 cat /etc/dnstm/tunnels/dnstt1/server.pub



--- تونل ۳: Slipstream + SSH ---


 dnstm tunnel add --transport slipstream --backend ssh --domain s2.example.com --tag slip-ssh



 مرحله ۶: فعال‌سازی سرویس‌ها


روتر DNS و تونل‌ها رو فعال کنید:


 # فعال‌سازی DNS Router

 dnstm router start


 # فعال‌سازی تونل‌ها

 dnstm tunnel start --tag slip1

 dnstm tunnel start --tag dnstt1

 dnstm tunnel start --tag slip-ssh


بررسی وضعیت:


 dnstm tunnel list


باید همه تونل‌ها Running باشن.




 مرحله ۷: بررسی SOCKS Proxy


تونل‌های SOCKS به یک پراکسی SOCKS5 نیاز دارن.

دستور dnstm install در مرحله ۳ خودکار microsocks رو نصب و راه‌اندازی کرده.


بررسی کنید:

 ps aux | grep microsocks

 systemctl status microsocks


اگه microsocks در حال اجراست، همه چیز اوکیه.


اگه به هر دلیلی کار نمی‌کنه:

 systemctl enable microsocks

 systemctl start microsocks




 مرحله ۸: ایجاد کاربر SSH تونل


این مرحله فقط برای تونل Slipstream+SSH لازمه.

اگه فقط Slipstream+SOCKS و DNSTT نصب کردید، این مرحله رو رد کنید.


ابتدا sshtun-user رو نصب کنید:


 curl -fsSL -o /usr/local/bin/sshtun-user https://github.com/net2share/sshtun-user/releases/latest/download/sshtun-user-linux-amd64

 chmod +x /usr/local/bin/sshtun-user


 # اعمال تنظیمات امنیتی SSH (فقط یکبار لازمه)

 sshtun-user configure


 # اگه خطای "already configured" گرفتید یعنی قبلاً اعمال شده و نیازی نیست


ایجاد کاربر:


 sshtun-user create نام‌کاربری --insecure-password رمزدلخواه


مثال:

 sshtun-user create myuser --insecure-password MyP@ssw0rd


این کاربر فقط می‌تونه تونل SSH بزنه و دسترسی shell نداره.




 مرحله ۹: تست و بررسی


--- تست ۱: بررسی پورت 53 از بیرون ---


از سایت check-host.net/check-dns استفاده کنید:

 آدرس: ns.دامنه‌شما.com


اگه همه نودها جواب دادن، پورت 53 بازه.



--- تست ۲: بررسی DNS Resolution ---


از کامپیوتر خودتون (ویندوز):


 nslookup t2.دامنه‌شما.com 8.8.8.8

 nslookup d2.دامنه‌شما.com 8.8.8.8


یا روی لینوکس/مک:


 dig @8.8.8.8 t2.دامنه‌شما.com A


اگه خطای SERVFAIL گرفتید، یعنی مشکلی هست (پورت 53 بسته یا DNS رکوردها غلطه).

اگه جواب خالی بود بدون خطا، یعنی همه چیز اوکیه.

(تونل DNS جواب A نمی‌ده، فقط ترافیک تونل رد می‌کنه)



--- تست ۳: بررسی پراکسی SOCKS ---


روی سرور:

 curl --socks5 127.0.0.1:19801 https://api.ipify.org


باید آی‌پی سرورتون رو نشون بده.



--- تست ۴: بررسی سرویس‌ها ---


 dnstm tunnel list

 dnstm router status


همه تونل‌ها باید Running باشن.




 مرحله ۱۰: تنظیم کلاینت (اپلیکیشن SlipNet)



اپلیکیشن SlipNet رو روی گوشی اندروید نصب کنید.


--- اضافه کردن Slipstream + SOCKS ---


 1. روی + بزنید

 2. نوع تونل: Slipstream

 3. دامنه: t2.دامنه‌شما.com

 4. DNS Resolver: 8.8.8.8:53

   (یا هر resolver دیگه‌ای مثل 1.1.1.1:53)

 5. SSH رو غیرفعال بذارید

 6. ذخیره و اتصال



--- اضافه کردن Slipstream + SSH ---


 1. روی + بزنید

 2. نوع تونل: Slipstream SSH

 3. دامنه: s2.دامنه‌شما.com

 4. DNS Resolver: 8.8.8.8:53

 5. SSH فعال:

   - Username: نام‌کاربری که ساختید

   - Password: رمزی که ساختید

   - Port: 22

 6. ذخیره و اتصال



--- اضافه کردن DNSTT + SOCKS ---


 1. روی + بزنید

 2. نوع تونل: DNSTT

 3. دامنه: d2.دامنه‌شما.com

 4. DNS Resolver: 8.8.8.8:53

 5. کلید عمومی: (کلید DNSTT سرور)

 6. ذخیره و اتصال



 نکات مهم



1. ریزالور‌های DNS:

  می‌تونید از ریزالورهای مختلف استفاده کنید.

  اگه یکی کار نکرد، بقیه رو امتحان کنید:


  - 8.8.8.8:53    (Google)

  - 1.1.1.1:53    (Cloudflare)

  - 9.9.9.9:53    (Quad9)

  - 208.67.222.222:53 (OpenDNS)

  - 94.140.14.14:53 (,)

  - 185.228.168.9:53 (CleanBrowsing)

185.49.84.2:53

176.65.231.61:53

5.198.178.125:53

91.106.67.82:53

188.213.66.140:53

193.228.90.34:53

212.80.16.72:53

185.129.118.121:53

193.228.136.129:53

5.202.255.21:53

185.140.58.2:53

185.140.59.186:53

89.45.89.250:53

185.165.30.119:53

91.92.209.75:53

=====================

 نکات مهم

=====================


1. ریزالور‌های DNS:

  می‌تونید از ریزالورهای مختلف استفاده کنید.

  اگه یکی کار نکرد، بقیه رو امتحان کنید.


2. سرعت:

  - تونل DNS سرعت بالایی نداره (حدود 40-60 کیلوبایت بر ثانیه)

  - فقط برای پیام‌رسانی، مرور وب ساده و ارسال پیام مناسبه

  - برای دانلود فایل بزرگ یا تماشای ویدیو مناسب نیست


3. امنیت:

  - ترافیک بین کلاینت و سرور رمزگذاری شده (TLS در Slipstream، Noise در DNSTT)

  - کاربر SSH تونل دسترسی shell نداره و فقط تونل می‌زنه


4. اگه کار نکرد:

  - اول مطمئن بشید پورت 53 UDP از بیرون باز و قابل دسترسه

  - رکوردهای DNS رو چک کنید (A record حتماً ns باشه، نه tns)

  - از ریزالور دیگه‌ای استفاده کنید

  - لاگ سرویس‌ها رو بررسی کنید:

   dnstm router logs

   dnstm tunnel logs --tag slip1

   dnstm tunnel logs --tag dnstt1




 خلاصه ساختار سرور



 Port 53 (UDP) --> DNS Router --> Route by subdomain

                  |

                  |-- t2.domain --> Port 5310 --> Slipstream --> SOCKS (19801)

                  |-- d2.domain --> Port 5311 --> DNSTT --> SOCKS (19801)

                  |-- s2.domain --> Port 5312 --> Slipstream --> SSH (22)


 Client (SlipNet) --> DNS Query --> Public Resolver --> Your Server --> Tunnel --> Internet




 لینک‌های مفید


کانال تلگرامی سم نت را دنبال کنید:
https://t.me/SamnetInternet

عضویت در گروه:
https://t.me/+u7myb8VgFrE2NDUx



 - dnstm:    https://github.com/net2share/dnstm

 - sshtun-user: https://github.com/net2share/sshtun-user

 - SlipNet:   https://github.com/anonvector/SlipNet/releases

 - Cloudflare:  https://dash.cloudflare.com



Report Page