لحظهای که کلید TUN را میزنید، سه چیز در سیستم رخ میدهد: یک کارت شبکه ظاهر میشود، جدول مسیریابی بازنویسی میشود، و پورت ۵۳ ربوده میشود.
این سه را بفهمید تا هر مشکل دشوار TUN جهتی برای بررسی داشته باشد.
۱. ساختن کارت مجازی
TUN گونهای دستگاه شبکهٔ مجازی است که سیستمعامل فراهم میکند. از دید سیستم یک کارت شبکهٔ معمولی است، فقط سر دیگرش کابل فیزیکی نیست بلکه یک برنامه در فضای کاربر است — اینجا همان هستهٔ Mihomo.
پیادهسازی در هر پلتفرم:
| پلتفرم | پیادهسازی | دسترسی لازم |
|---|---|---|
| Windows | درایور wintun | مدیر (نصب درایور بهعلاوهٔ سرویس سیستمی) |
| macOS | افزونهٔ هستهٔ utun | root (helper با دسترسی بالا) |
| Linux | /dev/net/tun | CAP_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 پیشوند را بلندتر میکند، پس مطمئناً پیشفرض اصلی را میزند — و در ضمن آن پیشفرض سر جایش میماند تا ترافیک خروجی خود هسته هنوز عادی بیرون برود.
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 — اپراتور شما میبیند چه نامهایی را جستوجو کردهاید
۴. پشته: gvisor یا system یا mixed
TUN بستههای خام IP میگیرد، پس به یک پشتهٔ TCP/IP نیاز دارد تا آنها را به اتصال تبدیل کند. سه پیادهسازی:
راهنما:
| وضعیت | انتخاب |
|---|---|
| مطمئن نیستید / راهاندازی اول | mixed |
| مشکلهای عجیب اتصال | gvisor |
| روتر نرمافزاری، دنبال گذردهی | system |
| مشکل UDP روی مک | gvisor |
۵. MTU و تکهتکه شدن
tun:
mtu: 1500MTU بیشینهٔ اندازهٔ یک بسته است. 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 و تونل تفکیکی در عمل.
مستندات مرتبط
fake-ip واقعاً چطور کار میکند، چه فرقی با redir-host دارد، تقسیم کار میان nameserver و fallback، چطور جلوی نشت DNS را بگیریم، و چرا نامهای داخلی از حل شدن بازمیمانند.
چه چیزی ترافیک بازی را متفاوت میکند: چرا UDP به TUN نیاز دارد، نوع NAT واقعاً یعنی چه، چرا از دست رفتن بسته از تأخیر بدتر است، و فهرستی از تنظیمها با هدف تأخیر کم.
هر ستون چه معنایی دارد و چطور به کارش ببریم: یافتن برنامهای که ترافیک را میخورد، علت انفجار تعداد اتصال، گلوگاه گذردهی کجاست، و پایش پیوسته از راه API.