رفتن به محتوای اصلی
FA

خانه / وبلاگ / DNS و شبکه

درون TUN — کارت مجازی و جدول مسیریابی و ربودن DNS چطور با هم کار می‌کنند

DNS و شبکه2026-06-261582 واژه4 دقیقه مطالعه
درون TUN — کارت مجازی و جدول مسیریابی و ربودن DNS چطور با هم کار می‌کنند

لحظه‌ای که کلید TUN را می‌زنید، سه چیز در سیستم رخ می‌دهد: یک کارت شبکه ظاهر می‌شود، جدول مسیریابی بازنویسی می‌شود، و پورت ۵۳ ربوده می‌شود.

این سه را بفهمید تا هر مشکل دشوار TUN جهتی برای بررسی داشته باشد.

۱. ساختن کارت مجازی

TUN گونه‌ای دستگاه شبکهٔ مجازی است که سیستم‌عامل فراهم می‌کند. از دید سیستم یک کارت شبکهٔ معمولی است، فقط سر دیگرش کابل فیزیکی نیست بلکه یک برنامه در فضای کاربر است — اینجا همان هستهٔ Mihomo.

سفر یک بستهبرنامهیک بستهٔ IP بیرون می‌دهدمسیریابی سیستمتصمیم می‌گیرد از کدام کارت برودکارت مجازی TUNبسته به برنامهٔ هسته سپرده می‌شودMihomo پردازشش می‌کندبر پایهٔ قواعد مستقیم یا فرستادن را تعیین می‌کند
برای برنامه کاملاً شفاف است و گمان می‌کند به‌طور عادی روی شبکه است

پیاده‌سازی در هر پلتفرم:

پلتفرمپیاده‌سازیدسترسی لازم
Windowsدرایور wintunمدیر (نصب درایور به‌علاوهٔ سرویس سیستمی)
macOSافزونهٔ هستهٔ utunroot (helper با دسترسی بالا)
Linux/dev/net/tunCAP_NET_ADMIN

«حالت سرویس» در Clash Verge دقیقاً برای همین هست که هر بار درخواست ارتقای دسترسی نشود — یک بار سرویس سیستمی نصب می‌شود و از آن پس عملیات ممتاز را خودش انجام می‌دهد.

۲. بازنویسی جدول مسیریابی

کارت به‌تنهایی کافی نیست؛ باید به سیستم گفته شود ترافیک را به آن بفرستد. این کار با تغییر مسیرها انجام می‌شود.

با auto-route: true هسته مسیرهایی مثل این‌ها اضافه می‌کند:

0.0.0.0/1    → کارت TUN
128.0.0.0/1  → کارت TUN

چرا دو مسیر /1 و نه یک 0.0.0.0/0؟

چون تطبیق مسیر بر پایهٔ «بلندترین پیشوند اول» است. مسیر پیش‌فرض موجود سیستم 0.0.0.0/0 است؛ اگر TUN هم 0.0.0.0/0 ادعا کند، دو مسیر با طول برابر مبهم می‌شوند. تقسیم به دو مسیر /1 پیشوند را بلندتر می‌کند، پس مطمئناً پیش‌فرض اصلی را می‌زند — و در ضمن آن پیش‌فرض سر جایش می‌ماند تا ترافیک خروجی خود هسته هنوز عادی بیرون برود.

اولویت مسیرها، از بالاترین1مسیر میزبان مشخص 322دو مسیر 1 مربوط به TUN3مسیر پیش‌فرض اصلی 0
IP سرور گره باید از کارت فیزیکی برود، وگرنه ترافیکش دوباره به TUN حلقه می‌زند

auto-detect-interface: true به هسته اجازه می‌دهد کارت خروجی واقعی (وای‌فای یا اترنت) را خودش تشخیص بدهد تا با عوض شدن شبکه دنبالتان بیاید.

گزینهٔ strict-route چه می‌کند

tun:
  strict-route: true

این قواعد مسیریابی و سیاست فایروال سختگیرانه‌تری اضافه می‌کند تا چیزی از کنار TUN رد نشود. اثر جانبی‌اش احتمال بیشتر تعارض با دیگر نرم‌افزارهای VPN است.

وقتی باید با یک VPN هم‌زیستی کنید خاموشش کنید.

مستثنا کردن یک کارت مشخص

برای هم‌زیستی با VPN سازمانی:

tun:
  exclude-interface: ["ppp0", "Cisco AnyConnect"]

۳. ربودن DNS

tun:
  dns-hijack:
    - any:53

معنی‌اش: هر پرس‌وجوی DNS که به پورت ۵۳ فرستاده شود، هر سروری هم که نشانی‌اش باشد، رهگیری و توسط حل‌کنندهٔ خود هسته پاسخ داده می‌شود.

چرا لازم است: بعضی برنامه‌ها سرور DNS را سفت در کد می‌نویسند (مثلاً مستقیم از 8.8.8.8 می‌پرسند) و تنظیمات سیستم شما را دور می‌زنند. بدون ربودن، آن پرس‌وجوها از مسیر اصلی بیرون می‌روند، یعنی:

  • پاسخ‌های نادقیق (احتمالاً مسموم)
  • از دست رفتن اطلاعات دامنه، که هسته را با تطبیق فقط بر پایهٔ IP تنها می‌گذارد
  • نشت DNS — اپراتور شما می‌بیند چه نام‌هایی را جست‌وجو کرده‌اید
با ربودن DNS و بدون آنبرنامه سفت از 8.8.8.8 می‌پرسدیک بستهٔ UDP به پورت ۵۳ می‌فرستدبدون ربودنبسته از راه TUN به 8.8.8.8 فرستاده می‌شودبا ربودنهسته رهگیری‌اش می‌کند و خودش جواب می‌دهدنتیجهاولی ممکن است مسموم شود و نشت می‌کند، دومی زیر کنترل شما
زیر TUN گزینهٔ dns-hijack عملاً اجباری است

۴. پشته: gvisor یا system یا mixed

TUN بسته‌های خام IP می‌گیرد، پس به یک پشتهٔ TCP/IP نیاز دارد تا آن‌ها را به اتصال تبدیل کند. سه پیاده‌سازی:

بده‌بستان میان سه پشتهgvisorپشته دبهترین سازگاریکارایی کمی پایین‌ترپیشنهاد پیش‌فرضsystemبه پشتبالاترین کاراییبه پیکربندی سیستم سختگیر است، سازگاری کمتربرای دنبال بیشترین گذردهی رفتنmixedTCP روراه میانهبهترین پاسخ برای بیشتر مواردپیش‌فرض معمول Mihomo
وقتی چیزی خراب می‌شود اول به gvisor بروید — کمتر از همه بدرفتاری می‌کند

راهنما:

وضعیتانتخاب
مطمئن نیستید / راه‌اندازی اولmixed
مشکل‌های عجیب اتصالgvisor
روتر نرم‌افزاری، دنبال گذردهیsystem
مشکل UDP روی مکgvisor

۵. MTU و تکه‌تکه شدن

tun:
  mtu: 1500

MTU بیشینهٔ اندازهٔ یک بسته است. MTU کارت TUN را بزرگ‌تر از آنچه لینک واقعی تاب می‌آورد بگذارید و بسته‌ها تکه‌تکه می‌شوند و کارایی می‌افتد؛ خیلی کوچک بگذارید و بهره‌وری انتقال پایین می‌آید.

عدد ۱۵۰۰ استاندارد اترنت است و معمولاً نیاز به تغییر ندارد. اما اگر گره‌تان روی لینکی کار می‌کند که خودش سربار کپسوله‌سازی دارد (بعضی واسط‌ها، اتصال PPPoE)، MTU قابل‌استفاده زیر ۱۵۰۰ است و ممکن است ۱۴۰۰ تا ۱۴۵۰ لازم شود.

۶. یک پیکربندی کامل TUN

tun:
  enable: true
  stack: mixed
  device: Mihomo
  auto-route: true
  auto-detect-interface: true
  auto-redirect: false          # هدایت اضافه روی لینوکس
  strict-route: false
  mtu: 1500
  dns-hijack:
    - any:53
    - tcp://any:53
  # کارت‌ها را مستثنا کنید تا تعارض VPN پیش نیاید
  # exclude-interface: ["ppp0"]
  # برنامه‌های مشخص را مستثنا کنید (Mihomo)
  # exclude-package: ["com.example.app"]   # Android

پیکربندی DNS همراهش:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "+.pool.ntp.org"
    - "+.msftconnecttest.com"
    - "+.msftncsi.com"
  nameserver: [223.5.5.5, https://doh.pub/dns-query]

DNS باید هم‌زمان تنظیم شود — TUN همهٔ ترافیک را گرفته، پس اگر DNS غلط باشد اصلاً هیچ‌چیز حل نمی‌شود.

علت زیربنایی مشکل‌های رایج

نشانهعلت زیربناییراه‌حل
بعد از روشن کردن TUN همه‌چیز می‌میردمسیرها بازنویسی شده‌اند ولی ترافیک خود هسته حلقه می‌زندauto-detect-interface: true را تأیید کنید؛ دوباره اجرا کنید
بعد از بستن برنامه شبکه برنمی‌گرددفرایند به‌زور کشته شده و مسیرها پس گرفته نشده‌اندClash Verge را دوباره اجرا و درست خارج شوید، یا سیستم را ری‌استارت کنید
دستگاه‌های شبکهٔ محلی در دسترس نیستندقاعدهٔ مستقیمی برای بازه‌های خصوصی نیستIP-CIDR,192.168.0.0/16,DIRECT,no-resolve را اضافه کنید
NAS یا چاپگر پیدا نمی‌شودنام‌های mDNS در fake-ip گیر افتاده‌اند"*.local" و "*.lan" را به fake-ip-filter اضافه کنید
با VPN سازمانی تعارض داردهر دو جدول مسیریابی را بازنویسی می‌کنندstrict-route را خاموش کنید و exclude-interface بگذارید
سیستم می‌گوید «اتصال اینترنتی نیست»نام بررسی اتصال از fake-ip گذشته"+.msftconnecttest.com" را به فیلتر اضافه کنید
دانلودهای بزرگ گیر می‌کنندMTU بزرگ و از دست رفتن تکه‌هاmtu را روی ۱۴۰۰ بگذارید
بازی‌های UDP وصل نمی‌شوندگره از UDP پشتیبانی نمی‌کند، یا پشته نامناسب استudp: true گره را تأیید کنید، پشته را به gvisor ببرید
مصرف پردازنده بالاستهمهٔ ترافیک از پشتهٔ فضای کاربر می‌گذردپشته را به system ببرید، یا TUN را کنار بگذارید و پروکسی سیستم بردارید

چطور بسنجیم TUN واقعاً کار می‌کند

کارت را ببینید:

# Windows
Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*wintun*"}
# Linux / macOS
ip link show    # یا ifconfig

باید کارتی به نام Mihomo یا utunX ببینید.

مسیرها را ببینید:

# Windows
route print -4
# Linux
ip route show

باید دو مسیر /1 ببینید که به کارت TUN اشاره می‌کنند.

بررسی کنید ترافیک واقعاً از آن می‌گذرد:

صفحهٔ اتصال‌ها را در Clash Verge باز کنید و با برنامه‌ای که قطعاً پروکسی سیستم را نادیده می‌گیرد — مثلاً curl خط فرمان بدون متغیر محیطی — به اینترنت بروید. پیدا شدن مدخلی در صفحهٔ اتصال‌ها یعنی TUN برقرار است.

خلاصه

سه کاری که TUN می‌کند:

  • کارت مجازی — به درایور و دسترسی نیاز دارد که حالت سرویس مدیریتش می‌کند
  • جدول مسیریابی — دو مسیر /1 همه‌چیز را می‌گیرند و IP گره‌ها به کارت فیزیکی چسبانده می‌شوند
  • ربودن DNS — جلوی دور زدن هسته توسط حل‌کننده‌های سفت‌نوشته‌شده را می‌گیرد

وقتی چیزی می‌شکند این سه لایه را طی کنید: کارت هست ← مسیرها درست‌اند ← DNS کار می‌کند.

بیشتر بخوانید: توضیح DNS و fake-ip و تونل تفکیکی در عمل.


مستندات مرتبط

پیکربندی DNS در Clash — fake-ip یا redir-host؟
DNS و شبکه پیکربندی DNS در Clash — fake-ip یا redir-host؟

fake-ip واقعاً چطور کار می‌کند، چه فرقی با redir-host دارد، تقسیم کار میان nameserver و fallback، چطور جلوی نشت DNS را بگیریم، و چرا نام‌های داخلی از حل شدن بازمی‌مانند.

2026-07-131664 واژه4 دقیقه مطالعه