تنظیمات DNS در mihomo: تفاوت fake-ip و redir-host
فهرست مطلب
بخش زیادی از مشکلاتی که «عجیب» به نظر میرسند ریشه در DNS دارند: سرور سالم است، قواعد درستاند و اتصال برقرار است، اما صفحهای باز نمیشود یا سایتی که باید مستقیم برود از تونل رد میشود. دلیلش این است که پیش از هر اتصالی، نام دامنه باید به آدرس تبدیل شود و اگر این تبدیل در جای اشتباه یا با پاسخ دستکاریشده انجام شود، بقیه زنجیره هم خراب میشود.
به همین دلیل mihomo حلکننده نام مخصوص خودش را دارد و در بیشتر پیکربندیها این کار را کاملاً در دست میگیرد. قلب این بخش فیلد enhanced-mode است که دو مقدار میپذیرد: fake-ip و redir-host. در ادامه میبینیم هرکدام واقعاً چه میکنند، چه زمانی fake-ip به استثنا نیاز دارد، فیلدهای مختلف nameserver چه فرقی دارند و یک بلوک dns قابل اتکا چه شکلی است.
چرا کلاینت پروکسی سراغ DNS میرود
سه دلیل روشن وجود دارد. نخست، در بعضی شبکهها پاسخهای DNS ساده دستکاری میشوند و آدرس نادرست، مقصد را غیرقابل دسترس میکند؛ هرقدر هم پروکسی شما خوب باشد، به آدرس اشتباه وصل میشوید. دوم، اگر پرسشهای DNS به حلکننده اپراتور برود در حالی که ترافیک از جای دیگری خارج میشود، عملاً نشت DNS دارید: فهرست سایتهایی که سراغشان میروید در شبکه محلی قابل مشاهده میماند. سوم، خود مسیریابی به حل نام مطمئن نیاز دارد؛ قاعدهای مثل GEOIP تنها وقتی درست تصمیم میگیرد که هسته کنترل تبدیل نام به آدرس را در دست داشته باشد.
fake-ip و redir-host: دو حالت enhanced-mode
در حالت fake-ip، هسته به هر پرسش بلافاصله یک آدرس ساختگی از یک محدوده رزروشده (معمولاً 198.18.0.0/16) پاسخ میدهد. برنامه به همان آدرس جعلی وصل میشود، mihomo اتصال را میگیرد، آن را به دامنه اصلی برمیگرداند و حل واقعی نام را فقط جایی که لازم است انجام میدهد — اغلب سمت سرور خروجی. نتیجه: پاسخگویی تقریباً آنی و بیاثر شدن دستکاری محلی، چون آدرسی که برنامههای شما میبینند اصلاً از شبکه بیرون نیامده است.
در حالت redir-host، هسته نام را از سرورهای بالادست حل میکند و آدرس واقعی را به برنامه تحویل میدهد. رفتار سرراستتری است و معدود برنامههایی که به آدرس واقعی نیاز دارند با آن راحتترند، اما ضعفهای کلاسیک را هم به ارث میبرد: تأخیر حل نام برای هر دامنه تازه و آسیبپذیری بیشتر در برابر پاسخهای نادرست. پیکربندیهای امروزی معمولاً fake-ip را پیشفرض میگذارند و redir-host را بهچشم گزینه سازگاری نگاه میکنند.
وقتی fake-ip چیزی را خراب میکند: fake-ip-filter
گروه کوچکی از نرمافزارها واقعاً به آدرس واقعی نیاز دارند: کشف دستگاهها در شبکه محلی، بعضی لانچرهای بازی، صفحه ورود شبکههای Wi-Fi عمومی و سرویسهای همگامسازی زمان. نشانهاش هم مشخص است: فقط یک برنامه بدرفتاری میکند و بقیه، از جمله مرورگر، سالماند. راهحل، بیرون گذاشتن آن نامها از fake-ip است:
dns:
fake-ip-filter:
- "*.lan"
- "+.local"
- "time.windows.com"
نامهایی که با این الگوها بخوانند، حتی در حالت fake-ip هم حل واقعی میشوند. علامت * یک بخش از دامنه را میگیرد و + زیردامنهها را در هر عمقی پوشش میدهد.
nameserver، fallback و default-nameserver
nameserver— حلکنندههای اصلی شما. استفاده از نشانیهای رمزگذاریشده (DoH یا DoT) ترجیح دارد تا پرسشها بهسادگی خوانده یا بازنویسی نشوند.fallback— مجموعه دومی که برای پاسخهای مشکوک به کار میرود، معمولاً برای دامنههای خارجی در شبکههایی که سابقه دستکاری دارند. در پیکربندیهای ساده اختیاری است.default-nameserver— فقط برای راهاندازی اولیه است. پیش از آنکه هسته بتواند از یک نشانی مثلhttps://dns.google/dns-queryاستفاده کند، باید نام همان سرور را از جایی حل کند و این فیلد همان جاست. اینجا حتماً آدرس IP خام بنویسید، نه دامنه.
یک بلوک dns نمونه
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "+.local"
default-nameserver:
- 1.1.1.1
- 8.8.8.8
nameserver:
- https://dns.google/dns-query
- https://1.1.1.1/dns-query
این یک نقطه شروع محافظهکارانه است، نه پیکربندی طلایی؛ سرورهای بالادست را با گزینههایی عوض کنید که از شبکه شما پاسخ بهتری میدهند. توجه داشته باشید که حالت TUN بهشدت به همین بخش وابسته است: با TUN روشن، یک بخش dns معیوب معمولاً یعنی قطع کامل اینترنت.
نکته: بعد از تغییر تنظیمات DNS، هسته را دوباره بارگذاری کنید و چند دقیقه فرصت بدهید؛ پاسخهای کششده از حالت قبلی میتوانند نتیجه را متناقض نشان دهند.
نشانهها و راهحلها
| نشانه | علت محتمل | کاری که باید بکنید |
|---|---|---|
| فقط یک برنامه کار نمیکند | به آدرس IP واقعی نیاز دارد | دامنههایش را به fake-ip-filter اضافه کنید |
| اولین بازکردن هر سایت کند است | حلکننده بالادست از شبکه شما کند است | مقادیر nameserver را عوض کنید |
| سایتهای داخلی از پروکسی میروند | پاسخهای نادرست، قضاوت GEOIP را خراب میکنند | اول DNS را درست کنید، بعد سراغ قواعد بروید |
| با پروکسی روشن هیچچیز باز نمیشود | معمولاً فراتر از DNS است | مسیر عیبیابی لایهبهلایه را دنبال کنید |
اگر تغییری در این بخش دادید و همهچیز بدتر شد، سادهترین راه بازگشت این است که بلوک dns را به همان نمونه بالا برگردانید و بعد یک تغییر در هر مرحله اعمال کنید. عیبیابی DNS با تغییر همزمان چند فیلد، تقریباً همیشه به بنبست میرسد.