Cisco IOS 15 - zálohy a obnovy konfigurace a obrazů

Zdroj seriálu: https://www.samuraj-cz.com/serie/cisco-ios/
Pokud máme v síti více aktivních prvků, tak je třeba řadu operací co nejvíce automatizovat. Jednou z operací, které je dobré provádět pravidelně, je záloha konfigurace. Novější funkcí v Cisco IOSu jsou konfigurační archivy a funkce archive. Pomocí ní můžeme (automatizovaně) ukládat, organizovat a spravovat archivy konfigurací, vracet se ke starším konfiguracím (rollback), logovat změny konfigurace a spravovat (záloha a upgrade) obrazy IOSu (image). Jedná se rozhodně o zajímavou a užitečnou funkci.

Pozn.: Za upozornění na tyto zajímavé vlastnosti děkuji kamarádovi, který na fóru vystupuje jako Arpanet.

Logování použití konfiguračních příkazů
Je řada důvodů, kdy se hodí mít detailní přehled o všech konfiguračních změnách na switchi. Ať již z bezpečnostního hlediska, při součinnosti více adminů nebo pro vlastní kontrolu. Jednou z novějších funkcí v IOSu (takže pokud jej na switchi nenaleznete, je třeba upgrade IOSu, také je problém u C6500) je příkaz archive.

Pomocí příkazu archive, můžeme zařídit logování každého příkazu, který mění konfiguraci. Zároveň se ukládá, který uživatel změnu provedl. Takže se hodí, když každý admin má svůj účet (můžeme použít autentizaci přes RADIUS).

Záznamy se ukládají do paměti switche. Log je kruhový, takže při zaplnění se postupně mažou nejstarší záznamy. Můžeme také nastavit, aby se záznamy posílaly na syslog server.

SWITCH(config)#archive // přepnutí do archivního konfiguračního módu
SWITCH(config-archive)#log config // přepnutí do konfigurace logování
SWITCH(config-archive-log-cfg)#logging enable // zapne logování
SWITCH(config-archive-log-cfg)#logging size 200 // počet uchovávaných záznamů 1 - 1000, default 100
SWITCH(config-archive-log-cfg)#hidekeys // hesla v logu nahradí hvězdičkami
SWITCH(config-archive-log-cfg)#notify syslog // při použití tohoto příkazu se budou záznamy posílat také na syslog (můžeme určit, zda jsou zprávy v čistém textu nebo XML)
Následně si můžeme prohlížet zalogované příkazy. Buď zobrazíme všechny, nebo můžeme filtrovat podle uživatele a session.

SWITCH#show archive log config all
idx sess user@line Logged command
1 1 bouska@vty5 | logging enable
2 1 bouska@vty5 | logging size 500
3 1 bouska@vty5 | hidekeys
Pozn.: Pro vymazání logu můžeme vypnout a zpětně zapnout logování nebo nastavit maximum záznamů na 1 a pak zpět. Případně jednodušeji pomocí SWITCH#clear archive log config force.

Zálohování konfigurace
Konfigurační archivy nabízí mechanizmus k ukládání, organizaci a správě archivu konfiguračních souborů Cisco IOSu. Poskytují automatizaci a možnost rollbacku (configure replace) - návratu ke starší konfiguraci.

Pro vytváření konfiguračních archivů (záloh konfigurace), můžeme využít funkci archive. V základu tato funkce pracuje stejně, jako použití příkazu copy, třeba copy running-config tftp: . Ale poskytuje mechanizmy pro automatizaci.

Musíme pouze určit místo (url), kam chceme zálohy ukládat, a prefix názvu. Následně se použije zadaný prefix, který se doplní o pomlčku a číslo konfigurace. Při zaplnění daného počtu konfigurací se přepisují od nejstarší (to funguje pouze na některých úložištích).

SWITCH(config)#archive // přepnutí do archivního konfiguračního módu
SWITCH(config-archive)#path tftp://10.0.0.10/switch01 // v prvním kroku musíme nastavit cestu a prefix souboru
SWITCH(config-archive)#maximum 14 // (volitelně) počet uchovávaných konfigurací
Tím jsme již zprovoznili konfigurační archivy. Vytvoření archivu můžeme vyvolat ručně nebo určitým způsobem zautomatizovat.

SWITCH#archive config // provede ruční archivaci konfigurace (do zadané cesty)
Pozn.: Jako místo uložení (url) můžeme použít řadu protokolů (podle typu IOSu), jednoduché TFTP, bezpečné SCP (secure copy), běžné FTP či další. Pro FTP zadáváme cestu ve tvaru ftp://username:heslo@adresa. Nebo můžeme využít příkazů ip ftp username a ip ftp password, které definují globální údaje.

Zobrazení informací, o provedených archivacích, provedeme následovně.

SWITCH#show archive
The next archive file will be named tftp://10.0.0.10/switch01-4
Archive # Name
0
1 tftp://10.0.0.10/switch01-1
2 tftp://10.0.0.10/switch01-2
3 tftp://10.0.0.10/switch01-3 <- Most Recent
4
Pozn.: V názvu (prefixu) souboru můžeme použít parametry $h pro hostname (jméno switche) a $t pro čas.

Automatické zálohování
Automatizaci provádění archivace můžeme navázat na ukládání konfigurace (když se přepisuje běžící konfigurace, tedy třeba po příkazu write) nebo nastavit pravidelné zálohování po časovém intervalu.

SWITCH(config-archive)#write-memory // zapne automatické provedení archivace při zápisu do paměti
SWITCH(config-archive)#time-period 1440 // zadání času, po kterém se bude provádět automatická archivace, v minutách
Pozn.: Pokud změníme název (cestu), kam se ukládá konfigurace, tak se začne ukládat znovu od 1.

Návrat k předchozí konfiguraci (rollback) a přepsání konfigurace (replacement)
Pokud použijeme příkaz copy startup-config running-config (obecně jakékoliv kopírování do běžící konfigurace), tak se běžící konfigurace nepřepíše, ale provede se spojení (merge) konfigurací (takže neodstraní žádné příkazy). Což často není to, co chceme, pokud se třeba vracíme zpět ke starší konfiguraci po nějakém problému. Na druhou stranu se to hodí, pokud pouze přidáváme nějakou část konfigurace (uloženou v souboru) do běžící.

Proto máme k dispozici příkaz configure replace, který běžící konfiguraci přepíše nějakou uloženou (musí se jednat o kompletní konfiguraci). Aby celý proces působil co nejméně problémů, tak se provádí porovnání běžící konfigurace se souborem a následně se zapisují (provádí) pouze změny. Navíc se celá aplikace provádí v několika cyklech, aby se správně ošetřily závislosti příkazů.

Když spojíme konfigurační archivy (Configuration Archive) s nahrazením konfigurace (Configuration Replacement), tak dosáhneme něco, čemu Cisco říká navrácení konfigurace (Configuration Rollback). Jde o to, že v archivu máme uloženy konfigurace v určitém stavu/bodě (checkpoint) a k těmto stavům se můžeme vrátit pomocí nahrazení konfigurace.

Nahrazení konfigurace
Při použití příkazu musíme specifikovat URL k souboru s konfigurací, která se použije. Zde zadáváme celé jméno a ne pouze prefix, jako u archivace. Můžeme si třeba zobrazit seznam archivů a z nich si vybrat. Základní použití vypadá následovně.

SWITCH#configure replace tftp://10.0.0.10/SWITCH-1
This will apply all necessary additions and deletions
to replace the current running configuration with the
contents of the specified configuration file, which is
assumed to be a complete configuration, not a partial
configuration. Enter Y if you are sure you want to proceed. ? [no]: y
Loading SWITCH-1 from 10.0.0.10 (via Vlan10): !
[OK - 11484 bytes]
Total number of passes: 1
Rollback Done
Za příkazem configure replace můžeme použít řadu klíčových slov, například:

force - neptá se na potvrzení při zapisování konfigurace
list - vypíše aplikované příkazy v jednotlivých průchodech
time - čeká na potvrzení, jinak se vrací zpět
Použití těchto klíčových slov může vypadat třeba takto. Nechci se zdržovat s potvrzováním a chci zobrazit seznam aplikovaných změn.

SWITCH#configure replace tftp://10.0.0.10/SWITCH-1 list force
Loading SWITCH-1 from 10.0.0.10 (via Vlan10): !
[OK - 11526 bytes]
!Pass 1
Total number of passes: 1
Rollback Done
Podle celkového počtu průchodů vidíme, že se aplikovaly nějaké změny (jinak by byla 0) a to v jednom průchodu. Pod !Pass 1 by měl být vypsán seznam příkazů, který zde ale chybí. Asi se jedná o chybu v mé verzi IOSu (neřešil jsem tento problém).

Praktickým příkladem může být také přepsání běžící konfigurace konfigurací startovní.

SWITCH#configure replace nvram:startup-config
Porovnání konfigurací
Porovnání dvou konfigurací, stejné jako při přepisu konfigurace, můžeme vyvolat ručně. Zde ukázka porovnání uložené konfigurace na TFTP s běžící konfigurací.

SWITCH#show archive config differences tftp://10.0.0.10/SWITCH-2 system:running-config
Loading SWITCH-2 from 10.0.0.10 (via Vlan10): !
[OK - 11484 bytes]
!
!Contextual Config Diffs:
interface GigabitEthernet1/0/1
+switchport access vlan 100
+switchport mode access
+ntp clock-period 36028833
interface GigabitEthernet1/0/1
-shutdown
-ntp clock-period 36028834
Časový rollback
Další možností je použití časovaného rollbacku pomocí klíčového slova time. Ten funguje tak, že se nejprve vytvoří aktuální záloha (musí být nakonfigurovány archivy), pak se provede načtení zadané konfigurace. Pokud se do zadaného časového intervalu (10 až 120s) nezadá příkaz pro potvrzení, tak se automaticky vrátí konfigurace zpět do uloženého stavu. Může se to hodit, když jsme připojeni vzdáleně a chceme zkusit nějakou konfiguraci, která by mohla zrušit naše připojení.

SWITCH#configure replace tftp://10.0. 0.10/SWITCH-1 time 120 // časový rollback se 120s
SWITCH#configure confirm // potvrzení změn
Správa obrazů IOSu (IOS images)
Příkaz archive, můžeme také použít pro řadu operací s imagem IOSu na switchi.

Práce s TAR soubory
Pomocí archive tar, můžeme pracovat se soubory TAR, podporováno je vytvoření tar souboru (/create), zobrazení souborů uvnitř taru (/table), rozbalení obsahu taru (/xtract).

Nahrání obrazu na server
Další funkcí je možnost nahrát soubor s obrazem na server (upload) jako zálohu nebo pro následné stažení na jiný switch. Standardně máme na switchi adresář se jménem IOSu a verzí a v něm se nachází BIN soubor s vlastním OS, případně pak webové rozhranní. Pomocí archive se provede zabalení aktivního adresáře s obrazem (zjistíme pomocí show version) do TAR souboru a jeho nahrání na URL. Následuje ukázka včetně části výstupu.

SWITCH#archive upload-sw ftp://user:password@10.0.0.10/c3750e-universalk9-mz.122-40.SE.tar
System software to be uploaded:
System Type: 0x00000002
Writing c3750e-universalk9-mz.122-40.SE.tar !
archiving c3750e-universalk9-mz.122-40.SE (directory)
archiving c3750e-universalk9-mz.122-40.SE/c3750e-universalk9-mz.122-40.SE.bin (11439675 bytes)!
Pozn.: Pokud nahráváme na TFTP server, tak ten musí být speciálním způsobem nastaven. Na FTP se mi zas nedařilo nahrát soubor s celým názvem, takže jsem jej musel zkrátit.

Stažení obrazu ze serveru
Opačnou funkcí k uploadu je download, tedy stažení obrazu ze serveru na switch. Vlastně se jedná o upgrade switche, protože se stáhne tar soubor, ten se rozbalí a může následovat i restart switche. Při tom můžeme vybrat, zda chceme přepsat současný obraz tímto novým nebo jej zachovat a nový přihrát. Při upgradu se kontroluje, zda je dostatek volného místa a zda image odpovídá danému switchi nebo jestli se jedná o stejnou verzi, která je již na switchi.

SWITCH#archive download-sw ftp://user:password@10.0.0.10/c3750.tar
Loading c3750.tar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!
[OK - 25353216/4096 bytes]
Loading c3750.tar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
examining image...
extracting info (110 bytes)
extracting c3750e-universalk9-mz.122-40.SE/info (397 bytes)
extracting c3750e-universalk9-mz.122-40.SE/info (399 bytes)
extracting info (110 bytes)
Stacking Version Number: 1.36
System Type: 0x00000002
Ios Image File Size: 0x00AEB200
Total Image File Size: 0x017F7800
Minimum Dram required: 0x08000000
Image Suffix: universalk9-122-40.SE
Image Directory: c3750e-universalk9-mz.122-40.SE
Image Name: c3750e-universalk9-mz.122-40.SE.bin
Image Feature: IP|LAYER_3|PLUS|SSH|3DES|MIN_DRAM_MEG=128
Když probíhá download, tak můžeme zjistit stav operace, odpověď je jedna z níže uvedených.

SWITCH#show archive status
IDLE: No upgrade in progress
LOADING: Upgrade in progress
EXTRACT: Extracting the image
VERIFY: Verifying software
RELOAD: Upgrade completed. Reload pending
Pozn.: Na stacku můžeme příkaz archive použít pouze na master switchi, obraz se pak rozkopíruje na všechny členy. Pro upgrade switche s nekompatibilním obrazem můžeme použít archive copy-sw pro zkopírování z existujícího člena stacku. Switch se automaticky restartuje a připojí.

S příkazem archive download-sw můžeme použít některý z řady přepínačů, například:

/overwrite - přepíše původní obraz ve flash paměti
/reload - po stažení obrazu provede restart switche (pokud neexistují neuložené změny konfigurace)
/leave-old-sw - ponechá původní obraz na switchi
/allow-feature-upgrade - povolí instalaci obrazu s jinými vlastnostmi (feature sets)
Pozn.: Pokud máme plnou paměť, tak můžeme ručně smazat původní obraz pomocí delete /force /recursive url. Pouze nesmíme restartovat switch než nahrajeme nový obraz.

Celá operace upgradu může docela dlouho trvat. Průběh je takový, že se vytvoří adresář update, do něj se rozbalí stahovaný obraz, pokud máme nastaveno overwrite, tak se následně smaže původní adresář, a update se přejmenuje na správný název.