Write memory cisco ошибка

Contents

Introduction

This document describes the steps required in order to troubleshoot this error message if it is seen when you attempt to save the configuration on an Adaptive Security Appliance (ASA):

ASA# write memory
Building configuration...
[ERROR] write mem
Building configuration...
Cryptochecksum: fd8b217c 9c16140e e59864cd 7f5a0e45

%Error reading system:/running-config
(Configuration line too long)
Error executing command
[FAILED]
ASA#

Prerequisites

Requirements

There are no specific requirements for this document.

Components Used

This document is not restricted to specific software and hardware versions.

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Troubleshoot

When you enter the write memory command on the ASA or click Save in the Adaptive Security Device Manager, the firewall attempts to write the configuration from memory into permanent storage (compact flash or otherwise). If this process fails to complete, an error message might display. In this example, the error seen is:

[ERROR] write memory
Building configuration...
Cryptochecksum: fd8b217c 9c16140e e59864cd 7f5a0e45
%Error reading system:/running-config (Configuration line too long)
Error executing command
[FAILED]

In order to troubleshoot this error, enable these debugs and try to save the configuration on the firewall again:

  • debug disk file
  • debug disk filesystem
  • debug disk file-verbose

Look through the debugs that are displayed for any indicators of a specific problem. For example, the error «Configuration line too long» in the previous example was due to a login banner configuration. The debugs displayed this message:

ch_running_config: Write failed, following config line exceeds 512 characters:
ASA# banner value groupPolicy_VPN attributes

The reduction of the banner size eliminated the error and allowed the configuration to be saved successfully.

Если случилась ситуация, когда в Cisco 3550(или любой другой коммутатор Cisco) закончилась память и команда write memory не срабатывает:

#wr mem
startup-config file open failed (Not enough space)

Случится это может при поднятом на устройстве L3 и большом колличестве маршрутов. В этом случае может помочь:

#copy ru flash:config.text
Destination filename [config.text]?
%Warning:There is a file already existing with this name
Do you want to over write? [confirm]

18848 bytes copied in 1.836 secs (10266 bytes/sec)

Теперь можно проверить:

#show clock
10:10:38.690 UTC Tue Jan 11 2011

#sh flash: | in config.text
9 -rwx 1934 Oct 4 2010 12:49:10 +03:00 private-config.text
13 -rwx 18848 Jan 11 2011 10:10:26 +02:00 config.text

Материал из Xgu.ru

Перейти к: навигация, поиск

stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

На этой странице описываются различные настройки маршрутизаторов Cisco.

Содержание

  • 1 Базовые настройки маршрутизатора
  • 2 Полезные команды
    • 2.1 Buffer Tuning
  • 3 Доступ к маршрутизатору
    • 3.1 Telnet
      • 3.1.1 ACL
      • 3.1.2 Дополнительные параметры при подключении telnet
      • 3.1.3 Разрыв соединения
      • 3.1.4 Предотвращение залипания соединений
      • 3.1.5 Настройка нестандартных портов для telnet и привязка к конкретной vty
    • 3.2 SSH
      • 3.2.1 Настройка нестандартных портов для SSH и привязка к конкретной vty
    • 3.3 Работа с сессиями
      • 3.3.1 Исходящие сессии Telnet и SSH
      • 3.3.2 Приостановка и мониторинг исходящих сессий
      • 3.3.3 Входящие сессии
    • 3.4 Автоматическое выполнение команды
    • 3.5 HTTP
      • 3.5.1 Ограничение количества соединений
      • 3.5.2 Изменение стандартного порта
      • 3.5.3 Время жизни соединения
      • 3.5.4 Ограничение доступа
      • 3.5.5 Аутентификация
    • 3.6 Локальная аутентификация (локальная база пользователей)
    • 3.7 Разграничение доступа пользователям
      • 3.7.1 Уровни привилегий по умолчанию
      • 3.7.2 Уровни привилегий
      • 3.7.3 CLI view
    • 3.8 Всякое
      • 3.8.1 Пароли
      • 3.8.2 Гарантия выполнения низкоприоритетных задач
      • 3.8.3 Приглашение командной строки
      • 3.8.4 Баннеры
      • 3.8.5 Создание меню
        • 3.8.5.1 Пример меню и соответствующая конфигурация
      • 3.8.6 Создание соответствий IP-адрес — имя хоста
      • 3.8.7 Сообщение о недоступности хоста
      • 3.8.8 Спрятать IP-адрес хоста к которому выполняется подключение
      • 3.8.9 Login enhancement
        • 3.8.9.1 Настройка блокировки
        • 3.8.9.2 Настройка исключений из правила блокировки
        • 3.8.9.3 Настройка логирования попыток подключения и задержки между подключениями
        • 3.8.9.4 Пример настройки
  • 4 Трансляция адресов (NAT)
  • 5 Настройка NTP
    • 5.1 Маршрутизатор в роли NTP-сервера
    • 5.2 Статический клиент
    • 5.3 Широковещательный клиент
    • 5.4 Symmetric active mode
    • 5.5 Аутентификация
    • 5.6 Задание часового пояса
    • 5.7 ACL для предотвращения получения информации об устройстве и IOS
    • 5.8 Запрет сервиса на определенном интерфейсе
    • 5.9 Просмотр настроек
  • 6 Frame Relay
  • 7 ARP encapsulations
  • 8 Управление конфигурацией маршрутизатора
    • 8.1 Базовые команды
      • 8.1.1 Просмотр текущей конфигурации
      • 8.1.2 Просмотр сохраненной конфигурации
      • 8.1.3 Сохранение текущей конфигурации
    • 8.2 Копирование конфигурации
      • 8.2.1 На FTP-сервер
    • 8.3 Команда archive
      • 8.3.1 Настройка логирования
    • 8.4 Сравнение конфигураций
      • 8.4.1 Сравнение текущей и стартовой конфигурации
      • 8.4.2 Просмотр доступных архивов
      • 8.4.3 Автоматический backup конфигурации
    • 8.5 Автоматическое сохранение конфигурации по расписанию
    • 8.6 Отправка копии crash файла
    • 8.7 Resilient configuration
  • 9 DNS-сервер
  • 10 Перезагрузка маршрутизатора
  • 11 Поиск неисправностей, logging
    • 11.1 Debug
    • 11.2 Logging
      • 11.2.1 Отправка сообщений во внутренний буфер
      • 11.2.2 Отправка сообщений на сервер
      • 11.2.3 Вывод сообщений на терминал
      • 11.2.4 Ограничение числа выводимых сообщений
      • 11.2.5 Нумерация выводимых сообщений
    • 11.3 Время системных сообщений
    • 11.4 Создание core dump
      • 11.4.1 Использование FTP для core dump
      • 11.4.2 Запрет прерывания во время ввода команд
    • 11.5 Packet Capture
  • 12 Настройка DRP
    • 12.1 Аутентификация
    • 12.2 Просмотр информации
  • 13 Настройка WCCP
  • 14 RMON
    • 14.1 Группы RMON
  • 15 Сертификаты
  • 16 Настройка PPTP на маршрутизаторе
    • 16.1 Настройка PPTP-клиента
      • 16.1.1 Пример конфигурации
      • 16.1.2 Отладка
  • 17 Разное
    • 17.1 Маршрутизатор как TFTP-сервер
    • 17.2 Backup interface
  • 18 Недокументированные команды Cisco
  • 19 Дополнительная информация

[править] Базовые настройки маршрутизатора

[править] Полезные команды

Сбросить настройки на интерфейсе fa 0/1:

R1(config)# default interface fa 0/1 
sh ip int des
traceroute 10.0.1.1

Прервать traceroute CTRL-SHIFT-6

auto secure ssh
show int description
ip local policy route-map <name-map>
show protocols

[править] Buffer Tuning

  • Buffer Tuning for all Cisco Routers
  • Buffer Tuning
  • Router Buffer Tuning

[править] Доступ к маршрутизатору

[править] Telnet

Настройка доступа telnet без пароля:

dyn1(config)# line vty 0 15
dyn1(config-line)# no login  

При подключении сразу попасть в привилегированный режим:

dyn1(config)# line vty 0 15
dyn1(config-line)# privilege level 15

[править] ACL

Для ограничения доступа к маршрутизатору по протоколу telnet можно использовать ACL и применить их к vty.

Например, настроен ACL, который разрешает подключаться к маршрутизатору по telnet только с адреса 4.4.4.4:

dyn5(config)# access-list 10 permit 4.4.4.4
dyn5(config)# line vty 0 4
dyn5(config-line)# access-class 10 in

Подключившись по telnet, например, с адреса 4.4.4.4 к маршрутизатору dyn5, можно затем из этой сессии инициировать telnet сессию к другому маршрутизатору. Для того чтобы контролировать куда можно подключаться изнутри сессии telnet необходимо настроить ACL в исходящем направлении.
Например, подключившись к маршрутизатору dyn5 по telnet, инициировать исходящую сессию telnet можно будет только на адрес 1.1.1.1:

dyn5(config)# access-list 11 permit 1.1.1.1
dyn5(config)# line vty 0 4
dyn5(config-line)# access-class 11 out

Если выполняется попытка подключиться к неразрешенному адресу, то появляется такое сообщение:

dyn5# telnet 192.168.1.1
Trying 192.168.1.1 ...
% Connections to that host not permitted from this terminal

[править] Дополнительные параметры при подключении telnet

Обычно при подключении telnet маршрутизатор в качестве адреса отправителя выбирает адрес интерфейса, который ближе всего к получателю. Однако это поведение можно изменить, как для конкретной сессии, так и в принципе для всех подключений telnet.

Указание интерфейса для текущей сессии telnet:

dyn1# telnet 192.168.2.5 /source-interface lo0

Указание интерфейса для всех сессий telnet:

dyn1(config)# ip telnet source-interface lo0 

[править] Разрыв соединения

Настройка таймаута после которого, независимо от активности, пользователь будет отключен (в минутах):

dyn1(config)# line vty 0 15
dyn1(config-line)# absolute-timeout 10

Отображение предупреждающего сообщения за 30 секунд до того как сессия будет разорвана из-за истечения интервала absolute-timeout:

dyn1(config)# line vty 0 15
dyn1(config-line)# logout-warning 30 

Пример сообщения:

dyn3# telnet 192.168.2.1
Trying 192.168.2.1 ... Open


User Access Verification

Username: user1
Password: 

dyn1#
*
*
* Line timeout expired
*
*
[Connection to 192.168.2.1 closed by foreign host]

[править] Предотвращение залипания соединений

Для очистки зависших Telnet сессий используется механизм TCP-keepalives
Зачем это нужно? Порой возникают залипшие соединения сессий telnet. И при последующих попытках соединений — оно не устанавливается, при этом выдается сообщение «Connection refused by remote host»
Для предотвращения данной ситуации в конфигурацию роутера необходимо внести изменения:

Router# conf t
Router(config)# service tcp-keepalives-in
Router(config)# service tcp-keepalives-out

[править] Настройка нестандартных портов для telnet и привязка к конкретной vty

Указание нестандартного порта для telnet:

router(config)# line vty 3
router(config-line)# rotary 3

После указания rotary 3 для того чтобы попасть по telnet на vty 3, надо заходить на порт 3000+3.

Пример конфигурации маршрутизатора:

hostname dyn5
!
username cisco password 0 cisco
!
interface FastEthernet0/0
 ip address 192.168.5.5 255.255.255.0
!
!
line vty 0 2
 login local
line vty 3
 login local
 rotary 3
!

Подключение с соседнего маршрутизатора (к порту 3000+rotary):

dyn3# telnet 192.168.5.5 3003
Trying 192.168.5.5, 3003 ... Open


User Access Verification

Username: cisco
Password:
dyn5>

Пользователь подключился к vty 3:

dyn5#sh users
    Line       User       Host(s)              Idle       Location
*  0 con 0                idle                 00:00:00
   5 vty 3     cisco      idle                 00:01:08 192.168.5.3

  Interface    User               Mode         Idle     Peer Address

[править] SSH

Имя домена (необходимо для генерации ключей):

ip domain-name xgu.ru

Создание пары ключей:

crypto key generate rsa modulus 1024

Включение SSH версии 2:

ip ssh version 2

Создание пользователя в локальной базе:

username admin secret cisco123

Настройка VTY:

line vty 0 4
login local
transport input ssh

[править] Настройка нестандартных портов для SSH и привязка к конкретной vty

Изменение порта SSH для определенной линии vty:

router(config)# ip ssh port 2009 rotary 9

Настройка соответствия vty и rotary:

router(config)# line vty 4
router(config-line)# rotary 9

Пример конфигурации маршрутизатора:

hostname dyn5
!
ip domain name unix.nt
ip ssh port 2009 rotary 9
ip ssh version 2
!
username cisco password 0 cisco
!
interface FastEthernet0/0
 ip address 192.168.5.5 255.255.255.0
!
!
line vty 0 3
 login local
line vty 4
 login local
 rotary 9
!

Подключение с соседнего маршрутизатора (к порту 2009):

dyn3# ssh -l cisco -p 2009 192.168.5.5

Password:

dyn5>

Пользователь подключился к vty 4:

dyn5#sh users
    Line       User       Host(s)              Idle       Location
*  0 con 0                idle                 00:00:00
   6 vty 4     cisco      idle                 00:00:01 192.168.5.3

  Interface    User               Mode         Idle     Peer Address

Ограничение числа сессий ssh ip ssh maxstartups {число}
Пример: ограничим 2 сессиями

Router(config)#ip ssh maxstartups 2

Ограничение времени timeoutá (по-умолчанию 300 секунд)ip ssh time-out {секнуд}
SSH сервер прерывает соединение, если не передаются никакие данные в течение этого времени ожидания.
Пример:

Router(config)#ip ssh time-out 60

Указание интерфейса для всех сессий ssh

Router(config)#ip ssh source-interface FastEthernet0/1

Включение журналирования событий SSH ip ssh logging events

Router(conifig)#ip ssh logging events

Указание версии использования протокола ip ssh version версия
Пример:

Router(config)#ip ssh version 2

Указание, какой ключ должен использоваться при соединении:

sm-c2821(config)#ip ssh rsa keypair-name xgu.ru

[1]
[2]

[править] Работа с сессиями

[править] Исходящие сессии Telnet и SSH

Инициировать сессию telnet:

router# telnet <IP-адрес>

или

router# <IP-адрес>

Пример:

router# telnet 192.168.1.1
router# 192.168.10.1

Исходящие сессии SSH:

router# ssh -l <user> <IP-адрес>

[править] Приостановка и мониторинг исходящих сессий

Приостановить сессию: Ctrl+Shift+6 и потом x.

Показать исходящие сессии:

router# show sessions 

или

router# where

Пример:

router# where
Conn Host                Address             Byte  Idle Conn Name
   1 192.168.1.1         192.168.1.1            0     0 192.168.1.1
*  2 192.168.10.1        192.168.10.1           0     0 192.168.10.1

router# show sessions
Conn Host                Address             Byte  Idle Conn Name
   1 192.168.1.1         192.168.1.1            0     0 192.168.1.1
*  2 192.168.10.1        192.168.10.1           0     0 192.168.10.1

Вернуться в приостановленную сессию:

router# resume <номер>

или

router#<номер> 

Пример:

router# resume 2
[Resuming connection 2 to 192.168.10.1 ... ]

router#1
[Resuming connection 1 to 192.168.1.1 ... ]

Завершить исходящую сессию:

router# disconnect <номер>

Если с маршрутизатора были открыты сессии, а затем приостановлены, то нажатие ‘Enter’ приводит к тому, что открывается последняя сессия.
Для того чтобы сделать перевод строки, без команды и без восстановления последней сессии, необходимо использовать комбинацию ctrl+l.

Или нажать номер несуществующей сессии. После этого ‘Enter’ отрабатывает как обычно:

router#5
% 5 is not an open connection
router#
router#

[править] Входящие сессии

Показать подключения к локальному маршрутизатору (консоль, telnet, ssh):

router# show users

или

router# who

Пример:

router# show users
    Line       User       Host(s)              Idle       Location
*  0 con 0                10.0.10.1            00:00:37
 514 vty 0                idle                 00:01:20 192.168.10.10

  Interface    User               Mode         Idle     Peer Address

router# who
    Line       User       Host(s)              Idle       Location
*  0 con 0                10.0.10.1            00:00:46
 514 vty 0                idle                 00:01:29 192.168.10.10

  Interface    User               Mode         Idle     Peer Address

Показать сессии ssh:

router# show ssh

[править] Автоматическое выполнение команды

Команда autocommand используется для автоматического выполнения определенной команды после того как пользователь подключился к определенной line:

line vty 6
login local
rotary 6
autocommand telnet 10.1.1.1 2009

[3]
[4]

[править] HTTP

Включение HTTP-сервера:

dyn1(config)# ip http server 

[править] Ограничение количества соединений

Настройка максимального количества соединений (по умолчанию 5, диапазон от 1 до 16):

dyn1(config)# ip http max-connections 2

[править] Изменение стандартного порта

Изменение стандартного порта HTTP:

dyn1(config)# ip http port 8800

[править] Время жизни соединения

Настройка таймеров:

dyn1(config)# ip http timeout-policy idle 180 life 300 requests 50 

[править] Ограничение доступа

С помощью ACL можно указать каким хостам разрешен доступ по HTTP на маршрутизатор:

dyn1(config)# access-list 3 permit 192.168.1.10
dyn1(config)# access-list 3 permit 192.168.2.10
dyn1(config)# ip http access-class 3 

[править] Аутентификация

Настройка аутентификации по локальной базе пользователей:

dyn1(config)# ip http authentication local 

Пример создания пользователей:

dyn1(config)# username user1 password pass
dyn1(config)# username user2 password pass

[править] Локальная аутентификация (локальная база пользователей)

Управление правами доступа на основании атрибутов, присвоенных отдельному пользователю.

Когда VPN-пользователи проходят аутентификацию на локальном сервере IOS, то может понадобиться запретить им доступ к CLI.

Настройка AAA (если настроен VPN, то тут могут быть дополнительные настройки):

aaa new-model 
aaa authentication login default local
aaa authorization exec default local 

Создание списка атрибутов для запрещения доступа к CLI:

aaa attribute list CLI 
attribute type service-type noopt service shell mandatory 

Назначение списка пользователю:

username xguru secret xguru
username xguru aaa attribute list CLI 

Если пользователь пытается зайти в CLI маршрутизатора, то выдается ошибка:

dyn2#ssh -l xguru 192.168.103.1

Password:
% Authorization failed.

[Connection to 192.168.103.1 closed by foreign host]
  • Attributes for local user database
  • Local AAA server 12.4t
  • Understanding IOS Local AAA
  • PPTP Cisco

[править] Разграничение доступа пользователям

[править] Уровни привилегий по умолчанию

Команды уровня 0:

dyn1>?
Exec commands:
  disable  Turn off privileged commands
  enable   Turn on privileged commands
  exit     Exit from the EXEC
  help     Description of the interactive help system
  logout   Exit from the EXEC

Некоторые команды уровня 1:

dyn1>?
Exec commands:
  clear            Reset functions
  disable          Turn off privileged commands
  disconnect       Disconnect an existing network connection
  enable           Turn on privileged commands
  exit             Exit from the EXEC
  login            Log in as a particular user
  ping             Send echo messages
  resume           Resume an active network connection
  show             Show running system information
  ssh              Open a secure shell client connection
  telnet           Open a telnet connection
  terminal         Set terminal line parameters
  traceroute       Trace route to destination
  where            List active connections

[править] Уровни привилегий

Создание пользователя и задание пароля:

dyn1(config)# username user2 password cisco2

Назначение пользователю уровня привилегий:

dyn1(config)# username user2 privilege 2 

Задание соответствия между командами и уровнем привилегий:

dyn1(config)#privilege exec level 2 configure
dyn1(config)#privilege exec level 2 configure t
dyn1(config)#privilege configure level 2 interface
dyn1(config)#privilege interface level 2 shutdown
dyn1(config)#privilege interface level 2 ip address

Для просмотра уровня своих привилегий используется команда show privilege

Пример:

c1750-sm3>show privilege
Current privilege level is 1
c1750-sm3>en
Password:
c1750-sm3#show privilege
Current privilege level is 15

[5]

[править] CLI view

Включить AAA:

router(config)# aaa new-model

Включить root view:

router# enable view

Создать view:

router(config)# parser view <view-name>

Настроить пароль для view:

router(config-view)# secret <password>

Добавить команды доступные в view:

router(config-view)# commands exec <include|include-exclusive|exclude> [all] [interface-id|command]

[править] Всякое

[править] Пароли

Задание минимальной длины пароля:

dyn1(config)# security passwords min-length 6

Хранение паролей в виде хеша:

dyn1(config)# service password-encryption 

Отключение функции восстановления пароля:

dyn1(config)# no service password-recovery

Если необходимо ввести пароль в котором есть знак ?, то перед знаком необходимо нажать Esc + Q (при подключении пароль надо вводить просто со знаком ?).
Например, пароль Cisco??pass надо вводить так: CiscoEsc + Q?Esc + Q?pass

Задание количества разрешенных неудачных попыток логина в минуту. При превышении будет сгенерировано лог-сообщение:

dyn1(config)#security authentication failure rate 3 log

Для задания пароля входа в privileg EXEC level (привилегированный режим) используется команда enable password|secret {пароль}

Пример:

Router(config)#enable password cisco_en

Следует заметить, что при использовании enable secret будет использоваться кодирования пароля с помощью алгоритма MD5, что повышает безопасность системы в целом

[править] Гарантия выполнения низкоприоритетных задач

При возникновении ситуации высокой загрузки процессора, низкоприоритетные задачи могут не дождаться своей очереди выполнения. По-умолчанию Cisco выделяет 5% процессорного времени для выполнения такого рода задач. Для изменения используется команда scheduler allocate .
Пример:

Router(config)# scheduler allocate 4000 200

Что бы маршрутизатор более живо реагировал на команды в консоли при большой нагрузке. 4000 микросекунд — это время переключения между процессами. 200 микросекунд, это максимальное время, которое выделяет маршрутизатор на выполнение низкоприоритетных задач

[править] Приглашение командной строки

Отключить приглашение командной строки в глобальном конфигурационном режиме:

dyn1(config)# no service prompt config 

После выполнения команды, приглашение dyn1(config)# не отображается. При возвращении в режим enable приглашение появляется.

Настройка приглашения режима enable:

dyn1(config)# prompt DYN1-enable-mode

[править] Баннеры

Баннер — это своеобразная вывеска, которая предназначена для сообщения определенной информации, любому, кто пытается получить доступ к маршрутизатору. За рубежом, обычно, сообщается информация о том, кому принадлежит данное коммуникационное оборудование и что может последовать, если в дальнейшем последует несанкционированный доступ либо попытка доступа. Может быть и любая другая информация. К примеру фирма Cisco на новых не сконфигурированных маршрутизаторах сообщает об этом факте. Существует 3 вида баннеров motd, exec, incoming

Создание баннера message-of-the-day (MOTD):

dyn1(config)# banner motd #Hello! I'm $(hostname). You are connected on line $(line) on domain $(domain)#
dyn3# telnet 192.168.1.1
Trying 192.168.1.1 ... Open
Hello! I'm dyn1. You are connected on line 2 on domain xgu.ru

Для создания баннера необходимо указать ключевое слово banner тип РазделительТекст баннера Разделитель. Разделитель НЕ может содержаться в тексте баннера

Существует возможность динамически добавлять в тело баннера имя хоста или домена, используя регулярные выражения $(hostname) и $(domain).
Пример:

Router#conf t
Router(config)#hostname Xgu.ru
Xgu.ru(config)#ip domain name xgu.ru
Xgu.ru(config)#banner motd C
Enter TEXT message.  End with the character 'C'.
Welcom to $(hostname)
contact me at admin@$(domain) for any issues
C
Xgu.ru(config)#





Press RETURN to get started.
Welcom to Xgu.ru
contact me at admin@$xgu.ru for any issues

Xgu.ru>

[править] Создание меню

Название меню:

dyn1(config)# menu user3 title # Menu for user3 #

Текст приглашения по выбору пункта меню:

dyn1(config)# menu user3 prompt #Choose an option and press ENTER: #

Настройка очистки экрана перед выводом меню:

dyn1(config)# menu user3 clear-screen

Ключами для выбора определенного пункта меню могут быть буквы, цифры или строки.
Если используются строки, то должен быть настроен режим line-mode:

dyn1(config)# menu user3 line-mode

Создание пунктов меню:

dyn1(config)# menu user3 text 1 Display the routing table
dyn1(config)# menu user3 text 2 Configuration of fa0/0
dyn1(config)# menu user3 text 3 Ping dyn3
dyn1(config)# menu user3 text 4 Menu exit

Настройка команд, которые будут выполняться при вызове пункта меню:

dyn1(config)# menu user3 command 1 sh ip route
dyn1(config)# menu user3 command 2 sh run int fa0/0
dyn1(config)# menu user3 command 3 ping 192.168.1.3

Для того чтобы пользователь мог выйти из меню, при создании меню необходимо настроить один пункт меню с командой menu-exit:

dyn1(config)# menu user3 command 4 menu-exit

Для пунктов меню, в которых предполагается вывод результата выполнения команды, необходимо задать параметр pause:

dyn1(config)# menu user3 options 1 pause
dyn1(config)# menu user3 options 2 pause
dyn1(config)# menu user3 options 3 pause

Можно указать какой пункт будет выполняться по умолчанию в случае, если пользователь не выбрал пункт меню и нажал Enter:

dyn1(config)# menu user3 default 4

Отображение строки с информацией о статусе подключения:

Server "dyn1"    Line 0    Terminal-type (unknown)
Menu for user3 

   1          Display the routing table

   2          Configuration of fa0/0

   3          Ping dyn3

   4          Menu exit

Choose an option and press ENTER: 

Настройка автоматического вызова меню при подключении пользователя:

dyn1(config)# username user3 autocommand menu user3
[править] Пример меню и соответствующая конфигурация
Menu for user3 

    1          Display the routing table

    2          Configuration of fa0/0

    3          Ping dyn3

    4          Menu exit

Choose an option and press ENTER: 

Соответствующая конфигурация:

menu user3 title ^C Menu for user3 ^C
menu user3 prompt ^C Choose an option and press ENTER: ^C
menu user3 text 1 Display the routing table
menu user3 command 1 sh ip route
menu user3 options 1 pause
menu user3 text 2 Configuration of fa0/0
menu user3 command 2 sh run int fa0/0
menu user3 options 2 pause
menu user3 text 3 Ping dyn3
menu user3 command 3 ping 192.168.1.3
menu user3 options 3 pause
menu user3 text 4 Menu exit
menu user3 command 4 menu-exit
menu user3 clear-screen
menu user3 status-line
menu user3 default 4
menu user3 line-mode

[править] Создание соответствий IP-адрес — имя хоста

Создание соответствия:

dyn1(config)# ip host Dyn4 192.168.1.100

Просмотреть список существующих соответствий:

dyn1# sh hosts 
Default domain is not set
Name/address lookup uses static mappings

Codes: UN - unknown, EX - expired, OK - OK, ?? - revalidate
       temp - temporary, perm - permanent
       NA - Not Applicable None - Not defined

Host                      Port  Flags      Age Type   Address(es)
Dyn4                      None  (perm, OK)  0   IP    192.168.1.100
dyn3                      None  (perm, OK)  0   IP    192.168.2.3

[править] Сообщение о недоступности хоста

Настройка сообщения о недоступности хоста при подключении к нему по Telnet:

dyn1(config)# ip host Dyn4 192.168.1.100
dyn1(config)# busy-message Dyn4 #Host is down, try again later#

[править] Спрятать IP-адрес хоста к которому выполняется подключение

Обычно, при подключении к хосту, который в момент подключения доступен, в консоли отображается IP-адрес хоста:

dyn1# telnet  dyn3
Trying dyn3 (192.168.2.3)... Open

Спрятать IP-адрес хоста к которому выполняется подключение:

dyn1(config)# service hide-telnet-addresses 

После этого, при выполнении подключения адрес не отображается:

dyn1# telnet  dyn3
Trying dyn3 address #1 ... Open

[править] Login enhancement

[править] Настройка блокировки

Настройка периода блокировки хоста, с указанием количества попыток подключения к маршрутизатору в течение указанного периода времени:

router(config)# login block-for <sec> attempts <attempts> within <sec>

Пример. Хост будет заблокирован на 60 секунд, если в течение 10 секунд будут 3 неудачные попытки логина:

router(config)# login block-for 60 attempts 3 within 10

Проверка настроек:

sh login
     A default login delay of 1 seconds is applied.
     No Quiet-Mode access list has been configured.

     Router enabled to watch for login Attacks.
     If more than 3 login failures occur in 10 seconds       
     or less, logins will be disabled for 60 seconds.

     Router presently in Normal-Mode.
     Current Watch Window
         Time remaining: 9 seconds.
         Login failures for current window: 0.
     Total login failures: 0.

После нескольких неудачных попыток подключения:

* %SEC_LOGIN-1-QUIET_MODE_ON: Still timeleft for watching failures is 5 secs, [user: admin]
[Source: 192.0.1.2] [localport: 22] [Reason: Login Authentication Failed] [ACL: sl_def_acl] 
at 13:43:18 UTC Sat May 7 2011   

* %SEC-6-IPACCESSLOGP: list sl_def_acl denied tcp 192.0.1.2(39151) -> 0.0.0.0(22), 1 packet


router# sh login
     A default login delay of 1 seconds is applied.
     No Quiet-Mode access list has been configured.

     Router enabled to watch for login Attacks.
     If more than 3 login failures occur in 10 seconds or less,
     logins will be disabled for 10 seconds.

     Router presently in Quiet-Mode.
     Will remain in Quiet-Mode for 40 seconds.
     Denying logins from all sources.


* %SEC_LOGIN-5-QUIET_MODE_OFF: Quiet Mode is OFF, because block period timed out at 13:44:18 UTC Sat May 7 2011
[править] Настройка исключений из правила блокировки

Правило исключения:

router(config)# login quiet-mode access-class <acl>

Пример. Исключение хоста 192.0.1.2:

router(config)# access-list 10 permit 192.0.1.2
router(config)# login quiet-mode access-class 10

Проверка настроек:

router# sh login
     A default login delay of 1 seconds is applied.
     Quiet-Mode access list 10 is applied.

     Router enabled to watch for login Attacks.
     If more than 3 login failures occur in 10 seconds
     or less, logins will be disabled for 60 seconds.

     Router presently in Normal-Mode.
     Current Watch Window
         Time remaining: 3 seconds.
         Login failures for current window: 0.
     Total login failures: 3.
[править] Настройка логирования попыток подключения и задержки между подключениями

Задержка между попытками подключения (по умолчанию 1 секунда):

router(config)# login delay <sec>

Пример. Настройка задержки 5 секунд:

router(config)# login delay 5

Проверка настроек:

router# sh login
     A login delay of 5 seconds is applied.
     Quiet-Mode access list 10 is applied.

     Router enabled to watch for login Attacks.
     If more than 3 login failures occur in 10 seconds  
     or less, logins will be disabled for 60 seconds.

     Router presently in Normal-Mode.
     Current Watch Window
         Time remaining: 4 seconds.
         Login failures for current window: 1.
     Total login failures: 13.

Логирование попыток подключения:

router(config)# login on-failure log [every <login-attempts>]
router(config)# login on-success log [every <login-attempts>]

Пример настройки:

router(config)# login on-failure log every 5
router(config)# login on-success log every 3
router# sh login
     A login delay of 5 seconds is applied.
     Quiet-Mode access list 10 is applied.
     Every 3 successful login is logged.
     Every 5 failed login is logged.

     Router enabled to watch for login Attacks.
     If more than 3 login failures occur in 10 seconds  
     or less, logins will be disabled for 60 seconds.

     Router presently in Normal-Mode.
     Current Watch Window
         Time remaining: 3 seconds.
         Login failures for current window: 0.
     Total login failures: 24.
[править] Пример настройки

Конфигурация:

login block-for 10 attempts 4 within 10
login delay 5
login quiet-mode access-class 100
login on-failure log
login on-success log
router# sh login
     A login delay of 5 seconds is applied.
     Quiet-Mode access list 100 is applied.
     All successful login is logged.
     All failed login is logged.

     Router enabled to watch for login Attacks.
     If more than 4 login failures occur in 10 seconds or less,
     logins will be disabled for 10 seconds.

     Router presently in Normal-Mode.
     Current Watch Window
         Time remaining: 4 seconds.
         Login failures for current window: 0.
     Total login failures: 0.

[править] Трансляция адресов (NAT)

Основная страница: Cisco NAT

[править] Настройка NTP

[править] Маршрутизатор в роли NTP-сервера

Настройка маршрутизатора в роли NTP-сервера:

dyn1(config)# int fa1/0
dyn1(config-if)# ntp broadcast
dyn1(config)# ntp master [stratum]

Обновление встроенных часов:

dyn1(config)# ntp update-calendar

Настройка интерфейса для отправки широковещательных пакетов NTP:

dyn1(config)# int fa1/0
dyn1(config-if)# ntp broadcast 

[править] Статический клиент

dyn3(config)# ntp server 192.168.2.1

[править] Широковещательный клиент

dyn3(config)# int fa1/0
dyn3(config-if)# ntp broadcast client 

[править] Symmetric active mode

dyn5(config)# ntp peer 192.168.2.1

[править] Аутентификация

dyn1(config)# ntp authenticate  #Включение
dyn1(config)# ntp authentication-key 1 md5 xguru #Задаем значение ключа
dyn1(config)# ntp trusted-key 1 #Тому, кто знает этот ключ, тот может нас синхронизировать

[править] Задание часового пояса

sm-c2821(config)#clock timezone EET 2 # в данном случае - +2 - Киев

Переход на летнее время задается так:

  • clock summer-time имя(MSD) recurring
  • first/last/номер-недели-начала
  • день-недели месяц hh:mm
  • first/last/номер-недели-окончания
  • день-недели месяц hh:mm
  • [смещение-в-минутах]

Пример

sm-c2821(config)#clock summer-time EET recurring last Sat Mar 3:00 last Sat Oct 3:00

[править] ACL для предотвращения получения информации об устройстве и IOS

!
sm-sht-c2811(config)#access-list 4 permit 10.84.144.0 0.0.0.255 # кому отдавать время 
sm-sht-c2811(config)#access-list 5 permit 10.44.0.1 # с кого брать время 
!
sm-sht-c2811(config)#ntp access-group peer 5 
sm-sht-c2811(config)#ntp access-group serve-only 4
sm-sht-c2811(config)#ntp server 10.44.0.1 prefer
!

[править] Запрет сервиса на определенном интерфейсе

sm-c2821(config-if)#ntp disable

[править] Просмотр настроек

Ассоциации NTP на маршрутизаторе в роли сервера:

sm-c2821#show ntp associations

      address         ref clock     st  when  poll reach  delay  offset    disp
*~10.44.0.1        194.44.50.1       3   315  1024  377     8.2   -0.09     4.7
 ~10.84.243.2      10.44.0.1         4   992  1024    0     1.6  2595.5  16000.
+~10.84.242.101    10.44.0.1         4   251  1024  377     0.7    2.41     0.2
 * master (synced), # master (unsynced), + selected, - candidate, ~ configured

Статус NTP на маршрутизаторе в роли сервера:

dyn1# show ntp status
Clock is synchronized, stratum 7, reference is 127.127.7.1
nominal freq is 250.0000 Hz, actual freq is 250.0000 Hz, precision is 2**18
reference time is CE27D5B6.4ED89C3B (10:45:10.307 UTC Sat Aug 8 2009)
clock offset is 0.0000 msec, root delay is 0.00 msec
root dispersion is 0.02 msec, peer dispersion is 0.02 msec

Ассоциации NTP на маршрутизаторе в роли клиента:

dyn3# sh ntp associations 

      address         ref clock     st  when  poll reach  delay  offset    disp
*~192.168.2.1      127.127.7.1       7    29    64  377    92.1  1335.5    33.3
 * master (synced), # master (unsynced), + selected, - candidate, ~ configured

Статус NTP на маршрутизаторе в роли клиента:

dyn3# sh ntp status       
Clock is synchronized, stratum 8, reference is 192.168.2.1
nominal freq is 250.0000 Hz, actual freq is 250.0000 Hz, precision is 2**18
reference time is CE2804A3.1C1FCDFB (14:05:23.109 UTC Sat Aug 8 2009)
clock offset is 1335.5106 msec, root delay is 92.09 msec
root dispersion is 1368.82 msec, peer dispersion is 33.28 msec

[править] Frame Relay

Основная страница: Frame Relay в Cisco

[править] ARP encapsulations

Настройка:

router(config-if)# arp <arpa | probe | snap>

[править] Управление конфигурацией маршрутизатора

[править] Базовые команды

[править] Просмотр текущей конфигурации

Router# show running-config

[править] Просмотр сохраненной конфигурации

Router# show configuration

[править] Сохранение текущей конфигурации

Router# write memory

Примечание. Эта команда считается устаревшей, но пока используется (коротко можно вызывать «wr mem» или даже просто «wr»). «Правильная» команда по документации Cisco — «копирование текущей конфигурации в стартовую»:

Router# copy running-config startup-config
или проще
Router# copy run start

[править] Копирование конфигурации

Если конфигурация копируется в стартовую, то выполняется полная замена файла.
Если конфигурация копируется в текущую, то выполняется слияние файлов.

Поэтому в текущую конфигурацию можно копировать, например, файл в котором содержится частичная конфигурация или какие-то определенные настройки (например, протокола динамической маршрутизации).

Ранее, для того чтобы обновить конфигурацию маршрутизатора, необходимо было скопировать новый конфигурационный файл в стартовую конфигурацию, а потом перезагрузить устройство.
В новых версиях IOS можно выполнять замену (а не слияние) текущей конфигурации.

Например, заменить текущую конфигурацию файлом с TFTP-сервера:

router# configure replace tftp://10.0.1.1/new-cfg

[6]

Icon-caution.gif

Команда configure replace не всегда корректно отрабатывает, особенно со сложными объектами, такими как route-map. Поэтому более надежный способ использовать копирование в cтартовую конфигурацию.

[править] На FTP-сервер

ip ftp username anonymous
ip ftp password email@host.net

Пример выполнения копирования:

dyn3#copy run ftp://192.168.3.101/incoming/dyn3
Address or name of remote host [192.168.3.101]?
Destination filename [incoming/dyn3]?
Writing incoming/dyn3 !
1432 bytes copied in 4.284 secs (334 bytes/sec)

[править] Команда archive

Зайти в режим настройки архивирования конфигурационных файлов:

dyn1(config)# archive 
dyn1(config-archive)#

Команды в режиме archive:

  • log — настройка логирования,
  • maximum — максимальное количество резервных копий конфигурации,
  • path — путь, который указывает где хранятся резервные копии,
  • time-period — период времени через который будет автоматически выполняться архивирование текущей конфигурации (в минутах),
  • write-memory — включает автоматическую генерацию резервной копии конфигурации, после выполнения сохранения конфигурации.

[править] Настройка логирования

Зайти в режим настройки логирования:

dyn1(config)# archive
dyn1(config-archive)# log config

Включить логирование:

dyn1(config-archive-log-cfg)#logging enable 

Настройка размера буфера (по умолчанию 100):

dyn1(config-archive-log-cfg)#logging size 150

Спрятать пароли:

dyn1(config-archive-log-cfg)#hidekeys 

Отправлять изменения на syslog-сервер:

dyn1(config-archive-log-cfg)#notify syslog

Просмотр информации о выполненных командах:

dyn1#sh archive log config all
 idx   sess           user@line      Logged command
    1     1        console@console  |  logging enable 
    2     1        console@console  |  logging size 150
    3     1        console@console  |  hidekeys 
    4     1        console@console  |  notify syslog 
    5     1        console@console  |  exit 
    6     1        console@console  |   exit 

[править] Сравнение конфигураций

[править] Сравнение текущей и стартовой конфигурации

Если на маршрутизаторе не настроено хранение конфигурации на внешнем источнике, то сравнение его конфигураций может выполняться двумя способами.

Сравнение стартовой с текущей:

dyn1# show archive config differences
Contextual Config Diffs:
+snmp-server community TEST-RW RW
+snmp-server host 192.168.2.1 version 2c cisco
-router ospf 1
 -log-adjacency-changes
 -network 192.168.1.0 0.0.0.255 area 0

Сравнение текущей со стартовой конфигурацией:

dyn1# show archive config differences nvram:startup-config system:running-config
Contextual Config Diffs:
+router ospf 1
 +log-adjacency-changes
 +network 192.168.1.0 0.0.0.255 area 0
-snmp-server community TEST-RW RW
-snmp-server host 192.168.2.1 version 2c cisco

Так как выполнение сравнения текущей конфигурации со стартовой может выполняться часто, а команда достаточно громоздкая, то лучше создать для неё alias:

dyn1(config)# alias exec change show archive config differences nvram:startup-config system:running-config

Теперь можно посмотреть это же сравнение по команде change:

dyn1# change
Contextual Config Diffs:
+router ospf 1
 +log-adjacency-changes
 +network 192.168.1.0 0.0.0.255 area 0
+alias exec change show archive config differences nvram:startup-config system:running-config
-snmp-server community TEST-RW RW
-snmp-server host 192.168.2.1 version 2c cisco

[править] Просмотр доступных архивов

Просмотр списка доступных архивов
show archive

router# sh archive
The next archive file will be named ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Sep-14-11:47:06-5
 Archive #  Name
   0
   1       ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Aug-14-11:53:29-1
   2       ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Aug-20-12:14:57-2
   3       ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Sep--7-18:05:27-3
   4       ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Sep--8-09:33:24-4 <- Most Recent
   5
   6
   7
   8
   9
   10
   11
   12
   13
   14

sh archive config differences
Если используется сохранение конфигурационных файлов на внешние хранилища, он сравнивает с ними, т.е не нужно указывать nvram и system.

Замена текущей конфигурации указанным файлом (происходит именно замена, а не совмещение файлов):

router# configure replace ftp://ftp.xgu.ru/rmn/sm-rmn-c2801-Sep--8-09:33:24-4
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]:

[править] Автоматический backup конфигурации

В режиме настройки архивирования конфигурационных файлов есть возможность сохранять текущую конфигурацию на удаленный сервер.
Поддерживаются протоколы ftp, http, https, scp, tftp, так же можно записывать конфигурационный файл на flash
Синтаксис:

  • archive — вход в режим конфигурации
  • path file-system-path — Задает путь сохранения архива файла конфигурации
  • write-memory — включает запись backupá при выполнении команд write memory или copy running-config startup-config

Пример:

sm-ecoch-c871(config)#archive
sm-ecoch-c871(config-archive)# path ftp://10.84.240.219/ecoch/sm-ecoch-c871
sm-ecoch-c871(config-archive)# write-memory
!
sm-ecoch-c871(config)# ip ftp username archtest
sm-ecoch-c871(config)# ip ftp password 7 060556724F41

В этом примере, при выполнении команд write memory или copy running-config startup-config, текущая конфигурация будет передаться на ftp, при этом будут использоваться имя и пароль, заданные в конструкции ip ftp
В конструкции path так же можно использовать параметр $H — имя хоста маршрутизатора и $T — текущее время
Пример:

sm-ndg-c2801(config)#archive
sm-ndg-c2801(config-archive)#ftp://xgu.ru/ndg/$h-$t
sm-ndg-c2801(config-archive)#write-memory

При этом имя файла конфигурации, сохраняемое на ftp будет иметь вид: sm-ndg-c2801-Sep—8-092742-2

[править] Автоматическое сохранение конфигурации по расписанию

  • Создание kron policy-list — т.е создаем задание, которое будет выполняться в назначенное время

Router(config)#kron policy-list SaveConfig

Пример:

sm-ppl-c2811(config)#kron policy-list backup
sm-ppl-c2811(config-kron-policy)#cli copy running-config ftp://ftp.xgu.ru
  • Создание kron occurrence— инструкции для роутера, когда необходимо выполнять задание
sm-ppl-c2811(config)#kron occurrence daily-backup at 10:22 recurring
sm-ppl-c2811(config-kron-occurrence)#policy-list backup
  • просмотр сконфигурированных заданий

sm-ppl-c2811# show kron schedule

[править] Отправка копии crash файла

Существует возможность конфигурирования модели поведения записи crash файла. Для этого используется команда exception

Пример:

c1750-sm3(config)#exception core-file CDUMP.txt -определяем имя файла
c1750-sm3(config)#exception protocol tftp -- определяем протокол, по которому будем отправлять файл
c1750-sm3(config)#exception dump 10.84.242.249 --адрес сервера

[править] Resilient configuration

secure boot-image
secure boot-config
show secure bootset

[править] DNS-сервер

Настройка DNS-сервера:

router(config)# ip name-server <server-address>

Отключение преобразования имен:

router(config)# no ip domain-lookup

[править] Перезагрузка маршрутизатора

После перезагрузки маршрутизатор будет использовать распакованный IOS в DRAM, а не сжатую версию IOS во flash:

router(config)# warm-reboot

[править] Поиск неисправностей, logging

[править] Debug

router# debug ip packet detail 100

[править] Logging

[править] Отправка сообщений во внутренний буфер

Настройка отправки сообщений во внутренний буфер (по умолчанию размер буфера 4096 байт) logging buffered размер в байтах:

router(config)# logging buffered 131072 #устанавливаем равным 128 kbt

Просмотреть содержимое буфера:

router# show logging

Очистить содержимое буфера:

router# clear logging

[править] Отправка сообщений на сервер

Настройка отправки сообщений на сервер:

router(config)# logging 192.168.1.1

Настройка facility (по умолчанию local7):

router(config)# logging facility local5

Настройка интерфейса с которого будут отправляться сообщения:

dyn1(config)# logging source-interface lo0

[править] Вывод сообщений на терминал

Включение

sm-c2821#terminal monitor

отключение

sm-c2821#terminal no monitor

[править] Ограничение числа выводимых сообщений

Может возникнуть ситуация, когда количество выводимых сообщений настолько большое, что прочитать их физически невозможно. Более того, данная ситуация вызывает перегрузку системы.
Существует возможность ограничить количество выдаваемых сообщений на терминал в секунду.

sm-sm3-c1751(config)#logging rate-limit 100 except warnings

в этом примере ограничиваются предупреждения (warnings)
или

sm-sm3-c1751(config)#logging rate-limit 100 all

в этом ограничиваются все сообщения
Существует возможность ограничить вывод сообщений на консоль, только критическими сообщениями

sm-sm3-c1751(config)#logging console critical

[править] Нумерация выводимых сообщений

Для включения вывода номера системного сообщения используется команда service sequence-numbers
Пример:

Router#config terminal
Router(config)#service sequence-numbers

284852: Sep 15 14:11:25: %SEC-6-IPACCESSLOGP: list acl-TbOut denied udp 10.86.153.3(1673) -> 10.84.158.254(161), 1 packet
284853: Sep 15 14:11:30: %SEC-6-IPACCESSLOGP: list acl-TbOut denied udp 10.86.153.3(1677) -> 10.84.158.254(161), 1 packet
284854: Sep 15 14:11:32: %VOIPAAA-5-VOIP_CALL_HISTORY: CallLegType 2, 
ConnectionId 4DE92403 A11F11DE B9570023 4537D40, SetupTime 14:11:17.140 EET Tue Sep 15 2009, 
PeerAddress 980675427572, PeerSubAddress , DisconnectCause 26  , DisconnectText network out of order (38), 
ConnectTime 14:11:32.140 EET Tue Sep 15 2009, DisconnectTime 14:11:32.140 EET Tue Sep 15 2009, 
CallOrigin 1, ChargedUnits 0, InfoType 2, TransmitPackets 0, TransmitBytes 0, ReceivePackets 0, ReceiveBytes 0

Данная возможность предназначена для возможного распознавания подделок злоумышленников log файла. Т.е он гарантирует целостность логов

[править] Время системных сообщений

Даем указание выводить локальное время:

Router(config)#service timestamps debug datetime localtime
Router(config)#service timestamps log datetime localtime

[править] Создание core dump

Creating Core Dumps

[править] Использование FTP для core dump

Создание пользователя и пароля для FTP соединений:

dyn1(config)# ip ftp username cisco 
dyn1(config)# ip ftp password cisco

Настройка использования пассивного режима FTP:

dyn1(config)# ip ftp passive 

IP-адрес интерфейса lo0 будет использоваться как адрес отправителя:

dyn1(config)# ip ftp source-interface lo0

Указание протокола, который будет использоваться для отправки core dump:

dyn1(config)# exception protocol ftp

Задание имени файла (и опционально сжатие файла):

dyn1(config)# exception core-file DYN1dump compress 

Адрес сервера на который будет отправляться core dump:

dyn1(config)# exception dump 10.1.1.1
dyn1(config)# exception region-size 20000

[править] Запрет прерывания во время ввода команд

Для того, что бы всплывающие сообщения не прерывали ввод команд в консольном режиме используется команда logging synchronous

Пример:

Router(config-line)#logging synchronous

[править] Packet Capture

Utilizing the New Packet Capture Feature

[править] Настройка DRP

dyn1(config)#ip drp server

[править] Аутентификация

dyn1(config)#access-list 1 permit 10.5.5.5
dyn1(config)#ip drp access-group 1
dyn1(config)#key chain DRP
dyn1(config-keychain)#key 1
dyn1(config-keychain-key)#key-string Cisco
dyn1(config)#ip drp authentication key-chain DRP

[править] Просмотр информации

dyn1# sh ip drp
Director Responder Protocol Agent is enabled
0 director requests:
0 successful route table lookups
0 successful measured lookups
0 no route in table
0 nortt
0 DRP packet failures returned
0 successful echos
0 Boomerang requests
0 Boomerang-raced DNS responses
Authentication is enabled, using "DRP" key-chain
Director requests filtered by access-list 1
rttprobe source port is     : 53
rttprobe destination port is: 53

[править] Настройка WCCP

WCCP-Web Cache Communication Protocol предназначен для перенаправления трафика в реальном времени. [7]

Ограничения (2 версии протокола):

  • WCCP работает только в сетях IPv4
  • Позволяет использовать до 32 роутеров (серверов WCCP).
  • Time To Live (TTL) должен быть 15 или меньше
  • Мультикаст должен быть в диапазоне 224.0.0.0 to 239.255.255.255

Определяем версию протокола

dyn1(config)#ip wccp version 2
dyn1(config)# ip wccp web-cache group-list 1           
dyn1(config)# int fa1/0
dyn1(config-if)# ip wccp web-cache redirect out 
dyn1(config)#access-list 1 permit 10.5.5.4

[8]

[править] RMON

[9]

[править] Группы RMON

  • ethernet statistics
  • history
  • alarm
  • host
  • hostTopN
  • matrix
  • filter
  • packet capture
  • event

[править] Сертификаты

Для просмотра существующего ключа RSA используется команда show crypto key mypubkey rsa

удаление всех существующих ключей RSA

sm-glh-c2811(config)#crypto key zeroize rsa
% All RSA keys will be removed.
% All router certs issued using these keys will also be removed.
Do you really want to remove these keys? [yes/no]:

Генерация нового RSA ключа crypto key generate rsa.
Внимание. Ключ может быть сгенерирован, только, если имя маршрутизатора задано и отличное от умолчания. Кроме того возможно необходимо задать имя домена
Размер ключа следует выбирать выше или равное 1024
Пример:

sm-trs-c2801(config)#crypto key generate rsa 
The name for the keys will be: sm-trs-c2801.sm.aval
Choose the size of the key modulus in the range of 360 to 2048 for your
  General Purpose Keys. Choosing a key modulus greater than 512 may take
  a few minutes.

How many bits in the modulus [512]: 2048
% Generating 2048 bit RSA keys ...[OK]

Для проверки ключа можно использовать команду show crypto mypubkey rsa

sm-trs-c2801#show crypto key mypubkey rsa 
% Key pair was generated at: 14:18:02 EET Apr 15 2008
Key name: sm-trs-c2801.sm.aval
 Usage: General Purpose Key
 Key is not exportable.
 Key Data:
  30820122 300D0609 2A864886 F70D0101 01050003 82010F00 3082010A 02820101 
  00B8D952 CA5E65B1 01FF2D80 BC9055F6 287FE6C9 AA68338A C67382C7 2D929050 
  E6722B21 9A937797 599DDDB2 AEE75244 E74BA784 BC7019F0 39619FA8 59CB95C6 
  863FEB4A 46082A07 A367629B 75F0AC74 2FE494A7 CB263D33 D35B69CB AB48465C 
  B167E4DD 0C8923BE A919CCBC EF947EFF A13FCB55 0DFFDDA8 86F69050 74D9C557 
  408B1467 4AEF6681 7F5CC34C F91A8A35 30545EB1 D5CFAF79 47D0DAC5 95B4E435 
  1F71F0B4 DC8EEC71 B9F9D714 4418F20F E6D78675 C788E04E BB5145D6 8B2CC247 
  34BD52CB 57371EA9 9F786219 59E5E881 05412673 F5481205 B1D31CE6 1DE71FE4 
  C470C81D B06BD068 21438062 70E03161 1885D07B 59FA8F25 41009D24 A102CD8D 
  17020301 0001

[править] Настройка PPTP на маршрутизаторе

[править] Настройка PPTP-клиента

Данная возможность является не документированной, однако она доступна для большинства маршрутизаторов с версией ios > 12.2

Для включения используется команда service internal

Пример:

cisco_home(config)#service internal

После включения, в vpdn будет доступен протокол PPTP:

cisco_home(config)#vpdn enable
cisco_home(config)#vpdn-group 1
cisco_home(config-vpdn)#request-dialin
cisco_home(config-vpdn-req-in)#protocol pptp
cisco_home(config-vpdn-req-in)#rotary-group 0
cisco_home(config-vpdn-req-in)#exit
cisco_home(config-vpdn)#initiate-to ip 10.0.0.23
cisco_home(config-vpdn)#

В этом примере:

  • vpdn enable — включение vpdn
  • vpdn-group 1 — описывается первая группа, в которой указывают, что будет использован протокол PPTP
  • rotary-group 0 — указывается номер dialera
  • initiate-to ip — указывается адрес сервера

После этого нужно описать интерфейс дозвона:

interface Dialer0
 mtu 1460
 ip address negotiated
 ip pim dense-mode
 ip nat outside
 encapsulation ppp
 dialer in-band
 dialer idle-timeout 0
 dialer string 123
 dialer vpdn
 dialer-group 1
 no cdp enable
 ppp pfc local request
 ppp pfc remote apply
 ppp chap hostname 0003730007
 ppp chap password 0 000000009
end
  • ip address negotiated — указываем, что IP-адрес использовать с физического интерфейса,
  • ip pim dense-mode — для автоустановки соединения, без использования дополнительных маршрутов
  • dialer string 123 — эта строка должна быть, но вместо 123 можно написать что-угодно, она просто инициализирует дозвон.

[править] Пример конфигурации

Для полноты покажу всю конфигурацию. На маршрутизаторе есть один физический интерфейс FastEthernet 0/0 и два под интерфейса, реализованных на нем.

service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
service internal
!
hostname cisco_home
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
no ip gratuitous-arps
ip cef
!
!
ip name-server 8.8.8.8
ip multicast-routing
vpdn enable
!
vpdn-group 1
 request-dialin
  protocol pptp
  rotary-group 0
 initiate-to ip 10.0.0.23
!
!
!
interface FastEthernet0/0
 mac-address 001f.16ad.bcb9
 no ip address
 speed auto
 full-duplex
!
interface FastEthernet0/0.1
 description ***LocalNetwork***
 encapsulation dot1Q 1 native
 ip address 192.168.2.253 255.255.255.0
 ip nat inside
!
interface FastEthernet0/0.2
 description ***InternetServiceProvider***
 encapsulation dot1Q 3
 ip address 10.22.78.27 255.255.254.0
 ip flow egress
!
interface Dialer0
 mtu 1460
 ip address negotiated
 ip pim dense-mode
 ip nat outside
 encapsulation ppp
 dialer in-band
 dialer idle-timeout 0
 dialer string 123
 dialer vpdn
 dialer-group 1
 no cdp enable
 ppp pfc local request
 ppp pfc remote apply
 ppp chap hostname 000000087
 ppp chap password 0 0910000009
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 Dialer0
ip route 10.0.0.23 255.255.255.255 10.22.78.1
ip route 192.168.2.0 255.255.255.0 FastEthernet0/0.1
!
no ip http server
no ip http secure-server
ip nat inside source list 24 interface Dialer0 overload
!
access-list 24 permit 192.168.2.0 0.0.0.255
dialer-list 1 protocol ip permit
!
control-plane

[править] Отладка

debug vpdn event

Пример:

cisco_home#debug vpdn event

Информация по теме:

  • [10]
  • [11]

[править] Разное

[править] Маршрутизатор как TFTP-сервер

Можно скопировать IOS с одного маршрутизатора на другой.

Например, если на R1 во flash есть образ, который надо скопировать на R2, то можно превратить R1 в TFTP-сервер.

Образ IOS во flash R1:

R1#sh flash 
1    104134844 Mar 18 2015 17:51:38 +02:00 c2900-universalk9-mz.SPA.154-3.M2.bin

Настройка TFTP-сервера на R1:

R1(config)# tftp-server flash:/c2900-universalk9-mz.SPA.154-3.M2.bin

После этого, с R2 можно копировать образ:

R2# copy tftp flash

[править] Backup interface

interface fa0/0
 backup interface fa0/1
 ip address 192.168.1.4 255.255.255.0

interface fa0/1
 ip address 192.168.45.4 255.255.255.0
R4# sh backup              
Primary Interface   Secondary Interface   Status
-----------------   -------------------   ------
FastEthernet0/0     FastEthernet0/1       normal operation
interface fa0/0
 backup delay 3 60
R4(config)# int fa0/0
R4(config-if)# shutdown

R4#sh backup
Primary Interface   Secondary Interface   Status
-----------------   -------------------   ------
FastEthernet0/0     FastEthernet0/1       waiting to backup (2 more seconds)

%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to down

R4# sh backup
Primary Interface   Secondary Interface   Status
-----------------   -------------------   ------
FastEthernet0/0     FastEthernet0/1       backup mode

%LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

R4(config-if)# int fa0/0    
R4(config-if)# no shutdown

%LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

R4# sh backup
Primary Interface   Secondary Interface   Status
-----------------   -------------------   ------
FastEthernet0/0     FastEthernet0/1       waiting to revert (57 more seconds)

%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to standby mode
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

R4# sh backup
Primary Interface   Secondary Interface   Status
-----------------   -------------------   ------
FastEthernet0/0     FastEthernet0/1       normal operation
debug backup

Ссылки на сайты:

  • http://www.hoggnet.com/Documents/undoccisco.htm (англ.)
  • http://www.elemental.net/~lf/undoc/ (англ.)
  • http://www.heinzulm.com/2hu03.php (англ.)
  • http://ciscotips.wordpress.com/2009/08/07/undocumented-ios-commands/ (англ.)

[править] Дополнительная информация

  • 10 things you can do with the Cisco IOS service command (англ.)
  • VLAN Routing and Bridging on a Router Using the IRB Feature (англ.)
  • Cisco IOS Scripting with Tcl (англ.)

NTP:

  • Настройка NTP
  • Secure Time Management

Управление конфигурацией маршрутизатора:

  • Router Configuration Management — статья, в которой описываются новые функции IOS Configuration Change Notification и Contextual Configuration Diff. Описаны основные возможности функций, примеры их использования, некоторые проблемы в работе функций (англ.).
  • Managing Configuration Files (англ.)

MTU:

  • Path MTU Discovery (англ.)
  • Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC (англ.)
  • The Never-Ending Story of IP Fragmentation by Ivan Pepelnjak (англ.)
  • The tale of the three MTUs (англ.)
  • mturoute: A utility that measures hop-by-hop path MTU (англ.)
 Просмотр этого шаблона Cisco Systems, Inc.
Устройства Cisco 871 • Cisco Router • Cisco Switch • Сisco Сatalyst  • Cisco IPS • Cisco ASA • PIX • Dynamips
Безопасность
(коммутаторы и
маршрутизаторы)
Cisco Security • Port security • DHCP snooping • Dynamic ARP Protection • IP Source Guard • Аутентификация при доступе к сети • 802.1X в Cisco • Zone-Based Policy Firewall • Cisco NAT • NAT в Cisco  • Cisco SSH
Cisco ASA Cisco ASA/NAT • Cisco ASA/Troubleshooting • Cisco ASA/IPS • Cisco ASA failover • Cisco ASA/Transparent firewall • Cisco ASA/Site-to-Site_VPN • Cisco ASA/Easy_VPN • Cisco ASA/WebVPN • Объединение OSPF-сетей туннелем между двумя системами ASA (без GRE) • Центр сертификатов на Cisco ASA
VPN IPsec в Cisco • Cisco IOS Site-to-Site VPN  • DMVPN  • Cisco Easy VPN • Cisco Web VPN • Cisco ipsec preshared
Канальный уровень CDP  • VLAN в Cisco  • ISL  • VTP  • STP в Cisco  • Cisco Express Forwarding  • Агрегирование каналов  • Зеркалирование трафика  • QinQ  • Frame Relay
Сетевой уровень Маршрутизация в Cisco  • RIP  • EIGRP  • IS-IS  • OSPF • BGP  • PIM  • Multicast  • GLBP  • VRRP  • HSRP  • DHCP  • IPv6  • IPv6 vs IPv4  • Резервирование Интернет-каналов без использования BGP • Использование BGP для резервирования Интернет-каналов
Разное Режим ROMMON в Cisco • Опция 82 DHCP • 802.1X и RADIUS • SNMP в Cisco • QoS в Cisco  • EEM  • Troubleshooting  • Автоматизация работы устройств Cisco  • Cisco NTP  • Cisco IP SLA  • Cisco Enhanced Object Tracking

Я не буду писать большое введение, лишь скажу что Archive — удобный инструмент, который был введен в IOS 12.3(4) и может служить для решения нескольких задач:

  1. Автоматическое сохранение конфигурации
  2. Логирование каждой введенной команды в режиме конфигурирования
  3. Сравнение и откат конфигураций

Автоматическое сохранение конфигурации

1. Путь хранения конфигурации. Ротация

Указать путь хранения архивных конфигураций можно следующим образом:

SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#archive
SW1(config-archive)#path tftp://10.0.5.1/
SW1(config-archive)#end
SW1#

Хранить можно, конечно, и на локальном сторадже (flash:, disk0:, sup-bootflash:, nvram:), но как тогда восстанавливать конфигурацию в случае смерти устройства?

Теперь попробуем создать архив вручную:

SW1#archive config
!
SW1#

ВНИМАНИЕ:

команда “archive config” архивирует именно текущую конфигурацию устройства (running-config), и не сохраняет running-config в startup-config.

Получился файл с таким именем:

Почему с таким? Потому что в качестве имени файла архива конфигурации по умолчанию используется “[string]-<timestamp>-№”:

SW1#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named tftp://10.0.5.1/-<timestamp>-1
 Archive #  Name
   1        tftp://10.0.5.1/-Jan-11-15-44-33.695-0 <- Most Recent
   2
  ......
   10

Если все-таки решено использовать локальное хранилище для архивации файлов конфигурации, то имеет смысл ограничивать количество файлов. Максимум можно указать 14. В моем примере я использую хранилище unix: из-за того, что использую IOU/IOL в UnetLAB:

SW1(config-archive)#path unix:
SW1(config-archive)#maximum 5

В данном случае после смены пути архивирования на локальный и установки лимита в 5 файлов, при попытке создания 6-го архива, наиболее старый файл архива будет удален.

А вот если бы я попробовал ограничить количество хранимых архивных конфигураций на удаленном TFTP-сервере:

SW1(config-archive)#maximum 3
Cannot set maximum when backing up to network path

Если путь архивирования сетевой, то ограничение поставить нельзя – ограничивать следует средствами того сервера, куда льются файлы.

2. Автоматическое архивирование. Kron

С путем все понятно, но нужно делать архивы автоматически. Команда “write-memory” в контексте “archive” включит автоматическое архивирование при сохранении running-config в startup-config:

SW1(config-archive)#write-memory
SW1(config-archive)#end
SW1#write mem
Building configuration...
Compressed configuration from 1177 bytes to 843 bytes[OK]!
SW1#copy running-config startup-config
Destination filename [startup-config]?
Building configuration...
Compressed configuration from 1177 bytes to 843 bytes[OK]!
SW1#

Не важно, что использовать: “wr mem” или “copy run start” – архив будет создан. В данном примере после использования команд было создано 2 файла.

Архивирование при копировании running-config в startup-config это хорошо, но если нам нужно регулярное копирование? Можно использовать команду “time period” с указанием интервала минут, через который будет производиться архивирование. Например, можно использовать значение 10080 для архивирования каждую неделю. Вот результат работы автоархивирования каждую минуту:

SW1(config)#archive
SW1(config-archive)#time-period 1
SW1(config-archive)#!
SW1(config-archive)#end
SW1#

Что если нужно архивировать не через определенный интервал времени, а в определенное время? Ответ – kron. Kron определяется политикой и шедулером. Синтаксис интуитивно понятен, поэтому проще показать на примере.

Зададим политику:

SW1(config)#kron policy-list CONFIG_BACKUP
SW1(config-kron-policy)#cli wr mem
SW1(config-kron-policy)#exit

^ это та команда, которая будет исполняться

Стоит учесть важный момент: kron не поддерживает в команде cli интерактивные команды, которые требуют некоторого диалога. Например, “copy run start” спросит имя файла для сохранения, поэтому не отработает в kron. Следовательно, нужно использовать “wr mem”.

Зададим шедулер:

SW1(config)#kron occurrence CONFIG_BACKUP_SCHED ?
  at  Date of kron occurrence eg. 14:30 Feb 13
  in  Delta time to kron occurrence

SW1(config)#kron occurrence CONFIG_BACKUP_SCHED at ?
  hh:mm  Time of day for occurrence (hh:min eg. 14:30)

SW1(config)#kron occurrence CONFIG_BACKUP_SCHED at 10:00 ?
  <1-31>     Day of month
  DAY        Day of Week eg mon, tue, etc
  MONTH      Month of year eg jan, feb, etc
  oneshot    Schedule kron occurrence exactly once
  recurring  Schedule kron occurrence repeatedly

SW1(config)#kron occurrence CONFIG_BACKUP_SCHED at 10:00 recurring
Clock currently not set it reads 16:25:44 UTC Wed Jan 11 2017
SW1(config-kron-occurrence)#policy-list CONFIG_BACKUP
SW1(config-kron-occurrence)#end
SW1#

Где:

CONFIG_BACKUP_SCHED – название шедулера;
at и in – очевидно, выполнение в определенное время или через определенный интервал соответственно. В случае at время указывается таким образом: {hh:mm [месяц] [день месяца] [день недели]}. В моем примере выполнение ежедневное;
oneshot, recurring – выполнять один раз или регулярно соответственно. В документации, кажется, видел, что в некоторых версиях IOS доступна также опция system-startup, т.е. выполнение при старте устройства;
policy-list CONFIG_BACKUP – указание политики, с которой нужно работать.

Таким образом в моем примере команда “wr mem” будет выполняться ежедневно в 10:00, а это повлечет за собой архивирование конфигурации (согласно настройке archive).

Примерно такой будет конфигурация kron:

SW1#show running-config | section kron
kron occurrence CONFIG_BACKUP_SCHED at 10:00 recurring
  policy-list CONFIG_BACKUP
kron policy-list CONFIG_BACKUP
  cli wr mem

3. Переменные в имени архива конфигурации. Timestamp

Название файла архива кажется не особо говорящим. Выше я упоминал, что имя файла формируется так: “-<timestamp>-№”. Если разобрать:

Не очень удобочитаемое имя, а миллисекунда так явно не нужна. Это является следствием:

SW1#show running-config | section timestamp
service timestamps debug datetime msec
service timestamps log datetime msec

Чтобы настроить удобочитаемое отображение файла, нужно исправить формат timestamp (укажем также часовой пояс):

SW1(config)#clock timezone Golf +7
SW1(config)#service timestamps log datetime year localtime show-timezone

Теперь файл выглядит так:

Т.е. “месяц-день-год-час-минута-секунда-часовой_пояс-номер_файла”.
Из формата команды “service timestamps” вполне понятно, как убрать, например год или часовой пояс.

Что с именем хоста? Можно для ясности использовать такую форму:

SW1(config)#archive
SW1(config-archive)#path tftp://10.0.5.1/SW1
SW1(config-archive)#end
SW1#show archive
The maximum archive configurations allowed is 10.
The next archive file will be named tftp://10.0.5.1/SW1-<timestamp>-0
.....

Тогда, как видно, имя файла будет состоять из текста “SW1” и временного штампа. Станет понятно, от какого устройства конфигурация. Но если имя хоста изменится, придется вручную менять эту настройку в archive. Можно использовать переменную $h, которая хранит имя хоста. Кстати, переменная $t хранит timestamp, но сейчас ее использовать смысла не имеет, в IOS 15 <timestamp> автоматически подставляется в имя файла. В IOS 12 пришлось бы использовать запись “path tftp://10.0.5.1/$h-$t”, теперь достаточно такой:

SW1(config)#archive
SW1(config-archive)#path tftp://10.0.5.1/$h
SW1(config-archive)#end
SW1#

И результат:

Логирование введенных команд

Функция “Archive” позволяет не только архивировать файлы конфигурации, но и архивировать введенные команды конфигурирования, т.е. те команды, которые изменили конфигурацию устройства и также команду “enable” (т.е. если кто-то перейдет в привилегированный режим, это тоже попадет в лог).

Отличие от “show history” очевидно (history листит только мои личные команды). Но лучше показать на примере:

SW1(config)#archive
SW1(config-archive)#log config
SW1(config-archive-log-cfg)#logging enable
SW1(config-archive-log-cfg)#logging size 200
SW1(config-archive-log-cfg)#hidekeys

logging enable – включает логирование конфигурационных команд;
logging size – максимальное количество хранимых команд;
hidekeys – скрывать пароли при просмотре логированных команд.

Как все это выглядит:

SW1#show archive log config all
 idx   sess           user@line      Logged command
    1     1           mark@console  |  logging enable
    2     1           mark@console  |  logging size 200
    3     1           mark@console  |  hidekeys
    4     2           mark@console  |username greg privilege 1 secret *****
    5     2           mark@console  |!config: USER TABLE MODIFIED
    6     0           greg@vty0     |!exec: enable

Т.е. мы видим имя пользователя (в моем случае mark и greg), линию, с которой совершены действия, видим даже команду “enable”, но НЕ видим пароль созданного greg`а (как и задумывалось).

SW1(config-archive-log-cfg)#notify syslog

Также будет уведомлять syslog-сервер (если он сконфигурирован, ну или будет сыпать в консоль и монитор) примерно такими сообщениями:

*Jan 12 2017 17:12:30 Golf: %PARSER-5-CFGLOG_LOGGEDCMD: User:mark  logged command:interface Ethernet0/3
*Jan 12 2017 17:12:32 Golf: %PARSER-5-CFGLOG_LOGGEDCMD: User:mark  logged command:no shutdown

Можно также просмотреть информацию по каждому пользователю по сессиям:

Но здесь стоит учитывать, что сессия в данном контексте – это сессия входа в configure terminal. Т.е. 3 сессии вовсе не значит, что mark разлогинивался, это означает лишь то, что он выходил из режима конфигурирования.

И еще пара примеров:

Сравнение конфигураций. Откат конфигурации

1. Сравнение конфигураций

Вместе с функцией Archive в IOS появилась полезная фича сравнения конфигураций. Например, сравним startup-config с конфигом на tftp-сервере:

SW1#$show archive config differences nvram:startup-config tftp://10.0.5.1/SW1-Jan-13-2017-10-00-00-Golf-3
Loading SW1-Jan-13-2017-10-00-00-Golf-3 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]
!Contextual Config Diffs:
+service timestamps log datetime localtime show-timezone year
+username greg secret 4 WGWXTgqyMqk91MhF3Gz5CQdMnLHU4clSthRczGfB2dY
+clock timezone Golf 7 0
+archive
  +log config
  +logging enable
  +logging size 200
  +hidekeys
  +path tftp://10.0.5.1/$h
  +write-memory
+kron occurrence CONFIG_BACKUP_SCHED at 10:00 recurring
  +policy-list CONFIG_BACKUP
+kron policy-list CONFIG_BACKUP
  +cli wr mem
-service timestamps log datetime msec

+ означает, что строка есть во втором указанном файле конфигурации (т.е. в SW1-Jan-13-2017-10-00-00-Golf-3), но ее нет в первом (т.е. в startup-config);

означает, что строка есть в первом файле конфигурации (в startup-config), но ее нет во втором (в SW1-Jan-13-2017-10-00-00-Golf-3).

Чтобы сравнить running-config с этим же файлом конфигурации на удаленном tftp-сервере, будет использоваться команда:

SW1#show archive config differences system:running-config tftp://10.0.5.1/SW1-Jan-13-2017-10-00-00-Golf-3

Чтобы сравнить running-config со startup-config, достаточно использовать короткую запись:

SW1#show archive config differences
!Contextual Config Diffs:
interface Ethernet0/3
 -shutdown

По факту это команда “show archive config differences system:running-config nvram:startup-config”.
Ну и в данном случае видно, что run отличается от start только тем, что интерфейс eth0/3 в текущей конфигурации административно отключен.

Команда “show archive config incremental-diffs” с указанием файла конфигурации покажет, какие строки будут добавлены в running-config при операции копирования из этого файла в run:

SW1#$ show archive config incremental-diffs tftp://10.0.5.1/SW1-Jan-13-2017-10-00-00-Golf-3
Loading SW1-Jan-13-2017-10-00-00-Golf-3 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]
!List of Commands:
service timestamps log datetime localtime show-timezone year
username greg secret 4 WGWXTgqyMqk91MhF3Gz5CQdMnLHU4clSthRczGfB2dY
clock timezone Golf 7 0
archive
 log config
  logging enable
  logging size 200
  hidekeys
 path tftp://10.0.5.1/$h
 write-memory
kron occurrence CONFIG_BACKUP_SCHED at 10:00 recurring
 policy-list CONFIG_BACKUP
kron policy-list CONFIG_BACKUP
 cli wr mem
end

Но стоит помнить, что copy для running-config это совсем не то же самое, что configure replace.

Если посмотреть, например startup-config:

SW1#show archive config differences
!Contextual Config Diffs:
interface Ethernet0/3
 -shutdown
SW1#show archive config incremental-diffs nvram:startup-config
!List of Commands:
end
!No changes were found

Т.е. “differences” показывает, что в run отключен eth0/3, но “incremental-diffs” говорит, что при копировании “copy start run” в текущую конфигурацию ничего не будет добавлено. Т.е. такой командой мы running-config к startup-config не откатим.

2. Откат конфигурации

При работе через vty некоторые используют “reload in [min]” команду для того, чтобы если в текущей конфигурации совершены ошибки, и доступ до устройства потерян, устройство автоматически перезагрузилось через определенный интервал времени и изменения откатились до startup-config.

Archive позволяет решать такие проблемы без перезагрузки устройства – отложенным откатом running-config.

ВНИМАНИЕ: для использования откатов должно быть настроено архивирование конфигурации. Например такое:

SW1#show running-config | section archive
archive
 log config
  logging enable
  logging size 200
  hidekeys
 path tftp://10.0.5.1/$h
 write-memory

a. Откат через определенный интервал времени

Приступаем к конфигурации оборудования. Предварительно задаем таймер отката командой “configure terminal revert timer ”:

SW1#configure terminal revert timer 20
!Rollback Confirmed Change: Backing up current running config to tftp://10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1

Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#
*Jan 13 2017 16:16:30 Golf: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_BACKUP: Backing up current running config to tftp://10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1
*Jan 13 2017 16:16:30 Golf: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_START_ABSTIMER: User: mark: Scheduled to rollback to config tftp://10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1 in 20 minutes

Как видно, running-config заархвивировался в 10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1 и откат к этому файлу отложен на 20 минут.

Теперь для примера внесем изменения (отключим eth0/3):

SW1(config)#interface ethernet 0/3
SW1(config-if)#shutdown
SW1(config-if)#end
SW1#show running-config | section interface
.....
interface Ethernet0/3
 shutdown
 duplex auto
.....

Проходит время, когда остается 1 минута до отката, IOS предупреждает меня:

SW1#Rollback Confirmed Change: Rollback will begin in one minute.
Enter "configure confirm" if you wish to keep what you've configured

*Jan 13 2017 16:26:38 Golf: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_WARNING_ABSTIMER: System will rollback to config tftp://10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1 in one minute. Enter "configure confirm" if you wish to keep what you've configured

Минута истекает и происходит откат (по факту «configure replace»):

Минута истекает и происходит откат (по факту configure replace):
SW1#Rollback Confirmed Change: rolling to:tftp://10.0.5.1/SW1-Jan-13-2017-16-16-30-Golf-1

Loading SW1-Jan-13-2017-16-16-30-Golf-1 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]

Loading SW1-Jan-13-2017-16-16-30-Golf-1 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]

!Pass 1
!List of Rollback Commands:
interface Ethernet0/3
 no shutdown
end


Total number of passes: 1
Rollback Done

Проверяем:

SW1#sh run | section interface
.....
interface Ethernet0/3
 duplex auto
.....

Eth0/3 не отключен, т.е. откат успешен.

b. Сколько осталось времени. Моментальный откат

Информацию о том, сколько осталось времени до отката можно узнать с помощью команды “show archive config rollback timer”:

SW1#configure terminal revert timer 10
!Rollback Confirmed Change: Backing up current running config to tftp://10.0.5.1/SW1-Jan-13-2017-16-40-36-Golf-2

Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#end
SW1#show archive config rollback timer
Time configured(or reconfigured): 16:40:36 Golf Fri Jan 13 2017
Timer type: absolute timer
Timer value: 10 min
User: mark

Сколько времени осталось не показано, но показано время, когда интервал был сконфигурирован и длину самого интервала, т.е. можно посчитать.

Как изменить интервал – уменьшить или увеличить? Командой “configure revert timer”:

SW1#configure revert timer 5
SW1#
*Jan 13 2017 16:43:50 Golf: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_RESET_ABSTIMER: User: mark: Reset Rollback Confirmed Change timer(absolute) to 5 minute
SW1#show archive config rollback timer
Time configured(or reconfigured): 16:43:50 Golf Fri Jan 13 2017
Timer type: absolute timer
Timer value: 5 min
User: mark

Фактически эта команда ничего не добавляет и не убавляет, а просто задает новый интервал от текущего момента.

Как совершить моментальный откат? Командой “configure revert now”:

SW1#configure revert now
Rollback Confirmed Change: rolling to:tftp://10.0.5.1/SW1-Jan-13-2017-16-40-36-Golf-2

Loading SW1-Jan-13-2017-16-40-36-Golf-2 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]

Loading SW1-Jan-13-2017-16-40-36-Golf-2 from 10.0.5.1 (via Vlan1): !
[OK - 1483 bytes]

Total number of passes: 0
Rollback Done

Ну, у меня в данном случае изменений не было. Это то же самое, что и “configure replace”, только конфиг, на который нужно откатываться, указать нельзя.

c. Как отменить откат

Предположим мы задали интервал отката, внесли изменения и нас устраивает текущая конфигурация. Как отменить откат running-config? Командой “configure confirm”:

SW1#configure confirm
SW1#
*Jan 13 2017 16:48:42 Golf: %ARCHIVE_DIFF-5-ROLLBK_CNFMD_CHG_CONFIRM: User: mark: Confirm the configuration change

Стоит четко понимать, что “configure confirm” это не сохранение run в start, это просто отмена отката.

ВНИМАНИЕ:

после подтверждения конфигурации, т.е. отмены отката ОБЯЗАТЕЛЬНО нужно проверить “show archive config rollback timer”. Ответ должен быть таким:

SW1#show archive config rollback timer
%No Rollback Confirmed Change pending

P.S. на протяжении статьи я не раз это упоминал, но на последок все же повторю: rollback, так же как и configure replace, это откат именно running-config и никакого другого файла.



  • Firewalls


  • Joe

frustratedToday while working on a config of a new ASA5510 I ran into a very strange error that I wanted to share with you.

I was configured the ASA as usual. When I was finished, I issued the standard “write mem” and saw the most bizarre error message…

asa# wr mem
Building configuration…
Cryptochecksum: 85ef8693 914a94f3 03a5bb9e 823bb285
%Error opening disk0:/.private/startup-config (Read-only file system) 
Error executing command [FAILED]

I was speachless. What the heck does that mean? I could see the startup-config file on the firewall. I could do a “sh run” and see my running config. But I could not copy my running config to startup.

I tried a reboot but that only wiped out my config completely. I had to start over from scratch.

The solution was actually very simple.

Cisco has a built in file check utility to fix problems just like this. Many folks who are familiar with unix systems also know the file system check or fsck utility.

To fix this problem, from the command prompt run fsck…

asa# fsck disk0:

This of course assume that disck0: is your flash.

If this is successful you should see the following output:
asa# fsck of disk0: complete

You should now be able to save your config

asa# wr mem

Building configuration…

Cryptochecksum: 85ef8693 914a94f3 03a5bb9e 823bb285

80911 bytes copied in 4.60 secs (20227 bytes/sec) [OK]

If this still fails you need to contact Cisco TAc and get a replacement flash card

Here is the complete transaction in its entirety:

asa#copy run start

Source filename [running-config]?
Cryptochecksum: e958a84f 73198ab5 585c5a9f 9d39e3a8

%Error opening disk0:/.private/startup-config (Read-only file system)

asa# fsck disk0:
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Reclaimed 7 unused clusters (28672 bytes) in 2 chains.
Performing changes.
/dev/hda1: 76 files, 14623/15368 clusters

fsck of disk0: complete
asa# wr mem
Building configuration...
Cryptochecksum: b558388d cddfa287 d63f9b9a 10041e77

11870 bytes copied in 3.360 secs (3956 bytes/sec)
[OK]
asa#

I hope this helps you out as much as it did for me. I was tearing my hair out trying to figure out what was going on.

Until next time

FREAK!

Joe

Joe

Senior Network Engineer, technology enthusiast, guitar and bass player. Joe Wilson is the creator of RouterFreak.com as well as other niche websites that can be found around on the Internets.

What do you think about this article?

18 comments

  1. yes, fsck disk0: works.
    There may be some error runiing fsck but the end result is you can saved.

    thanks for sharing.

  2. I think ASA exec fsck auto as a boot routine, in other words if fsck fails from CL, just try to reboot (this way you are sure partition is unmounted, fsck wont fail with resource busy error).

    …all Linux distros do fsck on / (root) partition. Or to force fsck on next reboot exec “shutdown -rF now”

  3. i m also having same problem, someone pls help me

    ciscoasa# fsck disk0:
    umount: Couldn’t umount /mnt/disk0: Invalid argument
    dosfsck 2.11, 12 Mar 2005, FAT32, LFN
    /dev/hda1: 8 files, 6224/65463 clusters
    mount: Mounting /dev/hda1 on /mnt/disk0 failed: Device or resource busy

    fsck of disk0: complete
    WARNING: Restoring security context mode failed.
    ciscoasa#

  4. I am having the same problem but with disk1: I have used the same external compact flash in another ASA but a newer IOS version 8.4 and it works fine. I have tried the same compact flash in a cisco 2851 and it works there as well. Could it be a bug in the Cisco IOS version 8.2 for ASA 5520? Or does anyone have a work around?

  5. Today while working on a config of a new CISCO catalyst 3750 x-series,I ran into a very strange error that I wanted to share with you.

    When I was finished, the error mess was

    SW#wr

    startup-config file open failed (Not enough space)

    please anybody help me…

    • Hi Dinesh,
      You may want to try to delete some files on your flash drive and reduce the logging buffer.

      In some circumstances you may want to keep multiple IOS images on the local flash drive of your router or switch. The problem with this is that you could easily run out of space on your flash drive..

      Check the flash drive by simple typing in:
      SW# dir flash:

      This will show you what files you have on your flash and what is taking up so much space.

      To remove an upwanted file, type:
      SW# delete <filename>

      I hope this helps!

      Joe

      • 0 bytes copied in 0.009 secs (0 bytes/sec)

        DR-WAN-SW#diu r

        Directory of flash:/

        2 -rwx 1048 Mar 4 1993 14:46:57 +00:00 multiple-fs

        3 drwx 1024 Mar 1 1993 00:02:28 +00:00 crashinfo_ext

        12 drwx 1024 Mar 1 1993 00:00:07 +00:00 crashinfo

        21 -rwx 1096 Mar 2 1993 17:57:37 +00:00 vlan.dat

        22 drwx 512 Mar 1 1993 00:17:16 +00:00 c3750e-universalk9-mz.122-55.SE3

        57671680 bytes total (20429824 bytes free)

        DR-WAN-SW#copy

        DR-WAN-SW#copy runn

        DR-WAN-SW#copy running-config flash:back

        DR-WAN-SW#copy running-config flash:backu

        DR-WAN-SW#copy running-config flash:backup

        Destination filename [backup]?

        4700 bytes copied in 5.814 secs (808 bytes/sec)

        DR-WAN-SW#dr ir

        Directory of flash:/

        2 -rwx 1048 Mar 4 1993 14:46:57 +00:00 multiple-fs

        3 drwx 1024 Mar 1 1993 00:02:28 +00:00 crashinfo_ext

        12 drwx 1024 Mar 1 1993 00:00:07 +00:00 crashinfo

        21 -rwx 1096 Mar 2 1993 17:57:37 +00:00 vlan.dat

        469 -rwx 4700 Mar 1 1993 00:51:31 +00:00 backup

        22 drwx 512 Mar 1 1993 00:17:16 +00:00 c3750e-universalk9-mz.122-55.SE3

        57671680 bytes total (20424192 bytes free)

        But memory space available in the switch and these and all basic switch configuration files na…these anything i want to delete…?

  6. I am trying to install new image to ASA in Romon I have erased the all data in disk0

    Why booting i am getting following error , looks like disk0 is not mounting

    rommon #13> tftp

    ROMMON Variable Settings:

    ADDRESS=192.168.1.10

    SERVER=192.168.1.1

    GATEWAY=192.168.1.1

    PORT=Management0/0

    VLAN=untagged

    IMAGE=asa823-k8.bin

    CONFIG=

    LINKTIMEOUT=20

    PKTTIMEOUT=4

    RETRY=20

    tftp asa823-k8.bin@192.168.1.1 via 192.168.1.1

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Received 15243264 bytes

    Launching TFTP Image…

    Cisco Security Appliance admin loader (3.0) #0: Fri Aug 6 07:52:16 MDT 2010

    Platform ASA5520

    Loading…

    dosfsck 2.11, 12 Mar 2005, FAT32, LFN

    open /dev/hda1:No such file or directory

    dosfsck(/dev/hda1) returned 1

    mount: mounting /dev/hda1 on /mnt/disk0 failed: No such file or directory

    mount: mounting /dev/hda1 on /mnt/disk0 failed: No such file or directory

    dosfsck 2.11, 12 Mar 2005, FAT32, LFN

    open /dev/hdb1:No such file or directory

    dosfsck(/dev/hdb1) returned 1

    mount: mounting /dev/hdb1 on /mnt/disk1 failed: No such file or directory

    mount: mounting /dev/hdb1 on /mnt/disk1 failed: No such file or directory

    Processor memory 341417984, Reserved memory: 62914560 (DSOs: 0 + kernel: 62914560)

    Total SSMs found: 0

    Total NICs found: 7

    mcwa i82557 Ethernet at irq 11 MAC: 001f.ca09.24b7

    mcwa i82557 Ethernet at irq 5 MAC: 0000.0001.0001

    i82547GI rev00 Gigabit Ethernet @ irq11 dev 1 in

  7. I have similar problem with FWSM.

    show disk:

    -#- –length– —–date/time—— path

    1 0 Jan 27 2008 22:55:22 .private

    2 0 Jan 27 2008 22:55:22 .private

    3 0 Jan 27 2008 22:55:22 .private

    4 0 Jan 27 2008 22:55:22 .private

    5 0 Jan 27 2008 22:55:22 .private

    6 0 Jan 27 2008 22:55:22 .private

    7 0 Jan 27 2008 22:55:22 .private

    8 0 Jan 27 2008 22:55:22 .private

    9 0 Jan 27 2008 22:55:22 .private

    10 0 Jan 27 2008 22:55:22 .private

    11 0 Jan 27 2008 22:55:22 .private

    12 0 Jan 27 2008 22:55:22 .private

    13 0 Jan 27 2008 22:55:22 .private

    14 0 Jan 27 2008 22:55:22 .private

    15 0 Jan 27 2008 22:55:22 .private

    16 1385 Mar 08 2008 07:55:50 old_running.cfg

    17 7350 Feb 22 2011 02:07:54 admin.cfg

    18 42691 Feb 25 2011 13:27:40 Serveri.cfg

    59658240 bytes available (90112 bytes used)

    File Allocation Table might be corrupted. Recommend running «fsck disk:»

    fsck disk:

    Checking the boot sector and partition table…

    Checking FAT, Files and Directories…

    Reclaiming unused space…

    Updating FAT…

    Destroying old disk cache…

    Initializing disk: cache, please wait…..Done.

    fsck of disk: complete

    WARNING: Restoring security context mode failed.

    Could be failed flash?

    • It could be… the only way to know for sure is to either replace the flash or open a TAC case and see what they say. I’d love to know how it turns out either way.
      thanks!

  8. I have the same error message concerning disk0: but it’s because the internal flash has died. The device is still running and I’ve managed to pop in an external flash card, format it as disk1, and upload the correct software to it. I have changed the boot system and asdm image with the following command:

    boot system disk1:/asa724-k8.bin

    asdm image disk0:/asdm-61551.bin

    I then ran:

    copy run disk1:/ (- which executed successfully)

    Now I can’t ‘wr mem’ to disk1. I still get the error mentioned about disk0 in your original post. Being that disk0 is destroyed, how can i make this thing default to disk1. I’m assuming that’s what needs to happen.

    Thanks!

    A

    But I need to be able to ‘wr mem’ to disk1. Is this possible?

  9. ciscoasa# fsck disk0:

    umount: Couldn’t umount /mnt/disk0: Invalid argument

    dosfsck 2.11, 12 Mar 2005, FAT32, LFN

    /dev/hda1: 32 files, 56/62334 clusters

    mount: Mounting /dev/hda1 on /mnt/disk0 failed: Device or resource busy

    fsck of disk0: complete

    WARNING: Restoring security context mode failed.

    the problem still exist Kindly help…!

    • I haven’t run into this problem before. Are you running multiple contexts? Is this in a stand along ASA or a FWSM? I’ve seen some issues with code versions that may give the warning message. Sorry that this is much more help.

    • ciscoasa# sh mem

      Free memory: 17657000 bytes (13%)

      Used memory: 116560728 bytes (87%)

      ————- —————-

      Total memory: 134217728 bytes (100%)

      ciscoasa# fsck disk0

      umount: Couldn’t umount /mnt/disk0: Invalid argument

      dosfsck 2.11, 12 Mar 2005, FAT32, LFN

      /dev/hda1: 11 files, 6228/62334 clusters

      mount: Mounting /dev/hda1 on /mnt/disk0 failed: Device or resource busy

      fsck of disk0: complete

      WARNING: Restoring security context mode failed.

      I have stopped nad restarted the Asa firewall but still it doesn’t free memory.

  10. We just had the same issue on our standby ASA 5520. The primary one was fine, but the failover standby ASA gave the exact message you saw. I actually first noticed there was a problem when trying to upgrade to the latest ASA and ASDM versions.

    Doing it via TFTP gave read-only errors, or no message at all but a failed copy, and doing it via ASDM just reported ‘error code 400’ which was fairly meaningless.

    Running that fsck has fixed it, so glad to have found this post, thanks.

    • Thanks Ben, Glad it helped! Take care

  11. Super..I was having this issue and ur write up nailed it..

    By any chance is there any expalnation of the issue and its soln??

    I was haivng this issue only wen both the FWs were in failover mode.

    If the standby went down, I could wr mem on pri..

    Now I am able to do wen both are up…

  12. It works perfectly! Thank you very much.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About us

RouterFreak is a blog dedicated to professional network engineers. We
focus on network fundamentals, product/service reviews, and career advancements.

Guest

Cisco archive config backup problems

Hi, I am trying to achieve that when I do a «wr» a backup config is copied to my TFTP server.My archive config looks like this: archive path tftp:172.23.106.30/$h write-memory When I do a «wr» I get this debug output: 3550_poe#wrBuilding configuration…[OK]3550_poe#Apr  5 14:06:33.899: backup_running_configApr  5 14:06:33.899: Current = 1Apr  5 14:06:33.899: Writing backup file tftp:172.23.106.30/3550_poe-1Apr  5 14:06:35.731:  backup failed 3550_poe#sh archiveThe next archive file will be named tftp:172.23.106.30/3550_poe-1 Archive #  Name   0           1       :Error — Bad file number    2           3         I don know why this is not working. I tried FTP too, without luck. The TFTP server is working, I tested it: 3550_poe#copy running-config tftp:Address or name of remote host []? 172.23.106.30            Destination filename [3550_poe-confg]? !!7196 bytes copied in 0.948 secs 7591 bytes/sec I tried this config too, with the root folder of the TFTP server and it is still not working: archive path tftp:172.23.106.30/TFTP-Root/$h write-memory Do you guys have an idea why this is not working? PS. I tried it on a 3550 SW, 2960 SW and 2811 Router and it is always the same error.

Guest

Re:Cisco archive config backup problems

Post

by Guest » Sat May 13, 2006 4:57 pm

Thank you very much. It was the //, I really did not thought about that. You typed h$ but it should be $h, it is probably a type-o. Thank you again.

Guest

Re:Cisco archive config backup problems

Post

by Guest » Sat May 13, 2006 6:15 pm

Glad it worked…yep..I typed it wrong sorry about that. Remember to rate posts that help and if it solved your problem note that as well. It will help other if they have the same issue.  Mike

Понравилась статья? Поделить с друзьями:
  • Wrc 9 fia world rally championship ошибка
  • Wpt15 2 коды ошибок
  • Wow ошибка lua как убрать
  • Wow ошибка divxdecoder dll
  • Wow ошибка cdn