English · Ελληνικά
Το config ενός router είναι μόνο τόσο ασφαλές όσο το τελευταίο του backup. Αποθήκευσε σε startup, κάνε export εκτός συσκευής σε TFTP ή SCP, αυτοματοποίησέ το με το archive feature και το kron, κάνε rollback σε μια κακή αλλαγή με configure replace, και ανάκτησε μια συσκευή που κανείς δεν έχει τον κωδικό της.
Υπάρχουν τρία μέρη όπου μπορεί να ζει ένα config Cisco, με αυξανόμενη σειρά ασφάλειας. Το running-config (RAM) είναι αυτό που είναι ζωντανό τώρα και πεθαίνει στο reboot. Το startup-config (NVRAM) είναι αυτό που κάνει boot και επιβιώνει μια διακοπή ρεύματος. Και ένα αντίγραφο εκτός συσκευής — σε έναν server TFTP/SCP ή σε ένα git repo — είναι το μόνο πράγμα που επιβιώνει τον θάνατο της ίδιας της συσκευής, μια κλοπή, ή ένα σβήσιμο από λάθος εντολή.
Οι περισσότερες διακοπές που προκαλούνται από «χάσαμε το config» είναι στην πραγματικότητα «αποθηκεύσαμε μόνο σε startup». Αυτό το tutorial καλύπτει και τα τρία επίπεδα, μετά τα κομμάτια που ξεχωρίζουν έναν τεχνικό από έναν επαγγελματία: αυτοματοποίηση backups ώστε να γίνονται χωρίς εσένα, rollback μιας κακής αλλαγής με μία εντολή με configure replace, και ανάκτηση μιας συσκευής όταν ο κωδικός έχει χαθεί εδώ και καιρό.
01
Το πρώτο και πιο ξεχασμένο βήμα. Οι αλλαγές σου είναι ζωντανές αλλά ασταθείς μέχρι να αντιγράψεις το running-config στο startup-config. Αυτή είναι η συνήθεια «γράψε wr μετά από κάθε αλλαγή».
# Η ρητή μορφή R1# copy running-config startup-config Destination filename [startup-config]? ← πάτα Enter Building configuration... [OK] # Η συντόμευση που γράφουν όλοι — ίδιο αποτέλεσμα R1# write memory # ή απλώς: wr # Άλλαξε κάτι από την τελευταία αποθήκευση; Σύγκρινε τα δύο. R1# show archive config differences nvram:startup-config system:running-config # Κενό output = το running και το startup ταιριάζουν. Μη κενό = μη αποθηκευμένες αλλαγές.
02
Η NVRAM πεθαίνει με τη συσκευή. Ένα αντίγραφο εκτός συσκευής είναι το πραγματικό backup. Το TFTP είναι το κλασικό (και ανασφαλές) transport· το SCP είναι η ίδια ιδέα πάνω από SSH και αυτό πρέπει να χρησιμοποιείς σε production.
R1# copy running-config tftp: Address or name of remote host []? 192.168.1.50 Destination filename [r1-confg]? R1-2026-07-10.cfg !! 1846 bytes copied in 0.4 secs # Φέρ' το πίσω με τον ίδιο τρόπο (προσοχή — δες την παγίδα merge στην ενότητα 03) R1# copy tftp: running-config
# Μία γραμμή: πηγή, μετά το πλήρες URL προορισμού scp:// R1# copy running-config scp://backup@192.168.1.50/R1-2026-07-10.cfg Address or name of remote host [192.168.1.50]? Password: 1846 bytes copied in 0.5 secs # Για να αφήσεις τη συσκευή να ΔΕΧΕΤΑΙ pushes scp, ενεργοποίησε την πλευρά server: R1(config)# ip scp server enable # (απαιτεί SSH + έναν τοπικό χρήστη AAA — δες την ενότητα SSH του "First Contact")
Το TFTP δεν έχει καμία authentication και καμία κρυπτογράφηση — ολόκληρο το config σου, μαζί με τα (αδύναμα) κρυπτογραφημένα hashes κωδικών, διασχίζει το καλώδιο σε καθαρό κείμενο. Είναι εντάξει σε ένα απομονωμένο segment διαχείρισης για μια γρήγορη αντιγραφή, αλλά για οτιδήποτε διασχίζει πραγματικό δίκτυο χρησιμοποίησε SCP. Ίδια muscle memory, τυλιγμένη σε SSH. Αν ένα config αξίζει να το κάνεις backup, αξίζει να μην το κάνεις broadcast.
03
Η πιο επικίνδυνη παρανόηση στα backup της Cisco. Η αντιγραφή ενός config ΜΕΣΑ στο running-config δεν το αντικαθιστά — το κάνει merge. Αυτό ξαφνιάζει όλους μία φορά, συνήθως οδυνηρά.
Όταν κάνεις copy tftp: running-config, το IOS εφαρμόζει το backup πάνω σε ό,τι ήδη τρέχει. Εντολές που υπάρχουν αντικαθίστανται· εντολές στο ζωντανό config που δεν είναι στο backup μένουν εκεί. Οπότε η επαναφορά ενός παλιού backup δεν επιστρέφει τη συσκευή σε εκείνη την παλιά κατάσταση — παίρνεις ένα τέρας merge και των δύο. Για να αντικαταστήσεις πραγματικά το running config, είτε αντίγραψε στο startup και κάνε reload, είτε χρησιμοποίησε configure replace (ενότητα 04).
# Επιλογή Α — επαναφορά στο STARTUP, μετά reboot σε καθαρή κατάσταση R1# copy tftp: startup-config R1# reload # Η συσκευή κάνει boot εξ ολοκλήρου από το επαναφερμένο αρχείο. Καθαρό, αλλά ένα reboot. # Επιλογή Β — αντικατάστησε το RUNNING config ζωντανά, χωρίς reboot (ενότητα 04) R1# configure replace tftp://192.168.1.50/R1-good.cfg
04
Το IOS μπορεί να κρατάει αυτόματα versioned snapshots του config και να κάνει rollback σε οποιοδήποτε ζωντανά — χωρίς reboot, χωρίς merge. Αυτό είναι το επαγγελματικό δίχτυ ασφαλείας για ριψοκίνδυνες αλλαγές.
R1(config)# archive R1(config-archive)# path flash:/archive/R1-config R1(config-archive)# maximum 14 # κράτα 14 εκδόσεις R1(config-archive)# time-period 1440 # auto-snapshot κάθε 1440 λεπτά (καθημερινά) R1(config-archive)# write-memory # κάνε snapshot και σε κάθε "wr" R1(config-archive)# end # Πάρε ένα snapshot κατά παραγγελία, και δες τι είναι αποθηκευμένο (ασφαλές) R1# archive config R1# show archive The maximum archive configurations allowed is 14. Archive # Name 1 flash:/archive/R1-config-1 2 flash:/archive/R1-config-2 <- Πιο Προσφατο
# Έκανες μια αλλαγή, κάτι έσπασε. Γύρνα το RUNNING config πίσω σε # ένα γνωστά-καλό snapshot — ζωντανά, χωρίς reboot, πραγματική αντικατάσταση (όχι merge). R1# configure replace flash:/archive/R1-config-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 Total number of passes: 1 Rollback Done # Ακόμα πιο ασφαλές για απομακρυσμένες αλλαγές: auto-rollback αν χάσεις το session R1# configure terminal revert timer 5 # Κάνε τις αλλαγές σου· αν δεν κάνεις "configure confirm" μέσα σε 5 λεπτά, # το IOS επαναφέρει αυτόματα. Το αλεξίπτωτό σου για απομακρυσμένη δουλειά config.
reload in 5 Ειναι το Φτωχικο Auto-Rollback
Κανένα archive ρυθμισμένο και πας να κάνεις μια τρομακτική αλλαγή σε απομακρυσμένη συσκευή; Γράψε reload in 5 πριν ξεκινήσεις. Αν η αλλαγή σου σε κλειδώσει έξω, η συσκευή κάνει reboot σε 5 λεπτά πίσω στο τελευταίο αποθηκευμένο startup-config. Αν όλα είναι εντάξει, ακύρωσέ το με reload cancel. Είναι πρωτόγονο — κοστίζει ένα reboot και επαναφέρει μόνο στο startup — αλλά έχει σώσει αμέτρητους admin κολλημένους 300 χλμ. μακριά από το rack.
05
Ένα backup που πρέπει να θυμάσαι να τρέξεις είναι ένα backup που δεν θα έχεις. Το IOS έχει ενσωματωμένο scheduler — το kron — που μπορεί να στέλνει το config εκτός συσκευής σε χρονοπρογραμματισμό, χωρίς εξωτερικά εργαλεία.
# 1. Όρισε ΤΙ να τρέξει — μια πολιτική που αντιγράφει το running-config σε SCP R1(config)# kron policy-list NIGHTLY-BACKUP R1(config-kron-policy)# cli copy running-config scp://backup@192.168.1.50/R1-nightly.cfg R1(config-kron-policy)# exit # 2. Όρισε ΠΟΤΕ — κάθε μέρα στις 02:00, επαναλαμβανόμενο R1(config)# kron occurrence NIGHTLY at 2:00 recurring R1(config-kron-occurrence)# policy-list NIGHTLY-BACKUP R1(config-kron-occurrence)# end # Επαλήθευσε το χρονοδιάγραμμα (ασφαλές) R1# show kron schedule Kron Occurrence Schedule NIGHTLY inactive, will run again in 0 days 13:41:22
Το Kron εκτελεί κάθε γραμμή cli σαν να πληκτρολογήθηκε στο prompt # — αλλά δεν υπάρχει άνθρωπος να απαντήσει σε prompts. Εντολές που κάνουν ερώτηση (όπως ένα διαδραστικό copy που ζητάει filename) μπορούν να κολλήσουν. Χρησιμοποίησε πλήρως-ορισμένες μορφές μιας γραμμής με τον προορισμό ενσωματωμένο στο URL, όπως παραπάνω, ώστε τίποτα να μη χρειάζεται απάντηση. Δοκίμασε την ακριβή εντολή στο χέρι μία φορά πριν εμπιστευτείς το χρονοδιάγραμμα.
06
Το config δεν είναι το μόνο πράγμα που αξίζει να σωθεί. Μια κατεστραμμένη ή διαγραμμένη εικόνα IOS μετατρέπει ένα switch σε πρες-παπιέ. Κράτα κι ένα αντίγραφο του .bin εκτός συσκευής.
# Δες τα αρχεία εικόνας και τον ελεύθερο χώρο (ασφαλές) R1# show flash: -#- --length-- -----date/time------ path 1 45088768 Jul 10 2026 09:14:02 c2900-universalk9-mz.SPA.157-3.M9.bin 2 1846 Jul 10 2026 10:02:11 R1-2026-07-10.cfg # Αντίγραψε την εικόνα στον server σου (σημείωσε το ακριβές filename από πάνω) R1# copy flash:c2900-universalk9-mz.SPA.157-3.M9.bin tftp: Address or name of remote host []? 192.168.1.50 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 45088768 bytes copied in 78.2 secs # Επιβεβαίωσε την ακεραιότητα έναντι του δημοσιευμένου hash της Cisco R1# verify /md5 flash:c2900-universalk9-mz.SPA.157-3.M9.bin
07
Κληρονόμησες μια συσκευή που κανείς δεν έχει τον κωδικό της; Δεν τη σβήνεις. Κάνεις boot γύρω από το startup-config χρησιμοποιώντας το configuration register, ανακτάς το config, και επαναφέρεις τους κωδικούς. Η φυσική πρόσβαση από console είναι υποχρεωτική — γι' αυτό ακριβώς έχει σημασία η ασφάλεια του console.
# 1. Μπες από console, κάνε power-cycle, και στείλε ένα BREAK κατά το boot για να φτάσεις στο ROMMON rommon 1 > confreg 0x2142 # πες του να ΑΓΝΟΗΣΕΙ το startup-config στο επόμενο boot rommon 2 > reset # 2. Κάνει boot με κενό running-config (setup wizard) — απάντησε όχι. Μετά # φόρτωσε το ΠΡΑΓΜΑΤΙΚΟ config από τη NVRAM στο running ΧΩΡΙΣ να ενεργοποιηθούν οι κωδικοί του: Router> enable Router# copy startup-config running-config # το config σου γύρισε, και είσαι ήδη privileged # 3. Όρισε νέο κωδικό και βεβαιώσου ότι τα interfaces που χρειάζεσαι δεν είναι shut Router# configure terminal Router(config)# enable secret NewStr0ng!Pass # 4. ΚΡΙΣΙΜΟ: επανάφερε το config register ώστε να κάνει boot κανονικά την επόμενη φορά Router(config)# config-register 0x2102 Router(config)# end # 5. Αποθήκευσε και κάνε reboot Router# write memory Router# reload
Αν παραλείψεις το config-register 0x2102, η συσκευή συνεχίζει να αγνοεί το startup-config της σε κάθε μελλοντικό boot — θα ανεβαίνει κενή κάθε φορά και θα νομίζεις ότι η ανάκτηση απέτυχε. Επιβεβαίωσε με show version (η τελευταία γραμμή δείχνει το configuration register). Τα switch χρησιμοποιούν ελαφρώς διαφορετική διαδικασία (κράτα πατημένο το κουμπί MODE κατά το boot, μετά flash_init / rename flash:config.text) αλλά η ιδέα είναι η ίδια: κάνε boot γύρω από το config, ανάκτησέ το, επανάφερε τον κωδικό, επανέφερε κανονικό boot.
08
Οι εντολές backup και ανάκτησης που αξίζει να αποστηθίσεις.
| Εντολη | Τι κανει |
|---|---|
| copy run start · wr | Αποθήκευσε το running-config στη NVRAM (επιβιώνει το reboot). |
| copy run tftp: / scp: | Κάνε export το config εκτός συσκευής. SCP για οτιδήποτε μη έμπιστο. |
| copy tftp: startup-config | Επαναφορά στο startup — μετά reload για καθαρή αντικατάσταση. |
| configure replace <file> | Αντικατέστησε το running config ζωντανά — πραγματική αντικατάσταση, χωρίς reboot. |
| archive config | Πάρε τώρα ένα versioned snapshot config. |
| show archive | Λίστα αποθηκευμένων εκδόσεων config. |
| show kron schedule | Δες προγραμματισμένες αυτοματοποιημένες δουλειές. |
| show flash: / dir flash: | Λίστα αρχείων και ελεύθερου χώρου (config + εικόνα IOS). |
| reload in 5 / reload cancel | Όπλισε / αφόπλισε ένα reboot ασφαλείας πριν από μια ριψοκίνδυνη αλλαγή. |
| config-register 0x2102 | Κανονικό boot (0x2142 = αγνόησε το startup, για ανάκτηση). |
Συμπερασματα
wr) → εκτός συσκευής (TFTP/SCP/git). Μόνο το τρίτο επιβιώνει τον θάνατο της ίδιας της συσκευής. Οι περισσότερες διακοπές «χάσαμε το config» είναι στην πραγματικότητα «αποθηκεύσαμε μόνο σε startup».configure replace. Αυτή η παγίδα δαγκώνει τον καθένα ακριβώς μία φορά.configure replace αναιρούν μια κακή αλλαγή χωρίς reboot και χωρίς merge. Άναψέ το πριν το χρειαστείς.kron στέλνει το config εκτός συσκευής σε πρόγραμμα χωρίς εξωτερικά εργαλεία — χρησιμοποίησε πλήρως-ορισμένες εντολές μιας γραμμής ώστε τίποτα να μην κάνει prompt.verify /md5.configure terminal revert timer ή ένα απλό reload in 5 σε ανακτά αυτόματα αν μια αλλαγή κόψει το ίδιο σου το session.Ένα νεκρό switch πρέπει να σου κοστίσει είκοσι λεπτά, όχι ένα χαμένο Σαββατοκύριακο ξαναχτίζοντας ένα config από μνήμης. Στήνω αυτοματοποιημένα, εκτός-έδρας backups και διαδικασίες ανάκτησης για κάθε συσκευή που διαχειρίζομαι, και πραγματικά δοκιμάζω την επαναφορά — όχι μόνο τη δουλειά backup.
Κλεισε μια Discovery Call →