TUN به سه چیز نیاز دارد و نبود یکی هم کافی است
هسته باید یک کارت شبکه مجازی بسازد، جدول مسیریابی را طوری بازنویسی کند که مسیر پیشفرض به آن اشاره کند، و برای هر دو کار مجوز کافی داشته باشد. یکی کم باشد، کلید روشن نمیماند. پیش از آنکه چیزی را دوباره نصب کنید، صفحه لاگ را باز کنید و به لحظهای برگردید که کلید را زدید: خطوط مربوط به TUN میگویند مجوز رد شده، دستگاه باز نشده، یا مسیر اصلاً ثبت نشده است. همان یک خط بقیه راه را تعیین میکند.
- کارت شبکه مجازی. ویندوز به درایور Wintun تکیه دارد؛ مک و لینوکس از دستگاه utun / tun خود سیستم استفاده میکنند.
- جدول مسیریابی. مسیر پیشفرض باید روی کارت مجازی منتقل شود و این در همه سیستمهای رایج یک عملیات ویژه است.
- مجوز. administrator، root، یا سرویسی که کلاینت از قبل نصب کرده است.
ویندوز: فایل درایور، بالا بردن سطح دسترسی و حالت سرویس
- فایل درایور نیست. کلاینتها معمولاً dll مربوط به Wintun را کنار فایل اجرایی میگذارند؛ هم قرنطینه شدن آن توسط آنتیویروس و هم استخراج ناقص فایل فشرده جلوی ساخته شدن کارت را میگیرد. یک بار دیگر کامل استخراج کنید و پوشه کلاینت را در فهرست سفید آنتیویروس بگذارید.
- بدون دسترسی مدیر اجرا شده است. سادهترین راه راستکلیک و Run as administrator است. اگر هر بار انجام دادنش آزاردهنده است، حالت سرویس را نصب کنید.
- یک کلاینت VPN دیگر در حال اجراست. VPN شرکت، شتابدهنده بازی، ابزار پروکسی دیگر — هرکدام زودتر مسیر پیشفرض را بگیرد برنده است. آنها را کامل ببندید؛ فرستادن به سینی حساب نمیشود.
- Hyper-V و WSL2 و Docker Desktop هرکدام کارت مجازی اضافه میکنند و جدول مسیریابی شلوغتر از حالت عادی میشود. TUN بالا میآید ولی مسیر پیشفرض را نمیگیرد و نشانهاش شبیه «روشن است ولی اینترنت نیست» میشود.
حالت سرویس (بعضی کلاینتها Service Mode یا سرویس سیستمی مینویسند) جای توضیح جدا دارد. یک سرویس دائمی نصب میکند که کار کارت شبکه و مسیریابی را انجام میدهد، پس خود کلاینت دیگر به دسترسی مدیر نیاز ندارد. در Clash Verge Rev دکمه نصب جداگانهای برای آن در صفحه تنظیمات هست؛ بعد از نصب، یک دوبار کلیک معمولی هم TUN را بالا میآورد. موقع نصب یک بار پنجره UAC میآید و از این یکی گریزی نیست.
مک: بیشتر آدمها سر همان مرحله اجازه دادن گیر میکنند
- بار اول که TUN را روشن میکنید، سیستم رمز شما را میخواهد تا یک helper پسزمینه مجاز شود. اگر Cancel بزنید، آن پنجره اغلب دیگر نمیآید و کلید مدام خودش خاموش میشود. کلاینت را ببندید و باز کنید، یا دنبال گزینهای بگردید که helper را دوباره نصب میکند تا پرسش تکرار شود.
- در تنظیمات سیستم، در فهرست موارد ورود و افزونههای پسزمینه، مدخل مربوط به کلاینت ممکن است خاموش شده باشد. با خاموش بودن آن، helper بالا نمیآید.
- دستگاه utun اشغال است. VPN شرکت و ابزارهایی مثل Tailscale رابط utun خودشان را میسازند. اول قطعشان کنید، بعد امتحان کنید.
لینوکس: مجوزها و /dev/net/tun
- اول ببینید دستگاه tun اصلاً وجود دارد یا نه. کرنلهای سبکشده و محیطهای کانتینری اغلب آن را ندارند و باید ماژول tun بارگذاری شود.
- فایل اجرایی که با کاربر عادی اجرا شود اختیار مدیریت شبکه ندارد. یا از حالت سرویس کلاینت استفاده کنید یا به فایل اجرایی CAP_NET_ADMIN بدهید.
- بعد از هر بهروزرسانی هسته، capability را دوباره بدهید. جایگزینی فایل اجرایی آن را پاک میکند و خرابی طوری برمیگردد که انگار تازه است.
ls -l /dev/net/tun
sudo modprobe tun
sudo setcap cap_net_admin,cap_net_raw+ep /path/to/mihomo
روشن میشود ولی چیزی رد نمیشود
route print 0.0.0.0
netstat -rn
ip route show
این سه دستور به ترتیب برای ویندوز، مک و لینوکس هستند؛ ببینید مسیر پیشفرض الان به کجا اشاره میکند. اگر هنوز روی کارت فیزیکی است، یعنی auto-route عمل نکرده یا چیز دیگری آن را برگردانده. اگر روی کارت مجازی است و باز هم کار نمیکند، شک را ببرید سراغ DNS و فایروال: TUN باید پرسوجوهای درگاه 53 را بگیرد، و فایروال سیستم یا آنتیویروس که کارت مجازی را ببندد اجازه ورود میدهد ولی خروج را نه. یک حالت دیگر هم هست: روشن بودن همزمان پروکسی سیستمی و TUN. بعضی کلاینتها حلقه را خودشان مدیریت میکنند، بعضی نه؛ موقع عیبیابی فقط یکی را روشن بگذارید.