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

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

بکاپ خودکار کانفیگ میکروتیک: ایمیل، سرور لینوکس و گیت

فرق backup و export، اسکریپت بکاپ شبانه با Scheduler، ارسال خودکار به ایمیل، و جمع کردن کانفیگ همهٔ روترها روی یک سرور لینوکس با تاریخچهٔ گیت.

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

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

روتری که بکاپ ندارد، با یک آپدیت ناموفق، یک خرابی حافظه یا یک نفوذ، ساعت‌ها کار دوباره می‌خواهد. خبر خوب این است که میکروتیک همهٔ ابزار بکاپ خودکار را در خودش دارد و با چند خط اسکریپت می‌شود کاری کرد که هر شب، بدون دخالت شما، یک نسخهٔ تازه بیرون از روتر نگه داشته شود.

backup یا export؟

میکروتیک دو نوع بکاپ دارد و هر کدام کار خودش را می‌کند:

/system/backup/save/export
قالبفایل باینری .backupمتن خوانا .rsc
بازگردانیفقط روی همان دستگاه (MAC آدرس‌ها داخلش است)روی هر دستگاه، با /import یا کپی دستورها
رمز کاربرهاداردندارد؛ رمزهای دیگر هم بدون show-sensitive پنهان‌اند
قابل خواندن و مقایسهنهبله؛ مناسب گیت

نتیجه: هر دو را بگیرید. backup برای برگرداندن سریع همان روتر، و export برای دیدن اینکه چه چیزی عوض شده و ساختن دوبارهٔ کانفیگ روی دستگاه دیگر.

بکاپ شبانه با Scheduler

این اسکریپت هر شب ساعت ۳ یک backup رمزدار و یک export می‌سازد و فایل شب قبل را بازنویسی می‌کند (همان نمونهٔ مستندات رسمی، با رمز):

RouterOS
/system/script/add name=nightly-backup source={
    /system/backup/save name=nightly password="YOUR-BACKUP-PASS"
    /export file=nightly
}
/system/scheduler/add name=nightly-backup start-time=03:00:00 interval=1d \
    on-event=nightly-backup

با /system/scheduler/print detail ستون next-run و run-count را ببینید تا مطمئن شوید اجرا می‌شود. ولی بکاپی که فقط روی خود روتر است، با از دست رفتن روتر از دست می‌رود؛ قدم بعد، بیرون بردن آن است.

ارسال خودکار به ایمیل

اول سرور SMTP را تنظیم کنید. پورت ۵۸۷ با tls=starttls و پورت ۴۶۵ با tls=yes کار می‌کند و این دو با هم جابه‌جا نمی‌شوند:

RouterOS
/tool/e-mail/set server=smtp.example.ir port=587 tls=starttls \
    certificate-verification=yes from=router@example.ir \
    user=router@example.ir password="SMTP-PASSWORD"

بعد اسکریپتی که export را می‌سازد و می‌فرستد، و یک Scheduler روزانه:

RouterOS
/system/script/add name=export-email source={
    /export file=export
    :delay 2s
    /tool/e-mail/send to=noc@example.ir file=export.rsc \
        subject="$[/system/identity/get name] export" \
        body="$[/system/clock/get date] configuration"
}
/system/scheduler/add name=export-email on-event=export-email \
    start-time=03:30:00 interval=1d
  • اگر از Gmail استفاده می‌کنید، رمز اصلی حساب کار نمی‌کند؛ باید تأیید دومرحله‌ای را روشن کنید و یک App password بسازید.
  • این export رمزها را ندارد و همین برای ایمیل بهتر است. اگر show-sensitive اضافه کنید، رمزها با ایمیل جابه‌جا می‌شوند.
  • وضعیت آخرین ارسال در /tool/e-mail/print (فیلد last-status) دیده می‌شود.

روش حرفه‌ای: جمع کردن همهٔ روترها روی یک سرور با گیت

وقتی ده‌ها روتر دارید، ایمیل جواب نمی‌دهد. روش بهتر این است که یک سرور لینوکس هر شب با SSH به همهٔ روترها وصل شود، export بگیرد و در یک مخزن گیت ذخیره کند. این‌طوری هر تغییر کانفیگ، با تاریخ و دقیقاً خط‌به‌خط، در تاریخچه می‌ماند. (اگر با گیت آشنا نیستید، مقالهٔ گیت‌هاب و گیت‌لب را ببینید.)

۱. روی هر روتر یک کاربر مخصوص بکاپ با کمترین دسترسی لازم و ورود فقط با کلید، و محدود به IP سرور بکاپ:

RouterOS
/user/group/add name=backup policy=ssh,read,sensitive
/user/add name=backup group=backup address=192.0.2.50/32 \
    password="LONG-RANDOM-PASS"
# upload backup.pub to the router (WinBox Files or SFTP), then:
/user/ssh-keys/import public-key-file=backup.pub user=backup

وقتی برای کاربری کلید SSH ثبت شود، ورود SSH با رمز برای آن کاربر بسته می‌شود.

۲. روی سرور لینوکس کلید را بسازید و اسکریپت را بنویسید:

bash
ssh-keygen -t ed25519 -f ~/.ssh/mikrotik_backup -N ""
# RouterOS 6 only accepts RSA keys: ssh-keygen -t rsa -b 4096 ...
mkdir -p ~/mt-configs && cd ~/mt-configs && git init
bash
#!/bin/sh
# ~/mt-configs/pull.sh : one router per line in routers.txt (name address)
cd ~/mt-configs || exit 1
while read -r name addr; do
  [ -z "$name" ] && continue
  ssh -n -i ~/.ssh/mikrotik_backup -o ConnectTimeout=15 \
      backup@"$addr" "/export show-sensitive" \
    | grep -v '^# .* by RouterOS' > "$name.rsc.tmp" \
    && [ -s "$name.rsc.tmp" ] && mv "$name.rsc.tmp" "$name.rsc" \
    || { echo "FAILED: $name"; rm -f "$name.rsc.tmp"; }
done < routers.txt
git add -A && git commit -q -m "nightly $(date +%F)" || true
  • خط grep -v '^# .* by RouterOS' سطر اول export را که تاریخ و ساعت دارد حذف می‌کند؛ وگرنه گیت هر شب یک «تغییر» بی‌معنی ثبت می‌کند.
  • بار اول یک بار دستی با ssh به هر روتر وصل شوید تا کلید میزبان (host key) آن ثبت شود.
  • با cron هر شب اجرایش کنید: 30 3 * * * /bin/sh ~/mt-configs/pull.sh
  • برای دیدن تغییرات دیروز: git log -p -1 -- core-router.rsc

بکاپی که تست نشده، بکاپ نیست

  • هر چند ماه یک بار export یک روتر را روی یک دستگاه یدک یا یک CHR مجازی import کنید و ببینید بالا می‌آید.
  • بازگردانی backup باینری: /system/backup/load name=nightly password="..."؛ روی همان نسخهٔ RouterOS که بکاپ با آن گرفته شده.
  • بکاپ روتری که هک شده را برنگردانید؛ ممکن است همان کاربر یا اسکریپت مخرب را هم برگرداند. در مقالهٔ پاک‌سازی روتر هک‌شده توضیح داده‌ایم چرا.
برای سرویس‌هایتان هاست پایدار لازم دارید؟دیدن پلن‌های هاست

منابع

  1. MikroTik Manual — Backup manual.mikrotik.com/docs/getting-started/configuration-management/backup
  2. MikroTik Manual — Configuration export manual.mikrotik.com/docs/getting-started/configuration-management
  3. MikroTik Manual — Scheduler manual.mikrotik.com/docs/system-information-and-utilities/scheduler
  4. MikroTik Manual — Email manual.mikrotik.com/docs/system-information-and-utilities/e-mail