Network Education
КаталогГлоссарийПрогресс
Cisco ICND2: коммутация, маршрутизация и WAN
  1. 1Введение
  2. 2VLAN в Ethernet
  3. 3VLAN в Cisco IOS
  4. 4Протокол Spanning Tree
  5. 5STP в Cisco IOS
  6. 6Агрегация портов
  7. 7EtherСhannel в Cisco IOS
  8. 8FHRP
  9. 9HSRP
  10. 10GLBP
  11. 11Динамическая маршрутизация
  12. 12EIGRP
  13. 13EIGRP для IPv4
  14. 14EIGRP для IPv6
  15. 15OSPF
  16. 16OSPFv2 в Cisco IOS
  17. 17OSPFv3 в Cisco IOS
  18. 18WAN-каналы
  19. 19Последовательный порт
  20. 20Последовательный порт в Cisco IOS
  21. 21PPP
  22. 22PPP в Cisco IOS
  23. 23BGP
  24. 24VPN
  25. 25GRE
  26. 26QoS
  27. 27Мониторинг
  28. 28Мониторинг Cisco IOS
  29. 29Загрузка Cisco IOS
  30. 30Лицензирование IOS
  31. 31Облака и SDN
Каталог/Cisco CCNA/Cisco ICND2: коммутация, маршрутизация и WAN/Загрузка Cisco IOS

Загрузка Cisco IOS

29Урок 29 из 31Фундаментальный курс

О чём этот урок

Процесс загрузки Cisco IOS: этапы инициализации, роль конфигурационного регистра и процедура восстановления пароля.

Ключевые выводы

  • Configuration Register 0x2142 (бит 6 = 1) заставляет IOS игнорировать startup-config при загрузке — основа процедуры восстановления пароля.
  • running-config — не файл, а живое состояние в RAM; copy startup-config running-config дополняет конфигурацию, а не заменяет её.
  • configure replace nvram:startup-config заменяет конфигурацию без перезагрузки, применяя только разницу — но имеет ограничения при сложных конфигурациях.
  • Команда no service password-recovery на коммутаторах запрещает восстановление пароля без полного сброса конфигурации.
  • После восстановления пароля обязательно верните Configuration Register в 0x2102, иначе устройство будет каждый раз загружаться без startup-config.

Проверьте себя

Вопрос 1 из 5

Какое значение Configuration Register заставляет IOS игнорировать startup-config?

Вопрос 2 из 5

Что делает команда copy startup-config running-config?

Вопрос 3 из 5

Что нужно сделать после восстановления пароля?

Вопрос 4 из 5

Что делает no service password-recovery на коммутаторах?

Вопрос 5 из 5

Чем configure replace отличается от copy startup-config running-config?

🔗Связанные уроки

🔗Смотрите также

Защита IOS: Secure Boot Set, мониторинг и SNMPv3Cisco IINS: сетевая безопасность
→

Защита файловой системы IOS и Secure Boot Set пересекается с процессом загрузки Cisco IOS

Мониторинг Cisco IOSЛицензирование IOS

Транскрипция

Следующий модуль. Модуль будет посвящен тому, как работает CISCO. То, что мы сейчас обсуждали всякие протоколы, то, что можно мониторить, это всё фигня. На самом деле любое устройство, которое будет иметь какую-то логику, будет иметь операционную систему, и до этой операционной системы нужно будет ещё дойти. Надо каким-то образом сделать так, чтобы роутер или свитч, будучи просто специализированным компьютером, получил бы возможность загрузить эту самую операционную систему. И не всегда этот процесс удаётся корректно завершить. Поэтому для того, чтобы понимать, как будет загружаться роутер или свитч, мы должны будем разобрать этот процесс, посмотреть на то, как будет находиться образ для загрузки, как будет передаваться управление операционной системе и всё такое. Для начала нужно будет заметить, что устройств на основе операционной системы CISCO IOS довольно много. Это, во-первых, маршрутизаторы,

во-вторых, это коммутаторы Catalyst и коммутаторы Metro Ethernet. Они, в принципе, похожи друг на друга. Причём Catalyst бывают разные. Catalyst бывают младшенькие, 29-я линейка, 35-я, 36-я, 37-я, 38-я линейки. И бывают, соответственно, старшие Catalyst типа шеститысячников. Они сильно различаются между собой, это фактически не одна и та же линейка, это вообще даже друг на друга непохожие устройства. У них разная элементная база. И IOS у них тоже разные. Естественно, что если у вас разная элементная база, если у вас разные, по сути, IOS используются, то процесс загрузки там тоже будет различаться. И бывают всякие точки доступа, у которых вообще всё совсем третье. Поэтому, если говорить про работу устройств, нам нужно будет взять и зафиксировать работу на какой-то конкретной линейке устройств, на каком-то конкретном устройстве, потому что на других устройствах, обладая другими процессорами,

другой элементной базой, другим всем, соответственно, процесс загрузки может и будет отличаться. Если говорить про роутеры, про младшенькие ISR, Integrated Services Router, которые можно будет встретить в сетях предприятия, то процесс загрузки маршрутизатора будет выглядеть следующим образом. Сначала, когда вы подаёте питание на роутер, начинает работать так называемый bootstrap. Это загрузчик, который хранится в энергонезависимой памяти устройства. Его можно перепрошить, это перезаписываемая микросхема, но в норме он не перезаписывается. Как с завода сошёл, так он и остаётся. Этот загрузчик минималистичный, он нужен только для того, чтобы провести самотестирование железа, выяснить, что оно не против того, чтобы завестись. И дальше будет загружаться подобие операционной системы. В CISCO есть такая штука, которая называется ROMMON, ROM Monitor. Этот ROMMON как раз нужен для того, чтобы выполнить полноценную загрузку,

это такая мини-операционная система, которая умеет делать что-то чуть больше, чем самотестирование железа. Bootstrap передаёт управление ROMMON, ROMMON передаёт управление IOS, если ему это удаётся сделать. Если он находит образ для загрузки и, соответственно, может ему передать управление. Если IOS не удаётся запуститься по каким-то причинам, например, потому что ROMMON не нашёл образ для загрузки, в этом случае система выпадает в осадок и говорит: извините, загрузиться не удалось, и оставляет вас наедине с командной строкой этого самого ROMMON. В ROMMON особо ничего сделать нельзя, кроме каких-то минимальных возможностей для аварийного восстановления работоспособности системы. Конфигурация, которая будет управлять поведением каждого из этих элементов, она должна будет где-то храниться. Работа bootstrap как такового

никем не регулируется, он просто прошит в памяти и больше ничего ему не требуется. Для работы ROMMON нужно будет указывать некоторые параметры его работы, и управлять его поведением будет, во-первых, config register. Это просто некоторое число, которое хранится в энергонезависимой памяти шасси. И, во-вторых, это будут некоторые строчки в startup config. Не все. Вообще говоря, startup config — это штука, предназначенная для IOS. Но boot, этот самый ROMMON, он тоже умеет кое-что из startup config читать. Как минимум, строчку boot system, то есть где брать файл для загрузки IOS. После того, как файл для загрузки IOS найден, он загружен в оперативную память и на него передано управление, IOS начинает грузиться и пытается применить настройки для самого себя любимого. И, естественно, все эти настройки он также берёт в файлике startup config, лежащем в NVRAM. Давайте разберём каждый из этих элементов,

что здесь нам нужно будет знать для того, чтобы управлять процессом загрузки устройства. Первое, с чем мы сталкиваемся, это Configuration Register. Некоторое двухбайтовое поле, которое хранится в специальном отдельном месте, он не хранится в конфиге, он не хранится на флешке, оно хранится отдельно. И вы можете в этот самый Configuration Register вбросить определённые значения. По сути своей, это отдельные 16 бит, которые управляют процессом загрузки устройства. Некоторые из этих битиков будут самостоятельными, это такие флажки «да», «нет». Некоторые из этих битиков будут собираться в какие-то осмысленные последовательности. Сейчас разберём. Запоминать не нужно, какие биты за что будут отвечать, но примерно представлять, что Configuration Register может сделать, а чего он не может, вы должны. Самые младшие 4 бита из этого самого Configuration Register будут отвечать за то,

где брать образ для загрузки. Если вы в младшие 4 бита вкладываете 4-битовое число 0, 0, 0, 0, это будет означать, что вообще управление IOS передавать не нужно. Если вы указываете единичку, то система должна будет найти на флешке образ для загрузки и передать ему управление, она не должна будет делать никаких специальных действий. Ищем на флешке, передаём управление, и всё. Если вы указываете любое другое значение, то есть это будет 2, 3, 4, 5, 6 и так далее, вплоть до F, то есть 14 возможных вариантов, вы тем самым указываете, что ваша циска должна при попытке передать управление IOS сначала поорать на всю сеть: ребята, а никто не хочет мне случайно дать специальный файл для загрузки IOS, сам образ IOS. И если ей кто-то ответит, она загрузит этот самый файл по TFTP. Она будет кричать,

какой именно параметр вы настроили, как раз у нас получается, что в 4 бита можно вписать 16 разных значений, два из них, нолик и единичка — это значит остаться в ROMMON и не грузить IOS вообще, либо загрузить IOS с флешки, а все остальные, 2, 3, 4, 5, 6 и так далее, это возможные варианты, чтобы вы на всю сеть орали: дайте мне какой-то специфический образ IOS. И вы эти самые гипотетические IOS можете пронумеровать, и вы можете сказать: давайте скажем, что наша циска при загрузке должна пытаться по TFTP загрузить образ номер 7. И тогда вы там семёрку вписываете, к примеру, и у вас циска может запросить внутри сети, чтобы ей кто-нибудь дал образ для загрузки. Понятное дело, что в реальности никто эту фичу не использует, однако по умолчанию работает именно эта штука. По умолчанию в младшие 4 бита вкладывается число двойка, 0, 0, 1, 0. Это означает, что ваша циска пытается по умолчанию загрузить IOS из сети.

И она бродкастом на всю сеть орёт: дайте кто-нибудь мне IOS. Бродкастом орёт по TFTP. Если вдруг какой-нибудь сервер услышит, что такая циска орёт на всю сеть: дайте мне файл для загрузки номер 2, он ей вполне может сказать: на тебе файлик, дорогая циска, загружай мой IOS, который я тебе дам. Что в этом IOS будет храниться, одному богу известно, но благо циска будет проверять цифровую подпись. Если это будет не похоже на IOS, она просто откажется его грузить. В лучшем случае вы получите отказ в обслуживании. Дальше. Если вы хотите, вы можете сказать, что некоторые битики вы выставляете в значения, которые будут указывать на то, как вы хотите, чтобы работала система. Например, вы можете указывать скорость работы консольного порта. За это будут отвечать битики 5, 11 и 12. Если вы вписываете туда специфические значения,

то вы можете тем самым регулировать, на какой скорости у вас будет работать порт RS-232. Этот самый порт может работать на скорости 9600 бит в секунду, 19200, 38400, 57600, 115200. Этими тремя битиками можно регулировать скорость работы COM-порта. Понятное дело, что вы там либо хотите держать значение по умолчанию 9600, потому что, если вы подключаетесь к совершенно незнакомой железке, вы очень не хотите перебирать все возможные скорости. Вы хотите просто подключиться, а для всех практически serial-клиентов, COM-клиентов, которые есть на рынке, стандартной скоростью является именно 9600 бит в секунду. Но в некоторых случаях, например, если вы вынуждены по COM-порту заливать на Cisco по X-модему файл с EOS, который может быть довольно большой, в этом смысле остро возникает потребность переключить порт в какой-то более

быстрый режим. И вот это можно будет сделать, как раз указав configuration register. Так, далее. Тринадцатый флажок указывает на то, что если у вас Cisco попыталась поорать на всю сетку «Дайте мне образ для загрузки», и ей никто ничего не дал, она пытается загрузить, соответственно, данные с флешки. То есть, смотрите, вот первые четыре битика, вот эти вот, они указывают, что делаем сначала. Значение по умолчанию в configuration register 2102, то есть в младшие четыре битиков вложено число двойка. Это вот как раз вот этот вот случай, когда мы пытаемся орать на всю сеть, «Дайте мне образ номер два». Но, естественно, что в большинстве случаев в Cisco никто не отвечает. Таймаут там порядка трех секунд, поэтому она орет на всю сеть, «Дайте мне образ». Через три секунды понимает, что образ ей не дали. И вот флажок по умолчанию, тринадцатый, указывает на то, что надо будет грузить дефолтный образ с флешки,

если сетевая загрузка не получается. Это то, как работает любая циска по умолчанию, если вы config-регистер ей не меняете. Можно будет здесь всякие разные другие штуки сделать. Например, флажок 6 будет указывать на то, стоит ли читать startup config. То есть, если вы хотите выставить вот этот флажок в единичку, то вы тем самым заставляете железку игнорировать содержимое Envaram, игнорировать файлик Envaram startup config. Очень интересный эффект проявляется, и мы посмотрим дальше на то, как это применяется в реальном мире. Можно будет сделать еще какие-нибудь разные вещи. Например, можно будет сказать, что вы хотите выставить там четырнадцатый флажок флажок и заставить вашу железку в качестве браткаста использовать не самый последний адрес сети, а самый первый. То есть, у нас, например, есть там сеть 192.168.1.0 по 24 маске. Вот мы назначили

адрес себе 1.1 slash 24. На этом основании железка автоматически вычислила адрес сети и автоматически вычислила 255-й браткаст. И вот она говорит, пакеты, приходящие на 1.1, они адресованы персонально мне, и пакеты, адресованные на 1.255, они адресованы всем в сети, в том числе мне. Но если вы хотите, вы можете выставить вот этот флажок 14-й, тогда у вас адрес сети будет являться браткастом. Пакеты, которые приходят на 192.168.1.0, они будут принадлежать, ну, то есть, они будут восприниматься вами как ваши собственные. А браткаст в этом случае вы при этом будете игнорировать настоящие 1.255. Это очень-очень древняя штука, то есть, старые-старые-старые версии стандарта IP, практически экспериментальные, они вот как раз в качестве браткаста использовали адрес самой сети, а потом разделили адрес сети и адрес браткаста. Можно будет, соответственно, много чего здесь выставлять,

но фактически те битики, которые здесь вот выставлены, двоечка указывает на режиме сетевой загрузки, вот эта двоечка указывает на то, что если сетевая загрузка не получилась, загружаемся с флешки, и вот этот вот нолик, этот нолик указывает на то, что у нас не игнорируется NVRAM и не скрывается вся диагностика, которая на железке может быть. Мы можем заставить железку игнорировать NVRAM, и в этом случае конфиг-регистр мы должны будем выставить значение 21, например, 42. То есть мы говорим вот здесь вот шестой битик, да, он будет влиять как раз на процесс сетевой загрузки. Задается конфигуришн-регистр с помощью указания именно 16-ти ричного числа, 16-ти битного, 16-ти ричного числа, и есть два способа задать этот самый конфигуришн-регистр. Можно будет либо попытаться записать этот самый конфиг-регистр в файлик startup.config,

командой конфиг-регистр, чего-то там. То есть мы должны будем сделать странное действие. Сначала зайти в configuration терминал, в конфигурируй терминал, потом указать команду конфиг-регистр чего-то там, но конфиг-регистр чего-то там занесет текстовую строчку в running.config, она не изменит конфиг-регистр по-настоящему. А затем мы делаем сохранение файлика startup.config. В тот момент, когда файлик startup.config сохраняется, по факту строчка со startup.config не попадет в файл. Вместо того, чтобы попасть в файл, она попадет в специальное отдельное поле, которое хранит конфиг-регистр. Если вы можете попасть в rommon, то тогда в rommon есть возможность отдельно конфиг-регистр назначить командой конфиг-регистр чего-то там. Как это можно будет соответственно с этим поиграть? Например, вы хотите сделать такое. Вы хотите заставить

вашу циску не пытаться загружать iOS по сети. В этом случае вы не хотите, чтобы у вас был конфиг-регистр 2102, потому что вот эта двойка означает сначала попытаться загрузиться по сети, а потом пытаться загрузиться в флешке. Поэтому мы говорим, вот эта двойка нам не нужна, а вместо нее нам нужен флажок 0. И вот эта двойка нам не нужна, потому что она указывает, что мы не хотим грузиться с флешки изначально, мы хотим, чтобы вот эта двойка сначала, мы хотим загрузить по сети второй образ. И только после того, как у нас это не удастся сделать, попытаемся с fallback сделать на флешку. Поэтому мы говорим, сразу пытайся загрузиться с флешки. У нас получается конфиг-регистр 0101. Это такой конфиг-регистр, который говорит, вместо того, чтобы играть, чтобы пытаться загрузить его с при сети, сразу грузи его с флешки. Вот можно будет это сделать командой конфиг-регистр 0101 в конфигуру терминал. Но еще раз говорю, что вот эта команда, она по факту ничего не делает.

Она же добавляет текстовую строчку в running-config. После чего мы сохраняем running-config startup-config, и вот здесь вот происходит магия. Магия происходит как раз за счет того, что отдельная строчка про конфиг-регистр, вместо того, чтобы быть записан в startup-config, записывается в шасси, в этот самый configuration-регистр. Так. Можно просто в write сделать. То есть эффект будет тот же самый. Если вы хотите, вы можете рядышком с конфиг-регистром записать еще и указание, откуда грузить и iOS. То есть указываете команду boot system, boot system, и дальше указываете в флешке, загружаем файлик с названием new image. Это укажет, что если у вас на флешке есть несколько разных образов информационной системы, то вот брать именно его. Фишка заключается в том, что если у вас там всего один образ, система будет грузить именно его. А вот если там несколько разных образов, то она может грузить просто который ей первый под руку попадется,

и он не обязательно будет самый свежий или тот, который вы хотите использовать. Поэтому если вы указываете конфиг-регистр, имеет смысл на флешку положить тот самый образ, который вам нужен и в явном виде указать, какой именно. Так. После того, как вы включили устройство, у вас начинает работать тот самый Bootstrap. Показывается вот систем Bootstrap, проверяет самотестирование железа, нашел там 512 мегабайт оперативной памяти, из них на борту 512, и в слоте дополнительном вообще ничего нету. Дальше говорит, что конкретно эта циска у нас 2901К8 или К9, неважно. У нее на борту 524288 килобайт оперативки, то есть это как раз 512 мегабайт. Далее показывается, что мы нашли где-то образ Cisco EOS. Вот, мы начинаем его тестировать, проверяем, что эта циска

действительно выпустила, проверяем цифровую подпись этого образа, находим, ну, после того, как мы его нашли, проверяем цифровую подпись, выясняем, что подпись хорошая, что EOS не поврежденный, начинаем распаковывать его в память, вот здесь вот начинает бежать прогресс бар из решеточек, и в конце концов он останавливается. На самом деле здесь сокращенный вывод, этот прогресс бар будет довольно большой, но тем не менее, рано или поздно он останавливается, система говорит окей, и дальше система передает управление самому EOS. После того, как EOS загрузился, мы можем посмотреть, что действительно загрузка прошла, show version нам покажет много разного интересного, покажет, во-первых, какая версия bootstrap у нас используется, откуда мы загрузились, вот с флешки, здесь вот и образ был взят вот в таком вот месте, как давно это произошло, ну, в общем, show version, она и есть show version. если мы захотим обновить EOS, то нам нужно будет сделать так, чтобы на нашей железке

оказалась новый EOS, и при этом желательно не потерять старый. В принципе, на современных роутерах чаще всего достаточно много места на флешке есть, и в принципе помещаются как старый, так и новый EOS одновременно. На старых роутерах это может быть не тот случай, может быть так, что у вас на флешку на роутере, а если он выпущен там лет 10 назад, помещается только один EOS. То есть вы не можете положить и новый, и старый, и одновременно, они просто туда не влезают. Поэтому вы должны будете старый EOS куда-то схоронить надежно. Это можно сделать прямо на лиду, то есть никто не запрещает вам загрузиться и потом сказать, а давайте мы скопируем старый EOS на какой-нибудь там, не знаю, FTP-сервер, а потом новый файлик с того же самого, например, сервера или с другого сервера скачать и расплаковать на флешку. Каким образом можно будет узнать, соответственно, сколько у вас есть места на флешке? Есть команда showfilesystems, она по каждой

файловой системе, которая у вас есть, по каждому устройству хранения покажет, сколько у вас места всего, сколько у вас места есть занятого. То есть вот, например, здесь нам показывается, что у нас есть там 2 гигабайта места на флешке. Вот здесь вот свободно, ну, тоже все свободно. Флешка целиком свободная. Вот. В принципе, есть команда showfilesystems, которая показывает вообще все файловые системы, все диски, которые у вас есть. Есть команда show, и дальше вы указываете просто вот конкретную файловую систему, например, showflash, двоеточие, и система показывает, что она, эта самая файловая система в себе несет. Можно посмотреть команды dir содержимое того, что находится в некоторой папке. То есть сказать dir, пробел, flash, двоеточие, там, папка 1. Можно посмотреть текстовые файлы. То есть, из команды more, она при указании имени файла показывает текстовое содержимое. в некоторых случаях

это может быть полезно. Но чаще всего, да, more вам не сильно понадобится. Решеткой показывается файловая система, откуда происходит загрузка, и звездочка — это то, что по умолчанию предполагается. То есть вот здесь показано, что звездочка по умолчанию у нас файловая система system. Если мы хотим обновить use, то, в принципе, есть несколько разных вариантов, как можно будет это сделать. На экзамене нужно будет знать вот тот, который здесь будет рассказан. То есть мы должны будем убедиться, что тот use, который у нас сейчас на железке работает, он нас не устраивает, что мы хотим провести процедуру обновления. Для поиска правильного use, который устраивает вас, можно воспользоваться сайтом, который называется Fitcher Navigator. www.cisco.com slash go slash fn Fitcher Navigator. Вот. Соответственно, там вы указываете платформу, который у вас есть, показываете, какой EOS вы хотите,

и он вам показывает, какие фичи в нем могут быть, или наоборот, указываете, какие фичи вам нужны, он покажет, какие EOS вам подойдут. Убедитесь, что вам хватит оперативки и места на флешке. Опять же, для старых роутеров это очень актуальная проблема была, потому что места на флешке там было реально мало, и оперативки тоже могло быть реально мало. На разных версиях одного и того же роутера вы могли встретиться с разным количеством и оперативки, и флешки. Иногда можно было доставить, то есть докупить эту самую оперативку и докупить флешку. Иногда это сделать было нельзя. Поэтому надо будет убедиться, что конкретно тот образ, который вы хотите использовать, он конкретно в ваш роутер просто тупо влезет. Сегодня, как правило, все влезает, то, что флеш-память и оперативная память стала настолько дешевая, что проще ее просто сделать с запасом. А раньше, когда и флешка, и оперативка была довольно дорогой, Cisco очень сильно на этом экономила и заставляла своих потребителей развлекаться с тем, чтобы пытались понять, они влезет,

не влезет, влезет, но не совсем. Дальше. Скопируйте куда-нибудь старый EOS и старый файлик StartupConfig. На самом деле, и то, и другое надо будет скопировать. Дело в том, что если вдруг что-то пойдет не по плану, вы вполне возможно захотите откатиться обратно. Например, если вы обновляетесь с 12 EOS на 15, то некоторые концепции в 15 EOS, в частности, модель лицензирования, они могут потребовать от вас, чтобы вы доплатили денег за то, что вы в 12 EOS использовали сравнительно бесплатно. Может быть такое, что у вас есть железка с 12 EOS, вы хотите обновить ее на 15, накатываете 15 EOS, выясняется, что без денег некоторые фичи не работают. Ну, в этом случае вы говорите, окей, ладно, откатываемся назад. Проблема будет в том, что если у вас есть файлик startup.config, он может испортиться, он может стать неактуальным для работы со старым EOS снова. То есть, если у вас, там, вы поставили 15 EOS, испортили файлик startup.config,

и потом накатываете старый EOS обратно, ну, вот, может быть такое, что старый startup.config уже не применится. Поэтому надо будет его сохранить на всякий пожарный случай. Перед началом процедуры миграции сохраняем EOS, сохраняем startup.config на случай, чтобы можно было вернуться все назад. Дальше копируем новый EOS на флешку, прописываем его в команде bot.system, и, если нужно будет, прописываем то, что необходимо в startup.config для того, чтобы новые фичи, которые в новой версии EOS, может быть, есть, чтобы они корректно работали. При этом нужно будет помнить следующие моменты. Если мы будем работать с конфигами, то конфиг, который у нас есть в системе, вот эта текущая конфигурация, running config, это не файлик. Мы при этом можем в него добавлять некоторые команды. Самый очевидный способ, как это можно сделать, конфигуру терминал. Просто заходим и говорим, добавь новую, там, строчку, там, не знаю, shutdown, или no shutdown в настройке интерфейса. Но, в принципе, вы можете взять и в текущую конфигурацию,

в running config, вбросить, например, содержимое текстового файла. И вы можете сказать, копия running config, копия, простите, там, какой-то файлик running config. И тогда этот текстовый файлик проанализируется, разобьется на отдельные текстовые строчки, вот как будто администратор одну текстовую строчку за другой вбивает в конфигуру терминала, эти строчки применятся к running config. Вот. Например, у нас есть running config. Вот такой вот show running config показывает, что у нас есть интерфейс, на нем нет IP-адреса, на нем есть IPv6-адрес, и интерфейс выключен. Кроме того, есть маршрут, да, маршрут по умолчанию 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0. Вот, если мы возьмем и добавим в этот текст, в эту конфигурацию, в этот running config текстовый файлик, одна за одной текстовые строчки из этого текстового файлика применятся, дополняя текущую конфигурацию. Если мы, например, возьмем файлик startup config, дальше мы изменим

текущую конфигурацию running config, и потом сделаем команду copy nvram startup config running config, то есть из startup config вбросим содержимое в running config. это не будет работать как замена файла. Для текстовых файлов мы привыкли, что когда мы берем один файлик и записываем его на место другого, старый файлик стирается, новый файлик заменяется. Вот running config это не файл. И поэтому если мы возьмем в такой ситуации файлик startup config и попытаемся вбросить его в running config, он дополнит текущую конфигурацию. Вот, например, в startup config у нас был 10.0.1.1 айпишник на интерфейсе гигабит 0.0 и вот такой вот маршрут 0.0.0.0.0.0.0.0.0.0.0.0.2. Если мы возьмем вот это вот содержимое и вбросим в running config, у нас объединится конфигурация вот эта вот с вот этой вот. И у нас получится кашемаляши. То есть вот на гигабит интерфейсе 0.0.0.0.0.0.0.0.0.0.1.0.0.0.0.0.0.1. у нас получится

конфигурация которая есть в вот в этом вот файлике и, соотовестно, эта конфигурация будет указывать, что у нас есть айпишник 10.0.1.1. Вот он добавился 10.0.1.1. Старые команды про айпи-адрес она, естественно, затерлась потому что в айпи» в 4 мы для того, чтобы дознать несколько айпи-адресов на интерфейсе должны будем использовать команду secondary. Но при этом, если бы у нас, например, IPv6 адреса были, ни капельки не сомневаюсь, они бы добавились оба. То есть у нас IPv6 адрес здесь бы был один какой-то, здесь бы IPv6 адрес был какой-то другой, вот они бы у нас оба здесь вот появились в настройке итоговой интерфейса. Потому что добавление нового IPv6 адреса старый IPv6 адреса не удаляет. То, что в настройке интерфейса прямо сейчас у нас есть, например, IPv6 какой-то адрес, вот он есть, а в стартап-конфиге IPv6 адреса нет. Ничего страшного, мы просто как бы оставляем

этот самый IPv6 адрес. Обратите внимание, стартап-конфиг в нем IPv6 нет. Ну, соответственно, после того, как мы сделали копию стартап-конфиг ранен-конфиг, у нас IPv6 адрес остался. Он не ушел из этого интерфейса, не убрался, несмотря на то, что в том файлике, который копия стартап-конфиг, ранен-конфиг, этого ничего нет. Он остался там, и он никаким образом не противоречит тому, что мы пытаемся вбросить вот здесь. Равным образом команда shutdown, она тоже была в настройке интерфейса, она никуда не делась. То есть конфигурация дополнилась тем, что было в стартап-конфиге, но в стартап-конфиге никто не сказал нам, что надо разблокировать интерфейс. И вот здесь показывается, что у нас здесь IP-road 0.0.0.0.1, здесь IP-road 0.0.0.0.0.1. Вот они в итоге в конфигурации будут оба присутствовать. Никоим образом никто не сказал, что надо старый маршрут удалить. Они будут присутствовать оба, как будто администратор вбил два маршрута, и трафик по ним будет балансироваться. Поэтому очень и очень осторожно

используйте процедуру копирования чего-нибудь в ранен-конфиг. Это не работает как замена файла, это работает как процедура текстового дополнения текущей конфигурации тем, что хранится в файлике. В какой ситуации мы можем копировать в ранен-конфиг чего-нибудь? Если, например, нам нужно выполнить какую-то операцию, когда мы, например, по интернету подключаемся к удаленному устройству, и мы должны это удаленное устройство проадменить. Например, там интерфейс переключить в, не знаю, к примеру, да, там, не знаю, IP-шники поменять на интерфейсе и поменять маршрут по умолчанию. Одновременно. Два действия мы сделать не сможем. Если мы на интерфейсе поменяем IP-шник, но не поменяем маршрут по умолчанию, у нас отвалится связь. Если мы поменяем маршрут по умолчанию, но не поменяем IP-шник, у нас опять же отвалится связь. Поэтому, если мы говорим просто «через конфигуру терминал мы должны будем это сделать», у нас ничего не выйдет. Мы не можем выполнить одновременно две команды через конфигуру терминал. Но мы можем записать две команды по смене IP-шника

и по смене маршрута по умолчанию или три или четыре, сколько надо, в текстовый файлик. И дальше скопировать содержимое этого текстового файлика в runningconfig команды копия чего-то там runningconfig. И тогда у нас одна команда, которую мы выполняем, заставляет железку выполнить несколько действий одновременно. Она может этими несколькими действиями и IP-шники поменять, и маршрут поменять, и все на свете. И тогда получится, что вы управление удаленным устройством своим не потеряете. Вот в такой ситуации копировать чего-то в runningconfig можно и вообще имеет смысл. Если вы хотите откатиться назад, допустим, классическая ошибка, это как раз попытаться выполнить замену runningconfig startupconfig, потому что пользователи пытаются вернуть конфигурацию в состояние, как было после перезагрузки. Они думают, что если скопировать startupconfig runningconfig, то получится примерно это. Нет, оно не получится. Если очень сильно хочется вернуть конфигурацию к тому состоянию,

которое описано в файлике, то для этого используется команда configure replace. Она заменяет текущую конфигурацию содержимым текстового файла. Старается сделать это без перезагрузки. То есть, ну, понятно, что со startupconfig все просто. Мы берем и перезагружаем железку без сохранения конфигурации. Она у нас загрузится со startupconfig. Но иногда перезагрузка железки — это абсолютно не вариант. И хочется сделать это быстро. И вот у нас есть текущая конфигурация, которая плохая, и мы хотим откатиться на конфигурацию из startupconfig, которая хорошая. Вот, например, у нас есть хороший роутер. Мы говорим, мы сохраняем конфигурацию. Она сохранена. И дальше мы начинаем эту конфигурацию портить. Допустим, переименовываем наш роутер, делаем хостнейм router.batconf. Текущая конфигурация у нас плохая. Нам она не нравится. Мы хотим вернуться на содержимое, которое есть в startupconfig. Указываем configure replace. Вместо configure terminal – configure replace. И указываем название файля, из которого мы хотим получить конфигурацию. Например, startupconfig.

Система предупреждает, что не всегда эта штука хорошо работает. То есть там иногда бывает нужно несколько проходов, иногда это даже за несколько проходов не получается сделать, потому что некоторые элементы в конфиге, они зависят друг от друга. Если, например, вы quality of service настраивали, или там BGP, некоторые элементы требуют взаимосвязи между элементами. Сначала надо создать один элемент, потом второй, потом третий. И удалять их тоже надо в правильном порядке. Ну вот система не всегда может это сделать. Ну, предупреждает, что вы как администратор сами несете ответственность за то, что у вас что-то получится или не получится. Вы должны будете сказать, что да, вы согласны с тем, что система должна попытаться сделать все, что в ее силах. И она пытается построить, если хотите, дельту между тем, как система работала бы, если бы она загрузилась из этого файлика, и как система работает сейчас. И она пытается построить противоположную конфигурацию, то есть она строит дельту и говорит, как нам из этой дельты вернуться обратно к состоянию,

описанному файлу. И вот она говорит, что у нас дельта построена. Дельта заключается в том, что в конфиге появилась строчка hostname.bat.conf. Для того, чтобы вернуться обратно, откатиться обратно, нужно выполнить команду hostname.roater.glute.conf. Это то, что отсутствует в текущей конфигурации, но присутствует в оригинальном файлике. И вот система строит список тех команд, которые приведут систему к желаемому результату и пытается их выполнить. В нашем случае за один проход ей удалось это сделать, и система предупреждает rollback, удался. То есть нам удалось откатить систему в конфиге немножко назад. Вот очень удобная штука. Если вы чего-то там работаете с циской, но накосячили с конфигом, вместо того, чтобы перезагружаться, можно будет воспользоваться как раз конфигурой replace. Удобно. Дальше. Если у нас есть роутер, этот роутер работает, работает вроде бы неплохо, и нам хочется его проадменить.

Но выясняется беда. Никто не помнит на него пароля. Типичная задача — сбросить пароль на циску. Если есть доступ к консоли, то можно воспользоваться тем фактом, что на консоли роутер беззащитный и позволяет с собой делать всё, что угодно, как правило. Для того, чтобы сбросить пароль на цисках, мы будем использовать следующее действие. Первое. Перезагружаем железку так, чтобы она начала проводить самотестирование железа. В процессе самотестирования железа мы нажимаем Control+Break. В PuTTY — Control+Break. В принципе, эта штука называется Break Signal. Мы отправляем системе указание «Погоди-ка грузиться». Дальше. Система перестаёт грузиться. Она проводит самотестирование железа, но не переходит дальше в поиск IOS. Она остаётся в ROM-моне. И вот это приглашение ROM-mon 1, здесь ROM-mon 2 будет и так далее, это будет указывать,

что вы находитесь в режиме ROM-mon. Это не IOS, это именно та самая маленькая операционная система, которая нужна для аварийного восстановления. И вы указываете, что в этом ROM-моне вы можете повлиять на Configuration Register. Это не в конфиге, это отдельное двубайтовое число, состоящее из 16 битиков. Если мы шестой битик выставляем в единичку, мы тем самым говорим: система при загрузке IOS не должна ориентироваться на файлик Startup Config. Затем мы перезагружаем железку, команда Reset из ROM-mon, система снова начинает проводить самотестирование железа, снова пытается найти IOS, но когда IOS начинает грузиться, IOS уже не смотрит на Startup Config. И он загружается в обычную решётку. В обычное приглашение к вводу, говорит: меня зовут просто роутер, у меня пустой конфиг, хочешь — администрируй меня, пожалуйста. Обратите внимание, файлик Startup Config никуда не делся. Там прописан пароль на Enable, там прописан пароль на Console,

там прописан пароль на VTY. Мы этих паролей не знаем. Мы просто за счёт того, что мы получили доступ к Configuration Register, сказали: не надо читать Startup Config при загрузке. Загрузись, как будто у тебя дефолтная конфигурация или вообще этой конфигурации нет. И поэтому система загрузилась с настройками по умолчанию. Никто не спрашивает пароль на консоль, никто не спрашивает пароль на Enable. Мы можем сказать Enable и без пароля пройти в решётку. Мы можем сказать Configure Terminal, Configure Replace или что угодно, и мы останемся при этом в решётке. Мы уже получили доступ к максимальным привилегиям. Указываем Configure Replace, а именно Startup Config. Система начинает работать, как будто бы она просто нормально загрузилась, но при этом мы с консоли зашли уже в решётку. И мы из решётки можем сказать Configure Terminal и поправить все пароли. Например, говорим Enable Secret Cisco. И у нас тот старый секрет, который был, он сбрасывается, вместо него записывается новый.

Можем зайти в Line VTY 0 4, в Line Console 0 и сказать, там пароли тоже какие-то есть, все их тоже сбрасываем. И после этого сохраняемся. Не помешает ещё, на самом деле, здесь вернуть Configuration Register в состояние, как было. Config Register Config Register 0x2102. Вы сохраняетесь, и железка со следующего раза начинает грузиться как ни в чём не бывало. Но уже пароль будет изменён. Если забыть эту штуку вернуть на место, то она у вас каждый раз будет загружаться с игнорированием Startup Config. Это, наверное, не то, что вы хотите получить. Ещё раз подчеркну, мы сохранили текущую конфигурацию. Единственное, что мы смогли с помощью такого механизма сделать — это зайти в решётку без предъявления пароля. А после того, как мы зашли в решётку, мы смогли поменять пароли на Enable, смогли поменять пароли на Console,

смогли сделать всё, что захотим. Потому что мы уже в решётке, в которую нас пустили без запроса этих самых паролей. На коммутаторах процедура сброса пароля будет немножко другой. Там нету ROM-мона как такового. Там есть Bootstrap, загрузчик, но он отличается от роутерного. И там команду Break не нужно посылать. Вы просто зажимаете кнопочку, которая есть на морде у младших свитчей. У них там кнопочка, которая переключает режимы светодиодиков. Вы просто зажимаете, подаёте питание, и система с зажатой кнопкой попадает в командную строчку загрузчика. Типа ROM-mon. Там можно сказать в этом загрузчике, что вы хотите переименовать файлик, который называется config.text. Это такой файлик, в котором лежит эмулируемый NVRAM Startup Config. Если вы его переименовываете в config.old и дальше говорите «загрузись», boot, то железка у вас

загружается без Startup Config, потому что Startup Config лежит в этом файлике, а он переименован. Здесь, конечно же, эта штука должна называться Switch, она же грузится без имени. И так же, как и в случае с предыдущим сценарием, сначала нас пускают в решёточку без пароля, потом мы можем на уровне файлов просто сказать — переименовываем файлик обратно, Configure Terminal, опять же, входим в редактирование файлика Startup Config и сбрасываем новый пароль на Enable, новый пароль на консоль или что угодно. На младших коммутаторах немножко процедура, как вы видите, отличается. Если вы опасаетесь, что кто попало у вас будет подключаться к коммутаторам, зажимать кнопки питания и сбрасывать пароли, вы можете заставить ваш Switch включить механизм, который называется No Service Password Recovery.

Этот механизм будет делать следующее. Если кто-то пытается загрузиться на железке, подключившись по консоли и зажав клавишу Mode, то в этом случае система не даст возможности работать с файликом config.text. Она предупреждает, что включён механизм No Service Password Recovery, поэтому если вы хотите, вы можете сбросить целиком конфигурацию, целиком сбросить безвозвратно. И если у вас злоумышленник решит продолжить загружаться, он скажет yes, то при этом коммутатор удалит файлик Startup Config. На самом деле — config.text. Также при этом удалится файлик flash:vlan.dat. Если у вас есть опасение, что злоумышленник может попасть в консольку Switch, то этот механизм имеет смысл включить. No Service Password Recovery включается в обычном IOS, в Configure Terminal.

Так, это всё, что касается настройки роутеров, настройки свитчей в части управления их процессом загрузки и управления процедурой восстановления пароля. Я думаю, что это было вам интересно. И в реальности иногда с этим приходится иметь дело. Но тем не менее, естественно, что если вы работаете со своими собственными железками, то у вас все пароли должны быть хорошо известны и так.

Network Education

Бесплатная онлайн-академия сетевых технологий. Видеоуроки, транскрипции и структурированные треки обучения — от основ до продвинутого уровня.

ТрекиКаталогО проекте
© 2026 Network Education