آموزش اجرای هسته mihomo روی macOS با ترمینال
فهرست مطلب
هسته mihomo روی macOS نه پنجرهای دارد و نه آیکونی در نوار منو؛ یک فایل اجرایی است که در ترمینال بالا میآید، پیکربندی YAML شما را میخواند و لاگ را همانجا جلوی چشمتان میگذارد. همین سادگی است که آن را برای عیبیابی و یادگیری ارزشمند میکند: هر اتفاقی که در لایه زیرین کلاینتهای گرافیکی میافتد، اینجا شفاف و بیواسطه دیده میشود.
در این راهنما مسیر کامل را طی میکنیم: انتخاب نسخه متناسب با پردازنده مک، باز کردن فایل فشرده و برداشتن برچسب قرنطینه، نصب هسته در مسیر سیستمی، اجرای آن با یک پوشه پیکربندی اختصاصی، آزمودن اینکه ترافیک واقعاً از پروکسی عبور میکند و در پایان، اجرای خودکار در هر بار روشن شدن سیستم با launchd.
اگر هدف شما فقط استفاده روزمره است و علاقهای به ترمینال ندارید، این مسیر لازم نیست؛ یک کلاینت گرافیکی مثل Clash Verge Rev همین هسته را درون خود دارد و کارتان را با چند کلیک راه میاندازد.
کدام فایل mihomo برای مک شما مناسب است؟
مکهای ساختهشده تا حدود سال 2020 پردازنده Intel دارند و مدلهای جدیدتر از تراشههای Apple Silicon استفاده میکنند. این تفاوت مستقیماً تعیین میکند کدام فایل را باید بردارید. سریعترین راه تشخیص، یک دستور در ترمینال است:
uname -m
خروجی x86_64 یعنی مک شما Intel است و به نسخه amd64 نیاز دارید؛ خروجی arm64 یعنی Apple Silicon و نسخه arm64. هر دو بهصورت فایل تکبخشی فشرده .gz از نسخه mihomo v1.19.29 در بخش macOS مرکز دانلود موجودند. اگر در انتخاب معماری تردید دارید، توضیح کامل تفاوتها را در مقایسه مکهای Intel و Apple Silicon بخوانید.
باز کردن فایل و برداشتن برچسب قرنطینه
فایل دانلودشده یک باینری فشرده است، نه نصبکننده. آن را باز کنید، اجازه اجرا بدهید و برچسبی را که macOS به فایلهای دانلودی میچسباند بردارید:
cd ~/Downloads
gunzip mihomo-darwin-*.gz
chmod +x mihomo-darwin-*
xattr -dr com.apple.quarantine mihomo-darwin-*
دستور سوم ضروری است چون بدون آن فایل اجرا نمیشود. دستور چهارم مربوط به Gatekeeper است: هر فایلی که از اینترنت میآید ویژگی com.apple.quarantine میگیرد و macOS اجرای آن را متوقف میکند یا پیام «آسیبدیده» نشان میدهد. حذف این ویژگی، فایل را تغییر نمیدهد؛ فقط به سیستم میگوید شما آگاهانه به منبع آن اعتماد کردهاید.
توجه: این کار را فقط برای فایلهایی انجام دهید که منبعشان را میشناسید. کد منبع و انتشارهای رسمی هسته در مخزن mihomo در دسترس است و همیشه میتوانید نسخه دریافتی را با آن مقایسه کنید.
نصب هسته و ساخت پوشه پیکربندی
باینری را با نامی کوتاه به مسیر اجرایی سیستم منتقل کنید تا از هر جای ترمینال در دسترس باشد، سپس نسخه آن را بررسی کنید:
sudo mv mihomo-darwin-* /usr/local/bin/mihomo
mihomo -v
چاپ شدن شماره نسخه یعنی معماری فایل با پردازنده شما هماهنگ است. حالا یک پوشه برای دادهها و پیکربندی بسازید و فایل config.yaml خود را در آن قرار دهید:
mkdir -p ~/.config/mihomo
mihomo -t -f ~/.config/mihomo/config.yaml
mihomo -d ~/.config/mihomo
سوئیچ -t فقط فایل را میخواند و بدون اجرای هسته، خطاها را با شماره خط گزارش میدهد؛ عادت کنید بعد از هر ویرایش دستی آن را بزنید. سوئیچ -d هم پوشه داده را مشخص میکند و هسته انتظار دارد config.yaml داخل همان پوشه باشد. ساختار این فایل و کمترین محتوای لازم برای اجرا را در راهنمای مقدماتی پیکربندی YAML توضیح دادهایم.
بررسی اینکه ترافیک واقعاً از پروکسی عبور میکند
هسته که بالا آمد، پورت محلی آن را با curl آزمایش کنید:
curl -x http://127.0.0.1:7890 -I https://www.example.com
عدد 7890 فقط یک نمونه است؛ مقدار واقعی همان چیزی است که در فیلد mixed-port فایل پیکربندی خودتان نوشته شده (معمولاً 7890 یا 7897). اگر هدرهای HTTP برگشتند، زنجیره از برنامه تا سرور خروجی سالم است. اگر پاسخی نیامد، پیش از هر کار دیگری به لاگهایی که هسته در همان پنجره ترمینال چاپ میکند نگاه کنید؛ معمولاً دلیل همانجا نوشته شده است.
اجرای خودکار هسته با launchd
برای اینکه هسته پس از هر بار روشن شدن مک خودش بالا بیاید، از launchd استفاده کنید. یک فایل با نام local.mihomo.plist در مسیر ~/Library/LaunchAgents/ بسازید و محتوای زیر را در آن بگذارید (بهجای USERNAME نام کاربری خودتان را بنویسید):
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.mihomo</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/mihomo</string>
<string>-d</string>
<string>/Users/USERNAME/.config/mihomo</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
سپس آن را بارگذاری کنید و هر وقت خواستید متوقفش کنید:
launchctl load ~/Library/LaunchAgents/local.mihomo.plist
launchctl unload ~/Library/LaunchAgents/local.mihomo.plist
این نوع سرویس با دسترسی کاربر عادی اجرا میشود و برای یک پروکسی محلی کافی است. قابلیتهایی که به لایه شبکه دست میزنند، مانند TUN، دسترسی بالاتری میخواهند و در کلاینتهای گرافیکی راحتتر مدیریت میشوند.
گام بعدی
اگر مقصد شما یک سرور همیشهروشن است، منطق کار همین است و فقط لایه اجرای خودکار فرق میکند؛ نسخه لینوکسی این مسیر را در راهنمای استقرار mihomo روی سرور لینوکس با systemd آوردهایم. برای استفاده روزمره روی دسکتاپ هم پیشنهاد صادقانه ما همان کلاینت گرافیکی است: هسته یکی است، اما مدیریت اشتراک، تعویض سرور و روشن کردن پروکسی سیستمی چند برابر سادهتر میشود.