امروزه استفاده از کانتینرها در دنیای فناوری اطلاعات به یک استاندارد تبدیل شده است. کانتینرها راهکاری انعطافپذیر و کارآمد برای اجرای برنامهها و سرویسها در محیطهای مختلف فراهم میکنند. داکر (Docker) بهعنوان یکی از محبوبترین فناوریهای کانتینرسازی، این امکان را به توسعهدهندگان و مدیران شبکه میدهد تا نرمافزارهای خود را بهصورت یکپارچه در محیطهای مختلف اجرا کنند. با انتشار نسخه 7.5 از RouterOS، شرکت میکروتیک قابلیت راهاندازی Docker Container را به روترهای خود اضافه کرده است. این قابلیت به کاربران اجازه میدهد تا از قدرت کانتینرها در دستگاههای شبکه بهره ببرند. در این مقاله، بهصورت جامع و گامبهگام مراحل نصب و راهاندازی Docker Container در میکروتیک را بررسی خواهیم کرد. همچنین روش انجام این مراحل در محیط WinBox را توضیح خواهیم داد.
کانتینر و داکر چیست؟
کانتینر (Container) یک محیط ایزوله است که شامل نرمافزار، وابستگیها و کتابخانههای موردنیاز آن میشود. این محیط تضمین میکند که برنامهها در هر سیستمی بدون مشکل اجرا شوند.
داکر (Docker) یک پلتفرم متنباز است که امکان ایجاد، مدیریت و اجرای کانتینرها را فراهم میکند. به کمک داکر میتوان برنامههای مختلف را بدون وابستگی به سیستمعامل میزبان اجرا کرد.
مزایای استفاده از داکر در میکروتیک
- اجرای سرویسهای اضافی مانند DNS Server (PiHole)، شبکههای خصوصی، سرور پراکسی و موارد دیگر
- افزایش کارایی روتر با بهرهگیری از کانتینرها
- بهبود امنیت با اجرای سرویسها در محیط ایزوله
مراحل راهاندازی Docker Container در میکروتیک
بررسی پیشنیازها
در ادامه به آموزش نحوه راه اندازی داکر کانتینر روی سرور مجازی میکروتیک پرداخته و پس از آن سیستم عامل پای هول که یک DNS سرور است را روی داکر میکروتیک بالا بیاوریم.
پیش از هر چیز باید به پیش نیازهای انجام این کار توجه داشته باشیم.
برای این که ما بتوانیم داکر را در یک روتر میکروتیک راه اندازی کنیم باید سیستم ما از معماری ARM یا ARM x64 و یا x86 برخوردار باشد.
ARM و ARM x64 به این معناست که در حال استفاده از یکی از روترهای جدید کمپانی میکروتیک مثل hAP ax3، chateau lte6 ax یا hAP ax lite LTE6 هستیم.
اما اگر این روترها را در اختیار نداشته باشطید نیز میتوانید سیستم عامل میکروتیک را به صورت مجازی نصب کرده و از طریق آن نسبت به راه اندازی داکر کانتینر در میکروتیک اقدام کنید.
برای راهاندازی داکر در میکروتیک، باید نسخه RouterOS 7.5 یا بالاتر را داشته باشید. همچنین روتر شما باید از قابلیت کانتینر پشتیبانی کند.
پس از این باید دقت داشته باشید که پکیج container روی روتر شما نصب شده باشد.
در نهایت پیش نیاز دیگر این است که حتما سرویس کانتینر را اجرا کنید.
دلیل این که این سرویس به طور پیش فرض اجرا نمیشود این است که زمانی که شما یک کانتینر را داخل میکروتیک اجرا میکنید،ممکن است باگهای امنیتی داشته باشد که روتر شما را در معرض خطر قرار دهد.
به همین دلیل تنها با نصب پکیج کانتینر نمیتوانید از قابلیتهای داکر استفاده کنید و کانتینرهای مختلف را اجرا کنید.
اکنون که از وجود پیش نیازها اطمینان حاصل کردیم نوبت به این میرسد که به روتر رفته و داکر را نصب کرده و کانتینرهای مورد نظرمان را ایجاد و اجرا کنیم.
اتصال به روتر
ابتدا با استفاده از نرم افزار Winbox نسبت به اتصال به روتر میکروتیک یا سرور مجازی میکروتیک خود اقدام میکنیم.
به این منظور آدرس IP سرور را در کادر مقابل connect to، نام کاربری در فیلد username و پسورد ورود به سرور را در فیلد password وارد میکنیم.
سپس بر روی دکمه connect کلیک میکنیم تا اتصال برقرار شود.
پس از اتصال به روتر میتوانید آخرین آپدیت سیستمعامل را از نوار بالای پنجره مشاهده کنید.
همچنین برای بررسی نسخه سیستم عامل RouterOS میتوانید طبق مراحل زیر نیز عمل کنید.
بررسی نسخه RouterOS
- وارد WinBox شوید.
- به مسیر System > Resources بروید.
- نسخه RouterOS را در قسمت “Version” بررسی کنید.
- اگر نسخه کمتر از 7.5 است، آن را بهروزرسانی کنید.
بهروزرسانی RouterOS
در صورتی که نسخه سیستم عامل کمتر از پیش نیاز بود نیاز است تا طبق مراحب زیر سیستم عامل RouterOS خود را به روزرسانی کنید.
- از سایت mikrotik.com آخرین نسخه RouterOS را دانلود کنید.
- فایل را به روتر انتقال دهید.
- از مسیر System > Packages فایل جدید را اعمال کنید.
- روتر را ریبوت کنید.
نصب بسته Container
پس از اطمینان از بهروز بودن سیستمعامل، باید بسته Container را نصب کنید.
به این منظور از پنل سمت چپ برنامه وین باکس به منوی System و سپس Packages بروید. در صورتی که Container در این منو وجود داشته باشد به این معناست که این پکیج از پیش نصب شده است در غیر این صورت باید طبق مراحل زیر عمل کنید.
نصب از طریق WinBox
به منظور نصب پکیج کانتینر به سایت mikrotik.com مراجعه کرده و از قسمت Software رفته و پکیج extra packages این روتر را دانلود کنیم. سپس برای نصب این بسته از طریق مراحل زیر عمل کنید.
- وارد WinBox شوید و به مسیر Files بروید.
- فایل container-*.npk را آپلود کنید. همچنین میتوانید آن را مستقیما از فولدری که در آن قرار دارد در وینباکس درگ و دراپ کنید.
- از منوی سمت چپ گزینه System و سپس Reboot را انتخاب کنید تا روتر را ریبوت کنید.
- پس از راهاندازی مجدد روتر، به System > Packages بروید و بررسی کنید که بسته “container” نصب شده باشد.
فعالسازی قابلیت Container
پس از نصب پکیج container نوبت به فعالسازی قابلیت کانتینر میرسد.
به این منظور در روتر میکروتیک از پنل سمت چپ برنامه Winbox گزینه New Terminal را انتخاب میکنید.
دستور ترمینال برای انجام این کار نیز به شکل زیر است:
/system/device-mode/update container=yes
در این جا پیغامی مشاهده خواهید کرد که به شما اعلام میکند برای این که کانتینر شما فعال شود یا باید دکمه فیزیکی ریست روی روتر را یک بار فشار دهید یا یک بار روتر را خاموش و روشن کنید.
اگر از روتر فیزیکی استفاده میکنید دکمه روی روتر و اگر از روتر مجازی استفاده میکنید، سرور مجازی را خاموش و مجددا روشن کنید.
پس از ریبوت شدن روتر فیزیکی یا مجازی، مجددا نیاز است تا با استفاده از Winbox وارد روتر شوید.
اکنون یک منو در منوهای اصلی تحت عنوان Container اضافه شده است و میتوانیم کانتینرها را نصب کنیم و از قابلیتهای داکر استفاده کنیم.
حالا میخواههیم PiHole را که یک DNS Server است روی کانتینر در میکروتیک نصب کنیم.
پیش این کار یک سری پیش نیاز وجود دارد. اولین پیش نیاز ساخت یک bridge است. Bridge کمک میکند کانتینرها با هم و با روتر اصلی ارتباط شبکهای داشته باشند.
پیکربندی شبکه برای کانتینرها
برای دسترسی کانتینر به اینترنت و شبکه داخلی، باید یک رابط شبکه مجازی (VETH) و یک Bridge ایجاد کنید.
ایجاد Bridge در WinBox
- در منوی سمت چپ گزینه Bridge را بزنید.
- در پنجرهی بازشده، دکمه «+» را زده تا یک بریج جدید ایجاد کنید.
- نام آن را چیزی شبیه به docker یا Bridge-container بگذارید تا در آینده بدانید که این بریج را برای چه منظوری ایجاد کردهاید و سپس Apply کنید.
- سپس به منوی Interface و سربرگ virtual ethernet بروید.
ایجاد VETH در WinBox
- از منوی سمت چپ وینباکس Interfaces را انتخاب کنید.
- روی تب VETH کلیک کرده و دکمه «+» را بزنید تا یک اترنت مجازی جدید ساخته شود.
- نام را veth1 بگذارید.
- آدرس IP 172.17.0.2/24 را تنظیم کنید.
- Gateway را 172.17.0.1 (همان آدرسی که برای بریج تعیین کردیم) قرار دهید.
- Apply کنید.
دستور در ترمینال:
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1
اکنون کارت شبکه Pihole ساخته شد. اکنون این کارت شبکه را در آدرس Bridge و قسمت Port در داخل Bridge-container اضافه میکنیم.
افزودن VETH به پورتهای بریج
- دوباره به قسمت Bridge در منوی سمت چپ بروید.
- در پنجرهی بازشده، تب Ports را انتخاب کنید.
- دکمه «+» را بزنید تا پورت جدیدی تعریف کنید.
- گزینه Interfaces را veth1 قرار دهید.
- گزینه Bridge را روی Bridge-container قرار دهید و OK را بزنید.
دستور در ترمینال:
/interface/bridge/port add bridge=docker interface=veth1
تعیین آدرس آیپی برای بریج
- به منوی IP > Addresses بروید.
- یک آدرس جدید اضافه کنید.
- آدرس 172.17.0.1/24 را وارد کنید.
- از قسمت Interfaces، گزینهی bridge-container را انتخاب کنید.
- دکمه Ok را بزنید.
دستور در ترمینال:
/interface/bridge/add name=docker /ip/address/add address=172.17.0.1/24 interface=docker
تنظیمات NAT برای دسترسی کانتینرها به اینترنت
- به IP > Firewall > NAT بروید.
- روی «+» کلیک کنید.
- Chain را srcnat انتخاب کنید.
- Src Address را 172.17.0.0/24 تنظیم کنید.
- Action را Masquerade انتخاب کنید.
- Apply کنید.
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24
حال قصد داریم کانتینتر PiHole را راهاندازی کنیم که برای مسدودسازی تبلیغات و درخواستهای DNS ناخواسته کاربرد دارد.
راهاندازی داکر کانتینر PiHole در میکروتیک
برای عملکرد صحیح کانتینر داکر PiHole، باید ابتدا چندین متغیر را مشخص کنید. از منوی چپ به Container بروید و تب Envs را انتخاب کنید.
این سه متغیر را اضافه کنید:
- TZ: منطقه زمانی خود را مشخص کنید
- WEBPASSWORD: رمز عبور برای دسترسی به پنل کنترل PiHole
- DNSMASQ_USER: مقدار را روی root تنظیم کنید.
دستور در ترمینال:
/container/envs/add name=pihole_env key=TZ value="Asia/Tehran" /container/envs/add name=pihole_env key=WEBPASSWORD value="yourpassword" /container/envs/add name=pihole_env key=DNSMASQ_USER value="root"
حال در پنجره Container به تب Mounts بروید.
باید دو ماونت جدید با ویژگیهای زیر اضافه کنید:
etc_pihole که در آن src = /etc و dst = /etc/pihole dnsmasq_pihole که در آن src = /etc-dnsmasq.d و dst = /etc/dnsmasq.d
دستور در ترمینال:
/container/mounts/add name=etc_pihole src=/etc dst=/etc/pihole /container/mounts/add name=dnsmasq_pihole src=/etc-dnsmasq.d dst=/etc/dnsmasq.d
دانلود و اجرای کانتینر PiHole
- در پنجره Container دکمه Config را فشار دهید.
- آدرس https://registry-1.docker.io را در بخش Registry URL وارد کنید.
- در قسمت Tmp dir مقدار pull/ را وارد کنید.
دستور در ترمینال:
/container/config/set registry-url=https://registry-1.docker.io tmpdir=/pull
حال در تب Container دکمه «+» را فشار دهید و مقادیر زیر را وارد کنید:
Remote Image: pihole/pihole:latest Interface: veth1 Root dir: /pihole Mounts: dnsmasq_pihole,etc_pihole Envlist: pihole_env
دکمه Apply را زده و کمی صبر کنید تا PiHole لود شود. هر گاه گزینه Status به Stopped تغییر کرد، کانتینر آمادهی اجراست. با فشردن دکمه Start کانتینتر اجرا خواهد شد.
دستور در ترمینال:
/container/add remote-image=pihole/pihole:latest interface=veth1 root-dir=/pihole mounts=dnsmasq_pihole,etc_pihole envlist=pihole_env
برای دسترسی به وب پنل PiHole باید مراحل زیر را طی کنید:
- از منوی سمت چپ به IP > Firewall رفته و وارد تب NAT شوید.
- دکمه «+» را زده و در تب General مقادیر زیر را وارد کنید:
Chain: dstnat Dst. Address: 192.168.88.1 Protocol: 6 (tcp) Dst. Port: 888
- حال وارد تب Action شوید و گزینه Action را روی dst-nat قرار دهید.
- گزینه To addresses را 172.17.0.2 قرار دهید.
- گزینه Top Ports را 80 قرار دهید و تایید کنید.
دستور در ترمینال:
/ip firewall nat add action=dst-nat chain=dstnat dst-address=server_ip dst-port=8080 protocol=tcp to-addresses=172.17.0.2 to-ports=80
حال وارد IP > DNS شوید و آدرس 172.17.0.2را در گزینه Servers وارد کنید.
اکنون میتوانید در مرورگر خود آدرس آیپی روتر خود را همراه با «:» و شماره پورتی که به PiHole اختصاص دادید را وارد کرده تا به پنل این سرویس دسترسی پیدا کنید. برای مثال بالا آدرس به صورت 192.168.88.1:888 خواهد بود.
جمعبندی
راهاندازی Docker Container در میکروتیک امکان اجرای سرویسهای مختلف را درون یک محیط ایزوله روی روتر فراهم میکند. این قابلیت برای مدیران شبکه و کاربران حرفهای بسیار مفید است. در این راهنما، مراحل نصب و تنظیم داکر در میکروتیک بهطور کامل توضیح داده شد. با رعایت این مراحل، میتوانید از قدرت کانتینرها در روترهای میکروتیک بهره ببرید و عملکرد شبکه خود را بهینه کنید.