Tutorial
RouterOS Containers: Docker su MikroTik
Vykdykite Docker tipo konteinerius MikroTik RouterOS v7: įjunkite konteinerių režimą, sukurkite veth tinklą ir saugyklą, diekite ir valdykite dideliu mastu.
Santrauka MikroTik RouterOS v7 gali vykdyti su Docker suderinamus konteinerius tiesiogiai maršrutizatoriuje, todėl DNS filtravimas, stebėjimo agentai ir maži tinklo paslaugos gyvuoja šalia maršruto parinkimo plokštumos, o ne atskirame įrenginyje. Šis vadovas apima aparatinės įrangos ir architektūros reikalavimus, saugų konteinerių device-mode įjungimą, veth ir tilto tinklo su NAT kūrimą, pirmojo konteinerio diegimą ir konteinerių valdymą visame įrenginių parke. RouterOS 7.23 (2026 m. gegužė) išplėtė paruoštų naudoti konteinerių programų katalogą, todėl tai tapo praktiška galimybe tiek IPT, tiek laboratorijų kūrėjams.
Kas Yra Konteineriai MikroTik RouterOS?
Konteineriai MikroTik RouterOS yra MikroTik įgyvendinta Linux konteinerių versija, leidžianti RouterOS v7 įrenginiui vykdyti izoliuotus, su Docker suderinamus programų atvaizdus tiesiogiai maršrutizatoriuje. Jie veikia su atvaizdais iš Docker Hub, GCR, Quay ir kitų registrų, ir nors RouterOS naudoja savo CLI sintaksę vietoj docker komandos, pagrindinis veikimas yra tas pats — parsisiųskite atvaizdą, suteikite jam tinklą, prijunkite saugyklą ir paleiskite. (MikroTik dokumentacija)
IPT arba laboratorijai tai reiškia, kad maži, su tinklu susiję paslaugos gali būti sutelkti kartu su maršruto parinkimo plokštuma: Pi-hole ar AdGuard DNS filtras, stebėjimo agentas, atvirkštinis tarpinis serveris arba IoT tiltas. Stabili RouterOS 7.23 versija, išleista 2026 m. gegužės 25 d., pridėjo ilgą paruoštų naudoti programų sąrašą — įskaitant paperless-ngx, nextcloud, lorawan-stack, birdnet-go ir Docker valdymo sąsajas, tokias kaip portainer ir dockge — kartu su nauju jungikliu network-outgoing-access, skirtu užkirsti kelią konteineriui pradėti išeinantį srautą. (RouterOS 7.23 changelog)
Reikalavimai ir Aparatinė Įranga
container paketas suderinamas su arm, arm64 ir x86 architektūromis ir turi būti įdiegtas prieš viską kita. Nuotolinio atvaizdo parsisiuntimui reikia daug laisvos vietos, todėl MikroTik rekomenduoja išorinę saugyklą, o ne įrenginio vidinę „flash” atmintį. (MikroTik dokumentacija)
Numatykite išorinę laikmeną per USB, SATA arba NVMe, suformatuotą RouterOS palaikoma failų sistema. MikroTik siūlo diską, gebantį pasiekti bent 100 MB/s nuoseklų pralaidumą ir 10K atsitiktinių IOPS — lėtesni diskai atvaizdo išskleidimą paverčia skausmingai ilgu. Venkite konteinerių tomus laikyti integruotoje saugykloje, kuri yra maža ir nusidėvi dėl konteinerių rašymo modelių. Įrenginiai su labai ribota „flash” atmintimi turėtų naudoti iš anksto sukurtus atvaizdus prijungtame diske, o ne parsisiųsti nuotoliniu būdu.
Saugiai Įjunkite Konteinerių Device-Mode
Konteineriai pagal numatymą yra išjungti ir dėl pagrįstos priežasties įjungti juos reikia fizinės prieigos. Įjunkite funkciją su:
/system/device-mode/update container=yesTada RouterOS laukia, kol patvirtinsite paspausdami reset mygtuką arba atlikdami šaltą perkrovimą. Šis fizinio patvirtinimo vartai yra apgalvota saugumo kontrolė: kai konteinerių režimas įjungtas, konteinerius galima pridėti, paleisti ir pašalinti nuotoliniu būdu, o kenkėjiškas atvaizdas gali tapti įsitvirtinimo tašku maršrutizatoriuje. MikroTik dėl to kalba tiesiai — jei jūsų RouterOS įrenginys pažeistas, konteineriai padaro kenkėjiškos programinės įrangos diegimą trivialų, o trečiųjų šalių atvaizdams nėra jokios saugumo garantijos.
Laikykite konteinerius talpinantį maršrutizatorių lygiai tokiu pat saugiu, kaip mažiausiai patikimas atvaizdas, kurį jame vykdote. Diekite tik atvaizdus, kuriais pasitikite, laikykite įrenginį už ugniasienės ir prieš įjungdami tai gamyboje perskaitykite mūsų device-mode saugaus eksploatavimo vadovą.
Sukurkite Konteinerių Tinklą
Konteineriams reikia virtualios sąsajos, tilto ir NAT, kad jie pasiektų internetą. Žemiau pateiktas modelis atspindi „bridge” tinklą Docker’yje. Pirmiausia sukurkite veth sąsają ir tiltą, kuris dalijasi jos šliuzo adresu:
/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1/interface/bridge/add name=containers/ip/address/add address=172.17.0.1/24 interface=containers/interface/bridge/port add bridge=containers interface=veth1Vienas veth gali aptarnauti daug konteinerių, o papildomų veth/tilto porų kūrimas leidžia izoliuoti konteinerių grupes vieną nuo kitos. Jei RouterOS tiltavimas jums naujas, mūsų tilto konfigūravimo pamoka paaiškina pagrindinį modelį. Tada pridėkite masquerade taisyklę, kad išeinantis konteinerių srautas būtų transliuojamas — visą vaizdą rasite NAT konfigūravimo vadove:
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24Įdiekite Savo Pirmąjį Konteinerį
Nukreipkite registry ir laikiną išskleidimo katalogą į savo išorinį diską, tada pridėkite atvaizdą. Žemiau pateiktas Pi-hole pavyzdys yra kanoninis iš MikroTik dokumentacijos:
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmp/container/add remote-image=pihole/pihole interface=veth1 root-dir=disk1/images/pihole name=pihole logging=yesKonteinerio pridėjimas pradeda atsisiuntimą ir išskleidimą, bet jo nepaleidžia. Patikrinkite eigą su /container/print ir palaukite, kol bus status=stopped, tada paleiskite jį:
/container/start piholeGaliausiai paskelbkite paslaugą, persiųsdami prievadą iš maršrutizatoriaus į veth adresą:
/ip firewall nat add action=dst-nat chain=dstnat dst-address=192.168.88.1 dst-port=80 protocol=tcp to-addresses=172.17.0.2 to-ports=80Pi-hole dabar atsako maršrutizatoriaus LAN IP adresu. DNS filtravimas tokiu būdu yra alternatyva RouterOS savitiems blokavimo sąrašams — jei pirmenybę teikiate keliui be konteinerių, žiūrėkite mūsų RouterOS adlist pamoką.
Valdykite Konteinerius Visame Parke
Vienas konteineris viename maršrutizatoriuje yra paprasta. Tikrasis eksploatacinis klausimas IPT yra nuoseklumas: tas pats atvaizdas, ta pati veth ir NAT schema, tas pats saugyklos išdėstymas ir tos pačios start-on-boot bei atminties ribos kiekviename įrenginyje. RouterOS suteikia jums primityvus — start-on-boot=yes išlieka po perkrovimų, o memory-high arba memory-max riboja RAM kiekvienam konteineriui, kad nevaldoma paslauga negalėtų išbadinti maršruto parinkimo plokštumos:
/container/config/set memory-high=200M/container/set pihole start-on-boot=yesSunki dalis yra padaryti tai vienodai keliasdešimtyje ar šimtuose nuotolinių maršrutizatorių, o tada įrodyti, kad kiekvienas iš jų po perkrovimo tikrai vėl pasileido — ypač kai įrenginys yra už CGNAT ir jūs negalite paprasčiausiai pasiekti jo viešojo IP.
Patarimai
- Visus konteinerių tomus laikykite išoriniame diske; niekada vidinėje NAND atmintyje.
- Naudokite atskirą veth/tilto porą, kad izoliuotumėte nepatikimus konteinerius nuo patikimų.
- Nustatykite
memory-maxviskam, kuo nevisiškai pasitikite, kad maršrutizatorius išliktų reaguojantis. - Švariam bandymų stendui prieš liečiant gamybą paleiskite tuos pačius atvaizdus virtualizuotoje CHR instancijoje prieš diegdami fiziniuose maršrutizatoriuose.
Ženkite Kitą Žingsnį
Konteineriai paverčia MikroTik maršrutizatorių mažu programų talpintuvu, tačiau tokių talpintuvų parkui reikia orkestravimo. MKController centralizuotai kuria RouterOS konfigūracijos šablonus, taiko juos kiekvienam įrenginiui jūsų inventoriuje ir seka nuokrypį, kad matytumėte, kuris maršrutizatorius nukrypo — o per NATCloud pasiekia įrenginius už CGNAT, kad patvirtintų, jog konteineris po techninės priežiūros pasileido iš naujo. Tai užpildo atotrūkį tarp vieno konteinerio konfigūravimo rankomis ir patikimo jų eksploatavimo visame IPT tinkle.