معماری
نسنت پنل از چه بخشهایی ساخته شده است، چگونه به روتر وصل میشود و هر داده کجا نگه داشته میشود.
مرور کلی
نسنت پنل یک برنامهٔ تکی به زبان Go است. همین برنامه هم رابط کاربری (یک برنامهٔ تکصفحهای React) را به مرورگر میفرستد و هم API پنل را ارائه میکند، چون رابط کاربری داخل خود فایل اجرایی قرار گرفته است. نه وبسرور جداگانه لازم است، نه پایگاهداده، و نه نصب چیزی روی روترهایی که مدیریت میکنید.
این طراحی عمدی است: پنل باید روی خود میکروتیک و با حدود ۳۰ مگابایت RAM آزاد اجرا شود.
بخشها
| بخش | کار آن |
|---|---|
| رابط کاربری (React) | صفحههایی که با آنها کار میکنید. فقط با خود پنل ارتباط دارد. |
| سرویس Go | رابط کاربری را ارائه میکند، درخواستها را به روتر میرساند و اسکریپتهای پیکربندی RouterOS را میسازد. |
| اسکنر شبکه | یک سابنت را برای پیدا کردن دستگاههای میکروتیک جستوجو میکند. |
پنل چگونه به روتر وصل میشود
- RouterOS API روی پورت
8728: تقریباً همهٔ خواندنها و تغییرها از این راه انجام میشود. - SSH روی پورت
22: راهانداز گامبهگام اسکریپت پیکربندی را از این راه روی روتر بارگذاری و سپس اجرا میکند.
بنابراین این دو سرویس باید روی روتر فعال و از سمت پنل در دسترس باشند.
تغییرهای چندمرحلهای، مانند راهانداز گامبهگام، تغییر WAN و ساختن سرور یا کلاینت VPN، از قالبهای آمادهٔ اسکریپت RouterOS ساخته و یکجا روی روتر اجرا میشوند. در راهانداز گامبهگام، پنل پیشرفت اجرا را از روی روتر میخواند و نمایش میدهد.
هر داده کجا نگه داشته میشود
- نام کاربری و رمز عبور روتر در حافظهٔ سشن مرورگر نگه داشته میشود و با هر درخواست برای پنل فرستاده میشود. با بستن تب پاک میشود. پنل این اطلاعات را روی دیسک ذخیره نمیکند و فقط اتصال باز به روتر را مدتی نگه میدارد.
- مرورگر هیچگاه مستقیم با روتر ارتباط نمیگیرد. همهٔ درخواستها از پنل عبور میکنند.
- گزارش خطاها را مرورگر میفرستد، نه روتر. IPها پیش از ارسال حذف میشوند و میتوانید این قابلیت را برای هر مرورگر از صفحهٔ عیبیابی و گزارش خاموش کنید.
- پنل خودش به GitHub وصل میشود تا آخرین نسخهٔ پنل و فهرست افزونهها را بخواند.
- گفتوگوی پشتیبانی در تب راهنما را مرورگر مستقیم از یک سرویس بیرونی بارگذاری میکند.
روشهای اجرا
| روش | شکل اجرا |
|---|---|
| روی خود روتر | یک کانتینر RouterOS روی veth-nasnet-panel با آدرس 192.168.50.2/24. از LAN با HTTP روی پورت 8080 و HTTPS روی 8443 در دسترس است. |
| روی یک سرور در LAN | یک کانتینر Docker، ترجیحاً با شبکهٔ host تا روترها را ببیند. |
| از روی کد منبع | رابط کاربری روی پورت 3000 و سرویس Go روی 8080. |
ایمیج کانتینر بر پایهٔ busybox ساخته شده است و یک فایل اجرایی فشردهٔ Go را اجرا میکند. نشانی /health برای بررسی سلامت کانتینر به کار میرود. ایمیجها برای linux/amd64، linux/arm64 و linux/arm/v7 منتشر میشوند.