ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / شبکه و میکروتیک

کانتینر (داکر) روی میکروتیک: اجرای Pi-hole و سرویس‌های کوچک روی روتر

قابلیت Container در RouterOS 7: کدام دستگاه‌ها پشتیبانی می‌کنند، فعال کردن device-mode، شبکهٔ veth، دانلود image از رجیستری یا فایل، env و mount، و هشدارهای امنیتی جدی قبل از استفاده.

۱۰ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

از RouterOS 7 به بعد، میکروتیک می‌تواند کانتینر اجرا کند؛ همان image هایی که با داکر می‌شناسید. یعنی می‌شود یک سرویس کوچک مثل Pi-hole (بلاک تبلیغات در سطح DNS)، یک DNS-over-HTTPS، یا یک ابزار مانیتورینگ را مستقیم روی روتر اجرا کرد، بدون سرور جدا. قابلیت جذابی است، ولی روتر سرور نیست؛ پس اول محدودیت‌ها و خطرها را بدانید.

چه چیزهایی لازم است

  • معماری: arm، arm64 یا x86 (از جمله CHR). دستگاه‌های mipsbe و mmips پشتیبانی نمی‌شوند. image هم باید هم‌معماری روتر باشد.
  • پکیج container نصب‌شده، هم‌نسخهٔ RouterOS.
  • حافظه: دانلود image از رجیستری به RAM آزاد زیادی نیاز دارد. میکروتیک توصیه می‌کند کانتینر روی حافظهٔ داخلی نباشد و یک دیسک خارجی (USB یا NVMe) با سرعت مناسب داشته باشید.
  • دسترسی فیزیکی: برای فعال کردن، باید دکمهٔ ریست را بزنید (یا در x86 و CHR یک خاموش و روشن کامل).

فعال کردن

RouterOS
/system/device-mode/update container=yes

بعد از این دستور چند دقیقه فرصت دارید دکمهٔ ریست را یک بار کوتاه بزنید (نگه ندارید). این قفل عمدی است: کسی که از راه دور به روتر نفوذ کرده، نمی‌تواند خودش کانتینر روشن کند. با /system/device-mode/print نتیجه را ببینید.

شبکهٔ کانتینر

کانتینرها از راه یک اینترفیس مجازی به اسم veth به روتر وصل می‌شوند. ساختار شبیه حالت bridge داکر است: یک شبکهٔ کوچک جدا که روتر gateway آن است:

RouterOS
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
/interface/bridge/add name=containers
/interface/bridge/port/add bridge=containers interface=veth1
/ip/address/add address=172.17.0.1/24 interface=containers
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24

دانلود image

RouterOS
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmp

رجیستری پیش‌فرض میکروتیک lscr.io است و با این دستور Docker Hub می‌شود. Docker Hub به خاطر مقررات صادراتی آمریکا IPهای ایران را مسدود کرده؛ از ایران یا آینه‌های داخلی Docker Hub را در registry-url بگذارید (توضیح و ریسک‌هایش در مقالهٔ نصب داکر)، یا image را روی کامپیوتر دیگری با docker pull و docker save به فایل .tar تبدیل کنید و در Files روتر بریزید:

bash
docker pull --platform linux/arm64 pihole/pihole:latest
docker save pihole/pihole:latest -o pihole.tar

مثال: Pi-hole

RouterOS
/container/envs/add list=ENV_PIHOLE key=TZ value="Asia/Tehran"
/container/envs/add list=ENV_PIHOLE key=FTLCONF_webserver_api_password value="STRONG-PASSWORD"
/container/mounts/add list=MOUNT_PIHOLE src=disk1/volumes/pihole dst=/etc/pihole

/container/add remote-image=pihole/pihole:latest interface=veth1 \
    root-dir=disk1/images/pihole mountlists=MOUNT_PIHOLE envlist=ENV_PIHOLE \
    name=pihole start-on-boot=yes logging=yes
/container/print
/container/start pihole

اگر image را از فایل می‌آورید، به جای remote-image بنویسید file=disk1/pihole.tar. بعد از add، وضعیت کانتینر اول extracting است؛ صبر کنید تا stopped شود و بعد start کنید. حالا در DHCP، DNS دستگاه‌ها را 172.17.0.2 بگذارید و پنل Pi-hole روی همان آدرس باز می‌شود.

هشدارهای امنیتی

  • هر image یعنی کد شخص ثالث روی روترتان. فقط image رسمی و معروف را اجرا کنید؛ image ناشناس از رجیستری ناشناس می‌تواند در پشتی باشد.
  • حفره هم داشته است: در مهر ۱۴۰۵ حفره‌ای (CVE-2026-89021) گزارش شد که با یک image دست‌کاری‌شده، فایل بیرون از کانتینر نوشته و پاک می‌شد؛ در 7.24.2 رفع شد. جزئیات در مقالهٔ حفره‌ها.
  • اگر لازمش ندارید خاموشش کنید: /system/device-mode/update container=no.
  • پورت کانتینر را با dst-nat به اینترنت باز نکنید، مگر واقعاً لازم باشد.
  • منابع روتر محدود است؛ کانتینر سنگین می‌تواند خود مسیریابی را کند کند. برای سرویس‌های جدی‌تر (وب‌سایت، دیتابیس، چند کانتینر با هم) یک سرور مجازی و Docker Compose انتخاب درست‌تری است.
سرور مجازی با IP اختصاصی برای میکروتیک، داکر و سرویس‌های خودتاندیدن پلن‌های سرور مجازی

منابع

  1. MikroTik Manual — Containers manual.mikrotik.com/docs/containers
  2. MikroTik Manual — Device-mode manual.mikrotik.com/docs/system-information-and-utilities/device-mode
  3. Pi-hole — Docker image github.com/pi-hole/docker-pi-hole