Mikrotik: obnovení konfigurace pomocí skriptu

Mili

Mikrotik: obnovení konfigurace pomocí skriptu
« kdy: 26. 11. 2018, 18:17:57 »
Ahoj, prosím o radu, jak obnovit konfiguraci Mikrotiku pomocí skriptu.

Původní moje představa byla, že router nastavím, konfiguraci exportuji a tu pak v případě potřeby znovu importuji na stejném nebo jiném kusu zařízení. Bohužel, Mikrotik má ve firmwaru bug (celé roky až do poslední verze), takže exportovaná konfigurace již opět nejde naimportovat: po opětovném pokusu o načtení po resetu začne házet nesmyslné chyby typu, že interface již existuje, apod.

Potřebuji tedy ve svém skriptu nastavit jen změny, které jsem si naklikal. Nenašel jsem však nikde, jak se pomocí skriptu obnoví některé ze základních nastavení, které jsem po resetu vybral.
Dle dokumentace se reset do továrního nastavení provede pomocí
"/system reset-configuration" s tím, že parametr run-after-reset vykoná inicializační skript. Po tomto příkazu je ale nahráno pouze obecné tovární nastavení, ale já ještě potřebuji nějak aktivovat konkrétní režim provozu, tedy simulovat klik na např. "WISP AP", nebo "CPE", abych poté mohl skriptem upřesnit některé detaily.

Jakým příkazem nebo parametrem reset-configuration mohu vybrat po resetu režim provozu?


MikyM

  • ***
  • 124
    • Zobrazit profil
Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #1 kdy: 26. 11. 2018, 19:18:35 »
.... po opětovném pokusu o načtení po resetu začne házet nesmyslné chyby typu, že interface již existuje, apod.
.....
Ahoj,

prvni dotaz nez budeme pokracovat.
Projel jsi si dukladne manual ?
https://wiki.mikrotik.com/wiki/Manual:Configuration_Management#Summary

Konkretne:
https://wiki.mikrotik.com/wiki/Manual:Configuration_Management#Configuration_parts_to_watch_out_for_in_exported_.rsc_files

Import troubleshooting
Configuration parts to watch out for in exported .rsc files
Things that should be removed from export files that were created with: "/export", before attempting import on new device.

Interface renaming that is in conflict with default ethernet naming scheme.

MikyM

  • ***
  • 124
    • Zobrazit profil
Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #2 kdy: 26. 11. 2018, 19:28:32 »
dodatek: MK lze nastavit vlastnim scriptem, muzes mu ho tam soupnout pres netinstall a nahradit tak init script po resetu. Konkretni ukazky a priklady jsou na MK foru.

Mili

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #3 kdy: 27. 11. 2018, 06:24:05 »
.... po opětovném pokusu o načtení po resetu začne házet nesmyslné chyby typu, že interface již existuje, apod.
.....
Ahoj,

prvni dotaz nez budeme pokracovat.
Projel jsi si dukladne manual ?
https://wiki.mikrotik.com/wiki/Manual:Configuration_Management#Summary

Konkretne:
https://wiki.mikrotik.com/wiki/Manual:Configuration_Management#Configuration_parts_to_watch_out_for_in_exported_.rsc_files

Import troubleshooting
Configuration parts to watch out for in exported .rsc files
Things that should be removed from export files that were created with: "/export", before attempting import on new device.

Interface renaming that is in conflict with default ethernet naming scheme.
Díky za odpověď. Z odkazovaných stránek jednoznačně vyplývá, že se jedná o úpravy pro použití konfigurace na jiném typu hardwaru, než na jakém byla konfigurace exportována  (viz "before attempting import on new device", nebo "Check if interface/module: ether/wlan/modem/com/etc count match on new and old device"), což je logické - používat konfiguraci jinde je dost nestandardní. Mně však import selže i na stejném kusu. Pokud jsem to tedy četl (je to pravděpodobné, u Mikrotiku zabere i ta nejmenší změna konfigurace mnoho hodin hledání v Google, obvykle bez úspěchu s nutností ptát se po fórech).

Z minulosti mám zkušenost, že u Mikrotiku export a import konfigurace prostě nefunguje - i když se podaří naimportovat po různých úpravách skript, aby byl bez chyby, po importu již router nefunguje tak, jak fungoval před exportem a je nutné ho zresetovat a naklikat vše znovu - pěkně krok za krokem, jak jsem postupně zjistil na různých fórech.

Proto jsem ani v tomto vlákně nepokládal otázku, jak obnovit exportovanou konfiguraci, to jsem již dávno vzdal. Místo toho potřebuji vědět, jak ve skriptu nasimulovat přepnutí konfigurace např. do režimu "WISP AP" nebo "CPE" a těch několik málo dalších nastavení (DHCP, změna IP, atd.) si přidám za toto načtení defaultní konfigurace pro příslušný režim provozu. Je toto možné pomocí nějakého příkazu nebo parametru /system reset-konfiguration?

M.

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #4 kdy: 27. 11. 2018, 08:20:02 »
Jak bylo zméněno, defaultní rsc skript jde změnit.
Jiná možnost je, že provedu reset bez zavedení default konfigurace (/system reset-configuration no-defaults=yes skip-backup=yes) a pak importuji to, co ti udělal ten celý export. Protože pokud máš zavedenu defaultní konfiguraci a importuješ skript, který nastavuje něco v konfliktu s tím defaultem, tak se zastaví.
Jinak souhlas, že v tom pořád mají nějaké chyby a ne vše jde přímo načíst zpět bez úpravy (teď mi třeba lehl import ipv6, kdy ve skriptu se prvně definuje dhcpv6-pd server a odkazuje na pooly adres, které se defunují až později, tak to při importu neprojde, musí se ty bloky editorem přehodit).
Pro zálohu a obnovení nastavení jednoho routeru jde použít backup/restore (binární soubor), ale opravdu bych ho měl obnovovat na tom stejném kusu a verzi ROSu, ten přeplácne aktuální konfiguraci, ať je jakákoliv, což import neudělá.


Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #5 kdy: 27. 11. 2018, 19:37:48 »
Já bych to tedy řešil rovnou psaním skriptu místo klikání - výchozí stav tovární nastavení, pak už jen spustit skript s mojí konfigurací. Co je v textu, je vidět, lze to kopírovat, emailovat i snadno přenášet jinam. Tak jako tak jsou všechny ukázkové příklady formou skriptu. V příloze je ukázka - skript nastaví hodiny podle NTP a následně vytvoří kalendář, který zapíná WiFi jen určité dny v týdnu

Vodako

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #6 kdy: 27. 11. 2018, 21:32:33 »
Na mikrotiku se žádný režimy nepřepínají. To co dělá to tlačítko v quick configu (nebo jak se to okno jmenuje) je jen že se provede nějakej skript. Takže nic simulovat nemusíš. Prostě si tu konfiguraci jen místo klikání napišeš do skriptu a ten pak nahraješ do mikrotiku kde nebude defaultní konfigurace, ale bude uplně prázdný.

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #7 kdy: 28. 11. 2018, 06:59:30 »
import / export ze by nefungoval sa mi nezda, ale dobre...

A ak zlyha tak by som volil nejaky expect script.. Spravit diff povodneho konfiguraku a zalohy a rozdiel tam nasypal cez expect.. Easy a musi to fungovat..

mili

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #8 kdy: 02. 12. 2018, 12:25:43 »
Díky za všechny příspěvky. O víkendu jsem ukládání konfigurace za vydatné pomoci Google dále zkoumal a naprosto s tím nepohnu, celý export a následný import je na Mikrotiku zcela nefunkční.

Odkazovaný návod na zakomentování nastavení ethernetu nepomůže - žádné zmíněné nastavení pro /interface ethernet se neexportuje.

Dále je podivný už samotný export. Dle dokumentace se implicitně provádí export "compact", který by měl uložit pouze rozdíly oproti defaultní konfiguraci. Mně to ale i po továrním resetu exportuje asi dvoukilobajtový soubor s všemožným nastavením.

Podle jiných návodů jsem pokračoval hledáním problematických řádků pomocí doplňkového switche verbose u importu. Pomocí toho jsem našel řádek způsobující chybu, že interface již existuje. Tím jsem tuto chybu odstranil, nicméně po následném importu zbytku konfigurace dojde k odpojení terminálu od routeru a dále zařízení nereaguje ani na WLAN, ani na LAN (v PC jsem samozřejmě přenastavoval IP adresy rozhraní, nezkouším se tedy připojovat přes defaultní adresu 192.168.88.1, nicméně nefunguje ani defaultní, ani nová).
Jinými slovy po importu předtím funkční konfigurace je zařízení mrtvé až do opětovného továrního resetu.

Může mi prosím někdo zkušený skouknout export, co je v něm špatně? Co v něm chybí, nebo přebývá?
Nastavení přes GUI je velmi jednoduché - pouze je aktivován režim CPE, změněna IP adresa, DHCP rozsah a aktivováno připojení k AP pro přístup na internet. Nastavení, které naklikám za 20 sekund, jsem ale nebyl schopen vyexportovat a zpětně naimportovat ani po mnoha hodinách hledání v Google.
Ocením též zdůvodnění, proč je některá řádka špatně, rád rozumím tomu, co dělám :-)


# dec/02/2018 10:47:30 by RouterOS 6.42.3
# software id = P71E-AX7B
#
# model = RouterBOARD mAP 2nD
# serial number = <CENSORED>
/interface bridge
###<ZAKOMENTOVANO_KVULI_CHYBE>add admin-mac=<CENSORED> auto-mac=no comment=defconf name=bridge
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-Ce \
    disabled=no distance=indoors frequency=auto ssid=<CENSORED> wireless-protocol=\
    802.11
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk group-ciphers=\
    tkip,aes-ccm mode=dynamic-keys supplicant-identity=MikroTik \
    unicast-ciphers=tkip,aes-ccm wpa-pre-shared-key=<CENSORED> \
    wpa2-pre-shared-key=<CENSORED>
/ip hotspot profile
set [ find default=yes ] html-directory=flash/hotspot
/ip pool
add name=dhcp ranges=192.168.67.10-192.168.67.254
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge name=defconf
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf disabled=yes interface=wlan1
add bridge=bridge interface=ether1
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add interface=wlan1 list=WAN
/ip address
add address=192.168.67.1/24 interface=ether1 network=192.168.67.0
/ip dhcp-client
add dhcp-options=hostname,clientid disabled=no interface=wlan1
/ip dhcp-server network
add address=192.168.67.0/24 comment=defconf gateway=192.168.67.1 netmask=24
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.67.1 name=router.lan
/ip firewall filter
add action=accept chain=input comment=\
    "defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
    invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
    in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
    ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
    ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
    connection-state=established,related
add action=accept chain=forward comment=\
    "defconf: accept established,related, untracked" connection-state=\
    established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
    connection-state=invalid
add action=drop chain=forward comment=\
    "defconf:  drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
    connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
    ipsec-policy=out,none out-interface-list=WAN
add action=masquerade chain=srcnat out-interface-list=WAN
/system clock
set time-zone-name=Europe/Prague
/system identity
set name=MikroTik_67_1
/system routerboard settings
set silent-boot=no
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN

user

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #9 kdy: 02. 12. 2018, 21:01:40 »
Inak ja neviem co tu riesite, popravde nikdy som s export / import nemal problem. Bezne ked odide Mikrotik v infrastrukture, tak do toho isteho modelu (alebo podobneho, casto to ani nie je ten isty) importujem posledny export a funguje sa dalej.

Konfiguraciu exportujem jednoducho cez (resp. mne to riesi automaticky backup po ssh, ale to je to iste)
Kód: [Vybrat]
/export file=...
a importujem pomocou
Kód: [Vybrat]
/system reset-configuration no-defaults=yes run-after-reset=...(cize samozrejme bez default konfiguracie, pretoze cela konfiguracia, vratane pripadnych default, uz v exporte je)

Dolezite su ale dve veci:
- pri importe mat nahraty .rsc subor v pevnej pamati (cize tie Mikrotiky, ktore maju adresar "flash", tak to musi byt v nom)
- pri importe treba na zaciatok .rsc suboru dopisat riadok ":delay 10", inak na vacsine zariadeni import nefunguje

Takto to robim na HEX, WAP aj rackovych Mikrotikoch a nikdy ziaden problem. Ked zajtra niekde zakopnem o nejaky Mikrotik, tak skusim aj ten vas export.
« Poslední změna: 02. 12. 2018, 21:04:54 od user »

Vodako

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #10 kdy: 02. 12. 2018, 22:31:32 »
Chybu, že interface existuje ti to píše proto, že interface už existuje, protože to nahráváš do mikrotiku s defaultní konfigurací a né do prázdného. Na zařízení se ti pak nejde připojit, protože IP adresu maš přiřazenou na ether1, z DHCP máš adresu a na wlan1 a oba dva máš hozený do bridge, který (pokud teda vůbec existuje) nemá IP žádnou. Vůbec tahle konfigurace je nesmyslná.

pistelak

Stop jelitům, která chtějí rady zdarma.
« Odpověď #11 kdy: 02. 12. 2018, 22:40:46 »
Za 500 tě to naučím.

Vodako

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #12 kdy: 02. 12. 2018, 22:55:20 »
Tohle si uprav, ulož do souboru s koncovkou rsc a nahraj do mikrotiku. Spustíš to pak příkazem "import file-name=JMENO TOHO SOUBORU"

# odstraneni stare konfigurace z Mikrotiku
/ip firewall filter remove [/ip firewall filter find]
/ip firewall nat remove [/ip firewall nat find]
/interface wireless reset-configuration 0
/interface wireless set 0 name="wlan1"
/interface ethernet set 0 name="ether1"
/ip route remove [find distance="1"]
/ip address remove [find]
/ip pool remove [find]
/ip dhcp-server remove [find]
/ip dhcp-server network remove [find]
/ip dhcp-client remove [/ip dhcp-client find]

# nastaveni dle definovanych parametru ze systemu
/interface wireless set wlan1 mode=station band=5ghz-a/n ssid="{SSID}" wireless-protocol=any frequency-mode=manual-txpower country="czech republic" disabled=no ht-rxchains=0,1 ht-txchains=0,1
/interface wireless set wlan1 radio-name="{NAME}"
#ADRESA LAN
/ip address add address=192.168.88.1/24 interface=ether1
#ADRESA WAN (BUD TYTO DVA RADKY PRO RUCNI NASTAVENI)
/ip address add address={IP} interface=wlan1
#BRANA
/ip route add gateway={GATEWAY} dst-address=0.0.0.0/0
#DHCP CLIENT (NEBO TENTO PRO AUTOMATICKE NASTAVENI)
/ip dhcp-client add add-default-route=yes use-peer-dns=yes interface=wlan1

/ip firewall nat add chain=srcnat out-interface=wlan1 action=masquerade disabled=no
#TADY SI UPRAV IP POOL POKUD ZMENIS IP ADRESU NA ETHER1
/ip pool add name=dhcp-pool ranges=192.168.88.10-192.168.88.254
#TADY TAKY
/ip dhcp-server network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=8.8.8.8
/ip dhcp-server add name=dhcp-server interface=ether1 address-pool=dhcp-pool lease-time=1d disabled=no
/system clock set time-zone-name=Europe/Prague
pass old-password="" new-password="{NOVY HESLO}" confirm-new-password="{NOVY HESLO}"

Stop jelitům

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #13 kdy: 03. 12. 2018, 09:14:45 »
dobroser

člověk, který se snaží obohatit společnost zdánlivým konáním dobra

Mili

Re:Mikrotik: obnovení konfigurace pomocí skriptu
« Odpověď #14 kdy: 09. 12. 2018, 14:08:05 »
Dolezite su ale dve veci:
...
- pri importe treba na zaciatok .rsc suboru dopisat riadok ":delay 10", inak na vacsine zariadeni import nefunguje
Teprve teď jsem si všiml této zmínky. Po přidání /delay 10 vše začalo fungovat tak, jak má, a to dokonce bez jakéhokoliv mazání nastavení ethernetu nebo jiných úprav exportované konfigurace (tedy, kromě přidání změny hesla).
Kéž bych si předchozí příspěvky přečetl pořádně, funkční řešení tu bylo celou dobu popsané. Díky!