راهنمای دانلود Clash Metaدانلود کلاینت mihomo

ساختار فایل پیکربندی mihomo: آموزش مقدماتی YAML

پیکربندی و اشتراک 2 ژوئیه 2026 4 دقیقه مطالعه
فهرست مطلب

هر کاری که mihomo انجام می‌دهد از یک فایل بیرون می‌آید: config.yaml. پورت‌های محلی، حالت مسیریابی، رفتار DNS، فهرست سرورها و قواعد تصمیم‌گیری، همه در همین فایل و با قالب YAML توصیف می‌شوند. بیشتر کاربران هرگز این فایل را از صفر نمی‌نویسند، چون اشتراک آن را آماده تحویل می‌دهد؛ اما دیر یا زود لازم می‌شود آن را بخوانید: برای فهمیدن یک خطای راه‌اندازی، تغییر یک قاعده، یا کشف اینکه چرا ترافیک به مسیری می‌رود که انتظار نداشتید.

این راهنما پیکربندی mihomo را از پایه توضیح می‌دهد: قواعد نگارشی YAML که منشأ بیشتر خطاها هستند، معنی فیلدهای سطح بالا، یک نمونه کمینه که واقعاً اجرا می‌شود، و روش بررسی فایل پیش از اینکه اتصال‌تان را خراب کند.

قواعد YAML که واقعاً اهمیت دارند

YAML ساختار را با فاصله‌گذاری می‌سازد، نه با آکولاد. همین باعث می‌شود خوانا باشد و در عین حال نسبت به جزئیات نامرئی حساس:

  • تورفتگی فقط با space، هرگز با Tab. قرارداد رایج دو فاصله برای هر سطح است و یک کاراکتر Tab در هر جای فایل، کل تجزیه را متوقف می‌کند.
  • بعد از دونقطه یک فاصله بگذارید. نوشتن mode: rule درست است و mode:rule خطا می‌دهد.
  • هم‌ترازی را حفظ کنید. عضوهای یک فهرست یا کلیدهای یک نگاشت باید دقیقاً از یک ستون شروع شوند.
  • مقادیر حاوی کاراکتر خاص را در گیومه بگذارید. نام سرورهایی که : یا # یا ایموجی دارند، داخل گیومه دوتایی امن‌ترند.
  • مراقب کاراکترهای پنهان باشید. متنی که از پیام‌رسان یا صفحه وب کپی می‌شود ممکن است دونقطه فارسی، گیومه هوشمند یا فاصله بدون‌شکست داشته باشد؛ ظاهرشان یکسان است اما فایل را می‌شکنند. اگر خطی بی‌دلیل کار نمی‌کند، همان کاراکتر را دوباره تایپ کنید.

فیلدهای سطح بالا در یک نگاه

فیلدکارکرد
mixed-portیک پورت محلی که هم اتصال HTTP و هم SOCKS را می‌پذیرد
modeحالت خروج ترافیک: rule، global یا direct
log-levelسطح جزئیات لاگ: silent، error، warning، info، debug
external-controllerنشانی API کنترلی که داشبوردها و کلاینت‌های گرافیکی از آن استفاده می‌کنند
dnsتنظیمات حل‌کننده داخلی نام، از جمله enhanced-mode
proxiesفهرست تک‌تک سرورها
proxy-groupsگروه‌هایی که سرورها را برای انتخاب و خودکارسازی سازمان می‌دهند
rulesقواعدی که هر ترافیک را به یک گروه یا سیاست می‌سپارند

یک پیکربندی کمینه که اجرا می‌شود

فایل زیر هیچ سروری ندارد و همه ترافیک را مستقیم می‌فرستد، اما درست تجزیه می‌شود، بالا می‌آید و اسکلتی است که می‌توانید رویش بسازید:

mixed-port: 7890
mode: rule
log-level: info
external-controller: 127.0.0.1:9090

proxies: []

proxy-groups: []

rules:
  - MATCH,DIRECT

آن را با نام config.yaml ذخیره کنید، در همان پوشه دستور mihomo -d . را اجرا کنید و ببینید هسته بدون خطا بالا می‌آید. عدد پورت فقط یک نمونه است؛ در کلاینت‌های گرافیکی مقدار واقعی را در صفحه تنظیمات ببینید (معمولاً 7890 یا 7897).

نکته: نمادهای [] یعنی «فهرست خالی». وقتی سرور اضافه می‌کنید، این علامت را حذف کنید و اعضا را در خط‌های بعدی با تورفتگی بنویسید.

رابطه proxies، proxy-groups و rules

این سه بخش یک زنجیره می‌سازند و فهمیدن ترتیبشان بیشتر از حفظ کردن نام فیلدها ارزش دارد. proxies نقطه‌های خروج خام را تعریف می‌کند: آدرس، پورت، پروتکل و اطلاعات احراز هویت هر سرور. proxy-groups این سرورها را در واحدهای نام‌دار بسته‌بندی می‌کند — یک گروه انتخاب دستی، یک گروه سنجش خودکار تأخیر، یک زنجیره پشتیبان — و رفتار هر نوع گروه با بقیه فرق دارد. در انتها rules تصمیم می‌گیرد هر درخواست به کدام گروه برود و از بالا به پایین ارزیابی می‌شود؛ انواع قواعد و ترتیب تطبیق خودشان بحث مفصلی دارند.

در پیکربندی‌های خوش‌ساخت، یک قاعده مستقیماً به نام یک سرور اشاره نمی‌کند بلکه به یک گروه اشاره می‌کند. مزیتش روشن است: بعداً با عوض کردن انتخاب داخل گروه، رفتار همه قواعد مرتبط تغییر می‌کند و لازم نیست به فهرست قواعد دست بزنید.

اعتبارسنجی فایل پیش از اجرا

mihomo یک حالت آزمایشی دارد که فایل را می‌خواند و تجزیه می‌کند، بدون آنکه چیزی را بالا بیاورد:

mihomo -t -f config.yaml

اگر همه‌چیز درست باشد پیام موفقیت چاپ می‌شود؛ در غیر این صورت مشکل و معمولاً شماره خط را می‌بینید. عادت کنید بعد از هر ویرایش دستی این دستور را بزنید؛ یک ثانیه وقت می‌گیرد و جلوی قطع شدن ناگهانی اتصال را می‌گیرد.

خواندن خطاهای رایج

  • پیام‌هایی درباره کاراکتر Tab یا «mapping values are not allowed»: مشکل تورفتگی است. به خط گزارش‌شده بروید و فاصله‌ها را از نو با space بسازید.
  • کلید تکراری: یک فیلد دو بار در یک سطح آمده، معمولاً بعد از چسباندن یک قطعه آماده. یکی را حذف کنید.
  • خطای نوع مقدار: جایی که عدد انتظار می‌رفت متن نوشته شده، مثل mixed-port: "abc".
  • «یافت نشد» برای یک سرور یا گروه: نامی که در قاعده یا گروه ارجاع داده شده وجود ندارد. نام‌ها باید مو‌به‌مو یکسان باشند، از جمله حروف بزرگ و کوچک و ایموجی.

ترفند: وقتی خطا بی‌معنا به نظر می‌رسد، خط قبل از خط گزارش‌شده را نگاه کنید؛ تجزیه‌گرهای YAML اشتباه را اغلب یک خط دیرتر متوجه می‌شوند.

پس از اینکه ساختار فایل برایتان آشنا شد، لایه بعدی که بیشترین تأثیر را بر رفتار روزمره دارد بخش تنظیمات DNS و حالت fake-ip است؛ خیلی از رفتارهایی که جادویی به نظر می‌رسند از همان‌جا می‌آیند.