Операционная система маршрутизаторов CISCO
Операционная система
маршрутизаторов CISCO
Ссылки:
словарь
терминов
словарь
терминов Cisco
матрица
версий
безопасность
локальная
документация на IOS 11.0 на CD-ROM
IOS 11.0
на CD-ROM на www.cisco.com
Release
Notes для
маршрутизатора
Release
Notes для сервера доступа
список
ошибок
загрузка
IOS 11.1
на CD-ROM на www.cisco.com
Release
Notes (здесь же список
основных ошибок - меня
интересует только 11.1(11) и более
поздние
список
ошибок
документация
вспомогательная
документация
загрузка
IOS 11.2
на CD-ROM на www.cisco.com
Release
Notes для основной ветки
анонс
версии
документация
конфигурирование
для ленивых
ошибки
загрузка
IOS
12.0 на CD-ROM на www.cisco.com
информация об IOS
на сервере Cisco
новости
о софте
общее
описание продуктa - отличия в наборах
возможностей и версиях
различие
в наборах
возможностей для различных моделей и
требования к ресурсам
(память/флэш) для версий 11.1 и 11.2
Bug Toolkit
Bug Navigator
II
информация
об IOS для знающих пароль
IOS 11.0
IOS 11.1
IOS 11.2
IOS 12.0
Особенности
различных версий (новые
возможности, ошибки, наборы
возможностей)
новые версии -
новые
возможности
версия 11.0
версия 11.1
версия 11.2
версия 11.3
версия 12.0
Покупка IOS
Заказывать надо продукт с номером,
заканчивающимся на знак
равенства.
IOS можно заказать в трех формах:
DOS дискетта (EPROM, Flash);
CD-ROM
загрузка с TFTP сервера (только для
устройств с
флэш-памятью).
Номер продукта
определяется так:
начинается на SF и НЕ
кончается на знак равенства -
первоначальная загрузка на фабрике
начинается на SF и
зканчивается на знак
равенства - upgrade для Cisco 1003, 1004, 1005 для
загрузки во Flash
начинается на CD и
заканчивается на знак
равенства - upgrade для
устройства, которое пока содержит пакет (feature set)
только IP;
начинается на SW и НЕ
заканчивается на знак
равенства - для загрузки в новую
систему;
начинается на SW и
заканчивается на знак
равенства - upgrade для системы,
поставленной ранее на ROM или
дискетте;
начинается на FR - лицензия на
использование;
начинается на SWR и
заканчвается на знак
равенства - запасной софт,
поставляемый на ROM для Cisco 7000.
Поставка
осуществляется в виде пакетов
возможностей (feature packs) - CD-ROM с одним или
несколькими образами IOS и
инсталляционной
программой для MS Windows 95,
инструкция по установке (в т.ч.
использование TFTP вместо
инсталляционной программы),
лицензия, CD-ROM с
документацией.
Текущее состояние
На наших
маршрутизаторах стоит IOS версии 12.0 (3) на
внутренних и 12.0(3) на внешней, хотя уже
выпущены 12.0(5) 30-sep-99.
приступаем к
работе
Вынимаем железку,
подключаем терминал (или PC с TELEMATE) к
консольному порту (или
вспомогательный порт ранее
сконфигурированной киски и заходим
обратным телнетом), все нужные нам кабели
(синхронный, Ethernet, модемы),
включаем питание и начинаем
конфигурирование. При первом
включении IOS пытается скачать
конфигурацию из
глобальной сети - можно
подождать несколько минут, чтобы дать ей
понять, что на том конце ничего нет, или
временно
отсоединить
синхронный кабель. Потерпев неудачу, IOS
предлагает выполнить команду setup -
соглашайтесь! В этом случае IOS задает вам
несколько вопросов и
самостоятельно
конфигурируется.
Конфигурирование
осуществляется
следующими способами:
командный интерфейс:
telnet имя-киски
имя-киски>
с терминала: conf term
NVRAM: conf memory
из сети: conf network
через WWW (начиная с версии 11.0(6), 11.1(5), не все
возможности, в версии 12.0 - все
возможности):
запуск HTTP-сервера
ip http server
изменить порт (по умолчанию 80)
ip http port number
ограничить доступ к серверу через ACL
ip http access-class {access-list-number |
name}
определить метод
аутентификации
пользователя (по умолчанию требует ввести имя и
пароль
пользователя с
привилигиями 15-го уровня, все
дальнейшие команды проходят
авторизацию)
ip http authentication {aaa | enable | local
| tacacs}
есть прямой доступ к любой команде на любом
уровне и в любом режиме
(аутентификация и
авторизация должны
соответствовать
выбранному уровню):
http://имя-кошки/level/уровень/режим/команда
где в качестве режима обычно пишется exec
сервер
поддерживает SSI (в т.ч. выдачу любой
команды) и
возможность записи своих HTML-страниц во флеш
ClickStart для Cisco 1600, 700, 1000
позволяет
сконфигурировать
маршрутизатор по WWW для
подключения локальной сетки к ISP.
ConfigMaker
специальный софт под W95 или NT,
позволяющий
сконфигурировать небольшую сетку из
маршрутизаторов Cisco 1000, 1600, 2500, 3600.
команда setup -
полуавтоматическая "черновая"
настройка нового
маршрутизатора.
AutoInstall. Очень удобно, чтобы
загрузить в новый удаленный
маршрутизатор
минимальную
конфигурацию, а затем зайти на него telnet-ом.
Подключаем новый
маршрутизатор через ethernet, serial HDLC, serial FR (serial
имеют кучу
ограничений).
Конфигурационный файл для него кладем на TFTP
сервер (network-confg,
содержащий команды
определющие
соответствие между IP адресом и именем нового
маршрутизатора - ip host имя
адрес; основной файл
конфигурации для нового
маршрутизатора hostname-confg). BOOTP или RARP
сервер должен иметь в своей таблице
отображение MAC-адреса нового
маршрутизатора на его IP адрес. Может
потребоваться
сконфигурировать ip helper-address, если TFTP и DNS
сервера не доступны напрямую. Все имена
файлов пишутся строчными буквами.
новый
маршрутизатор пытается
определить свой IP адрес (BOOTP, RARP, SLARP)
пытается определить свое имя из взятого по broadcast TFTP
запроса network-confg (cisconet.cfg) или DNS
загружает hostname-confg (hostname.cfg)
по broadcast TFTP (если имя
определить не удалось, то router-confg (ciscortr.cfg))
зайти telnet-ом на
свежесконфигурированный
маршрутизатор и сохранить
конфигурацию в NVRAM
если не получилось, то
маршрутизатор входит в режим setup
Общие сведения о
командном языке:
help - в любой момент можно ввести "?" - киска в
ответ выдаст список команд или
операндов;
любое ключевое слово или имя можно
сокращать до
минимально
возможного;
если терминал нормально настроен, то можно
редактировать командную строку как в emacs или bash.
почти каждую команду можно
предварять словом no.
Уровни привилегий:
предусмотрено 16 уровней
привилегий - от 0 до 15. Если не
производить
дополнительной настройки, то уровень 1- это
уровень
пользователя: доступны только
"безопасные" команды. Уровень 15 - это
уровень
супервизора: доступны все команды.
Переходим с уровня на уровень по
команде:
enable [номер уровня]
Любую команду можно
перевести на уровень, отличный от
стандартного; любому
пользователю можно
назначить
определенный уровень,
устанавливаемый при входе на киску этого
пользователя; таким образом права
пользователей можно тонко
настраивать (только help-ом при этом тяжело
пользоваться :(
Подробности здесь.
Режимы командного языка:
Режим
пользователя
Привилегированный режим: (вход: enable;
выход: disable)
верхний уровень
режим глобальной
конфигурации (вход: config terminal; выход: exit
или Ctrl-Z)
собственно верхний уровень
конфигурирования
конфигурирование
интерфейса
конфигурирование
интерфейса
конфигурирование
подинтерфейсa (serial в режиме Frame Relay)
конфигурирование
контроллера (T1)
конфигурирование хаба (cisco 2500 - ethernet)
конфигурирование списка карт (ATM и FrameRelay)
конфигурирование класса карт (Quality of Service over Switched Virtual Circuit
- ATM, FrameRelay или dialer)
конфигурирование линий
конфигурирование
маршрутизатора (bgp, egp, igrp, eigrp, is-is, iso-igrp, mobile, OSPF, RIP,
static)
конфигурирование
IPX-маршрутизатора
конфигурирование карт
маршрутизатора
конфигурирование ключевых цепочек с его
подрежимами (RIP authentication)
конфигурирование
генератора отчетов о времени ответа
конфигурирование БД LANE (ATM)
режим команд APPN с его
подрежимами (advance peer-to-peer Networking -
второе поколение SNA)
режим команд
присоединения канала IBM с его
подрежимами (Cisco 7000 с CIP)
режим команд сервера TN3270
конфигурирование списков доступа (для
именованых IP ACL)
режим
шестнадцатеричного ввода (задание
публичного ключа для шифровки)
конфигурирование карт шифровки
и другие подрежимы
конфигурации
ROM монитор (нажать break в первые 60 секунд
загрузки, тоже есть help, самые
полезные команды: boot, init, continue).
Редактирование командной строки
Комментарии
начинаются с
восклицательного знака, но в NVRAM не
сохраняются.
Задать размер истории команд в текущей
сессии: terminal history size
строк (по
умолчанию - 10)
Задать размер истории команд для
определенной линии: history size
строк
Предыдущая/следующая команда: Ctrl-P/Ctrl-N или
sстрелка вверх/вниз для
ANSI-совместимых
терминалов
Ппказать буфер команд: show history
Выключить/включить
редактирование:
[no] terminal editing # для
текущей сессии
[no] editing # для
определенной линии
символ
вперед/назад: Ctrl-F/Ctrl-B или стрелка
вперед/назад для
ANSI-совместимых
терминалов
в начало/конец строки: Ctrl-A/Ctrl-E
на слово
вперед/назад: Esc F/Esc B
развертывание команды: Tab или Ctrl-I
вспомнить из
буфера/вспомнить следующий: Ctrl-Y/Esc Y
удалить символ слева от
курсора/под курсором: Delete/Ctrl-D
удалить все символы до начала
строки/конца строки: Ctrl-U/Ctrl-K
удалить слово слева от
курсора/справа от курсора: Ctrl-W/Esc D
перерисовать строку: Ctrl-L/Ctrl-R
поменять символы местами: Ctrl-T
экранирование символа: Ctrl-V или Esc Q
На
ANSI-совместимых
терминалах действует
автоматический скролинг
чрезмерно длинных строк.
Конфигурирование
характеристик
терминальной линии
Изменение параметров на время текущей сессии
производится с помощью команды terminal
опция. Для того, чтобы
сделать изменения
постоянными, надо войти в режим
конфигурирования линии
line {aux | console | tty | vtty }
номер-линии [
конечный-номер-диапазона-линий ]
и
использовать ту же опцию.
Работа с
флэш-памятью (в ней лежит и из нее
выполняется IOS) и NVRAM
(конфигурация)
На киске работает ТРИ
программы: ROM монитор (это
загрузчик и отладчик - тупой до
безобразия - попадаем в него если
соответствующим образом
установлен регистр
конфигурации или нажал BREAK во время
загрузки и это не
запрещено); boot ROM - система в ROM
(урезанная и очень старая система IOS - 9.1 - если не
удалось найти более
подходящую во флэш или по сети или ручная
загрузка из ROM монитора) и система во флэш -
версия, которую сам поставил.
Конфигурация хранится в NVRAM. Еще есть
оперативная память,
используемая для хранения данных (IOS
выполняется прямо из ROM).
Внимание: пароль
администратора в IOS 9.1 задается
командой "enable password", а не "enable secret"!
В руководстве делается
предупреждение, что на Sun'е сервер TFTP
должен быть настроен так, чтобы
генерировать и проверять
контрольные суммы UDP (я ничего не делал). Везде
вместо TFTP можно
использовать rcp (rsh), но мне
лениво следить за
безопасностью в этом случае.
Посмотреть, что там лежит: show flash all
System flash directory:
File Length Name/status
addr fcksum ccksum
1 3243752 igs-i-l.110-1
0x40 0xB5C4 0xB5C4
[3243816 bytes used, 950488 available, 4194304 total]
4096K bytes of processor board System flash (Read ONLY)
Chip Bank Code Size Name
1 1 89A2 1024KB INTEL 28F008SA
2 1 89A2 1024KB INTEL 28F008SA
3 1 89A2 1024KB INTEL 28F008SA
4 1 89A2 1024KB INTEL 28F008SA
Executing current image from System flash
Иметь два файла во флэш можно только, если
имеется два банка памяти (у меня нет) и
выполнить
специальную процедуру (IOS надо
настроить адреса -
выполняется-то она из флэша!). Буква l в имени
файла как раз и означает, что адреса можно
настроить.
Посмотреть, сколько раз туда чего
записывали: show flash err
(по-моему, ерунду
показывает).
Копировать из флэш на tftp: copy flash tftp,
после чего спросят имя сервера,
исходное имя файла и
результатирующее имя файла (файл должен
существовать с правами 666).
Копировать
конфигурацию на tftp: copy startup-config/running-config tftp
Загрузить
конфигурацию с tftp: copy tftp startup-config/running-config
(по-моему, если грузить текущую
конфигурацию, то
происходит не
копирование, а слияние).
Копировать из tftp во флэш (если
достаточно памяти!!!): copy tftp flash
Понятное дело, что если IOS
выполняется из флэш, то грузить новое
содержимое флэша во время работы IOS не стоит, надо
загрузиться из ROM (либо нажав Break при
загрузке, либо выдав no boot system flash).
Черта-с два! На самом деле все не так
как в книжке. Надо выдать copy tftp flash
прямо из IOS (ибо в bootstrap такой
команды нет вовсе), будет запущен flash load helper,
который задает все
необходимые вопросы, затем
перезапускает киску из ROMа, стирает флэш,
копирует файл с tftp (заходить только с
консоли - иначе ничего не увидишь, и об
ошибках не узнаешь ;). После этого надо
сохранить
конфигурацию (copy run start). А
все-таки интересно, как
выбираться из ситуации, если что-то
получилось не так. Кстати,
рекомендуется сохранить
конфигурацию
куда-нибудь на tftp перед
изменением флэша. p.s. все-таки можно было бы
сделать и
загрузившись из ROM (только не ROM
монитор, а ROM IOS), если задать в
регистре
конфигурации младшие 4 бита равными 0-0-0-1.
Установка 8МБ флэш вместо 4МБ (старый boot ROM не
умеет работать с 8МБ флэшом).
Сохраняем
конфигурацию. Меняем значение
регистров загрузки
router# conf t
router(config)# config-reg 0x2100
Выключаем питание,
вытаскиваем старый флэш и ставим новый.
Подсоединяем
консольный терминал, грузимся,
попадаем в ROM. Грузим в
оперативную память
достаточно новую версию IOS, чтобы она уже умела
работать с новым типом флэша, но еще
влезала в 3.5МБ памяти (я брал 11.0(1)):
router> b igs-i-l.110-1
ip-адрес-tftp-сервера
она загружается (злобно ругаясь на
незнакомые команды
конфигурации и портя их! так что
конфигурацию надо
предварительно сохранить).
Копируем по TFTP новую IOS во флэш со
стиранием:
router# copy tftp flash
Возвращаем обратно значение
регистра загрузки:
router# conf t
router(config)# config-reg 0x2102
и
перезагружаемся. ROM злобно
ругается на
незнакомый тип флеша и
незнакомые команды
конфигурации, но загружает нужный IOS.
Восстанавливаем
конфигурацию.
Установка 8МБ образа на cisco, ROM IOS
которой не умеет работать с 8МБ флеш:
сохранить
конфигурацию
router# conf t
router(config)# config-reg 0x2100
router(config)# exit
router# reload
перезагружается после
многочисленных вопросов
> b igs-i-l.110-1
ip-адрес-tftp-сервера
злобно ругается на
незнакомые команды
конфигурации и портит их
router# copy tftp flash
копируем по TFTP новую IOS во флэш со
стиранием
router# conf t
router(config)# config-reg 0x2102
router# reload
конфигурацию не сохранять. ROM злобно
ругается на
незнакомый тип флеша и
незнакомые команды
конфигурации, но загружает нужный IOS.
router# copy tftp start
Восстанавливаем
конфигурацию.
перезагружаемся еще раз
Копирование текущей
конфигурации в
загрузочную: copy run start
Копирование
загрузочной
конфигурации в текущую: copy start run
Посмотреть состояние: show version
Проверить
контрольную сумму: verify flash
Сжатие
конфигурационного файла работает только на Cisco 3xxx и Cisco 7xxx.
Повторно выполнить
конфигурационный файл: configure memory
Очистить
конфигурацию: erase startup
Посмотреть
текущую/загрузочную
конфигурацию: show run/start
В NVRAM
записываются только
параметры, отличные от
параметров по умолчанию.
Параметры по умолчанию различны для
различных версий, так что при смене версии
бывает очень интересно ;)
Регистр
конфигурации: 16 бит. Меняется
командой: config-register.
Младшие 4 бита (3,2,1, и 0)
образуют поле загрузки:
0-0-0-0 загрузить ROM-монитор вместо IOS
0-0-0-1 загрузить boot ROM
если между 0-0-1-0 и 1-1-1-1 то грузить то, что
задано командой boot system (если
ничего не задано, то грузить файл с
сетевого сервера с именем
определяемым по умолчанию: имя
формируется исходя из значения
регистра). Можно задать
несколько команд boot system. Только не надо
задавать имя файла в boot system flash (все
равно он ровно один, а то после
прошивки новой версии IOS
загрузчик будет упрямо искать старый файл).
Файл
конфигурации сети (по
умолчанию имя файла: network-config):
boot network [tftp]
имя-файла
[ip-адрес]
service config
Файл
конфигурации хоста (по
умолчанию имя файла: network-config):
boot host [tftp]
имя-файла
[ip-адрес]
service config
Перезагрузка:
просто
перезагрузка
reload
перезагрузка в
определенное время:
reload at hh:mm [month day] [reason]
перезагрузка через
определенное время:
reload in [hh:]mm [reason]
отмена отложенной
перезагрузки:
reload cancel
Сервисы
Часы
(сбрасываются даже при
перезагрузке на 1 марта 1993 года)
хранятся в формате UTC (Coordinated Universal Time) - то же
самое, что и GMT.
Используются протоколы NTP
(прием и передача - включен по
умолчанию - при
перезагрузке и при
выключении на пару минут время
сохраняется), SNTP на
кисках серии 1000 (только прием -
выключен по умолчанию).
посмотреть
show clock [detail]
установить вручную
clock set hh:mm:ss
день месяц год
аутентификация NTP:
ntp authenticate -
включить
ntp authentication-key number md value -
задать значение ключа
ntp trusted-key
номер-ключа - знающий этот ключ может
синхронизовать нас
определить соседей:
ntp peer ip-address [version
номер] [key
номер-ключа][source
интерфейс] [prefer]
определить сервер:
ntp server ip-address [version
номер] [key
номер-ключа][source
интерфейс] [prefer]
широковещательная рассылка
ntp broadcast [version
версия]
получать
широковещательную рассылку
ntp broadcast client
установить
предполагаемое значение задержки при
широковещательной рассылке
ntp broadcastdelay
микросекунд
управление доступом (номер ACL
задается базовой командой access-list)(по
умолчанию все разрешено, даже
синхронизация с
незнакомыми системами! -
сделать)
ntp access-group query-only/serve-only/serve/peer
номер-ACL
запретить NTP сервис на
определенном
интерфейсе
ntp disable
если киска имеет несколько IP-адресов то можно
определить исходный IP-адрес в
NTP-пакетах
ntp source
интерфейс
определить киску как властный
источник времени, даже если она не
синхронизована с внешним миром
ntp master [слой]
задать размер
аппаратного тика
(теоретически 250 Гц) в единицах 2^-32
ntp clock-period единиц
максимальное число соседей
NTP-протокола
(сделать!)
ntp max-associations число
посмотреть статус
show ntp status
посмотреть список соседей
show ntp associations [detail]
откуда SNTP будет
запрашивать NTP пакеты
sntp server адрес [version
версия]
SNTP будет брать NTP пакеты из
широковещательных потоков
sntp broadcast client
посмотреть сосотояние SNTP (Cisco 100x)
show sntp
задать часовой пояс - почему только целое число
часов?
clock timezone имя(MSK)
смещение(3)
задать летнее время (по правилам) (last Sun Mar 2:00 last Sun Sep 2:00)
clock summer-time имя(MSD) recurring
first/last/номер-недели-начала
день-недели месяц hh:mm
first/last/номер-недели-окончания
день-недели месяц hh:mm
[смещение-в-минутах]
задать летнее время
непосредственно
clock summer-time имя
месяц-начала день
год hh:mm
месяц-окончания день
год hh:mm
[смещение-в-минутах]
на Cisco 4500 и Cisco 7000 есть
батареечный календарь
Запустить TFTP сервер на
киске:
предоставлять
содержимое флэша (там лежит не
обязательно IOS):
tftp-server flash
имя-файла [alias
синоним] [acl]
предоставлять
содержимое ROMа (можно
одновременно с флэш):
tftp-server rom
имя-файла [alias
синоним] [acl]
Запустить RARP сервер на киске (чтобы это реально
использовать
необходимо выполнить кучу
дополнительных условий -
обеспечить broadcast UDP - ip forward-protocol udp 111,
заполнить таблицу ARP
MAC-адресами клиентов, ip helper-adress
адрес-настоящего-сервера -
говорят, что проблемы возникли из-за
недоделанности rpc.bootparamd в SunOS - судя по
нашему принтеру так оно и есть):
cat(config-if)>ip rarp-server
ip-адрес-настоящего-сервера
rcp и rsh сервис:
задание базы данных
пользователей (не знаю что за засада, но мне и
локальное и внешенее имя пришлось задать свое):
ip rcmd remote-host local-username
ip-address/host remote-username [enable [level]]
запуск rcp сервера (а для чего его можно
приспособить?):
ip rcmd rcp-enable
запуск rsh сервера (надо
избавиться от expect при сборе
статистики)
ip rcmd rsh-enable
HTTP-сервер (при входе в
качестве имени надо говорить имя киски, а
пароля - пароль
супервизора) - пользы от этого
никакой:
ip http server
ip http port 80
Общее управление
prompt строка -
изменение
стандартного
приглашения
hostname имя - имя
маршрутизатора
alias уровень-EXEC
имя-синоним
текст-команды -
создание
сокращений-синонимов команд
show aliases
[уровень-EXEC] -
посмотреть список
синонимов
load-interval секунд - длина
интервала вычисления средней
загрузки
Интерфейсы
общие команды для всех
интерфейсов
description
строка-текста
hold-queue длина in/out -
задание размера буфера
bandwidth kilobits -
используется, например, для
настройки параметров TCP
delay
десятые-милисекунды -
информация для некоторых
протоколов
маршрутизации (или десятки
микросекунд)
keepalive секунд - как часто
посылать пкаеты для проверки
живучести линии (интерфейс
считается упавшим если в течении 3
интервалов не пришло ответа)
mtu байт
последовательный
асинхронный
async: 8 штук на Cisco 2509, 16 штук на Cisco 2511, еще
можно
использовать AUX порт, но ОЧЕНЬ не
советую
(дефективная
аппаратная
реализация: скорость 38400, все на
программном уровне - в том числе и
синхронизация).
Саму физическую линию надо
конфигурировать отдельно с помощью
команды line.
Вход в режим
конфигурации
интерфейса:
interface async
номер-порта
Инкапсуляция:
поддерживаются два метода
инкапсуляции - SLIP и PPP. О SLIP мы
забудем сразу же.
Режим:
интерактивный или жестко
настроенный (dedicated): в
последнем случае не
запускается EXEC, так что нельзя
поменять адрес и другие
параметры:
async mode interactive/dedicated
Разрешить протоколы
динамической
маршрутизации:
async dynamic routing
Групповая
конфигурация (столько
предупреждений об ошибках, что лучше и не
трогать - в версии 11.1(22) все
прерасно работает)
определение группы:
interface group-async unit-number
общие команды
member номер
индивидуальная-команда
group-range low-number high-number - тут же
начинается построение
конфигурации
multilink PPP через
последовательные
асинхронные порты
Конфигурация cisco в качестве
принимающей стороны для multilink PPP на две линии, с той
стороны Zyxel Prestige 153, я
пытаюсь сохранить старые адреса в
локальной сетке:
username имя password
пароль
interface Ethernet 0
ip address
адрес-соответствующий-той-стороне
маска
ip address
адрес-в-локальной-сетке маска secondary
interface Group-Async 1
mtu 1104
no ip address
encapsulation ppp
no ip route-cache
no ip mroute-cache
bandwidth 112
keepalive 10
async mode dedicated
dialer in-band
dialer rotary-group 0
no fair-queue
no cdp enable
group range 7 8
interface Dialer 0
mtu 1104 # 552*
количество линий
ip unnumbered Ethernet0 # у меня нет
адресного
пространства под связующую сетку
no ip tcp header-compression #
ругается, что
несовместим с multilink
encapsulation ppp
no ip route-cache
no ip mroute-cache
no peer default ip address
dialer in-band
dialer idle-timeout 2147000
dialer-group 1
no fair-queue
no cdp enable
ppp negotiation-timeout 90
ppp authentication pap
ppp multilink
ip route 0.0.0.0 0.0.0.0 адрес-P153 # если
единственный выход в свет через этот линк
ip route
адрес-сетки-соединенной-через-MPPP
маска
адрес-ethernet-интерфейса-P153
ip route
адрес-ethernet-интерфейса-P153 255.255.255.255 Dialer0 permanent
dialer-list 1 protocol ip permit
line 7 8
exec-timeout 0 0
modem InOut
transport preferred none
escape-character NONE
telnet break-on-ip
telnet transparent
stopbits 1
rxspeed 115200
txspeed 115200
flowcontrol hardware
хаб (2505, 2507, 2516)
hub ethernet number port
no shutdown
auto-polarity
link-test
source-address [MAC-address] -
пропускать только пакеты от этого MAC-адреса
loopback (позволяет удержать BGP-сессию, даже если
другие интерфейсы упадут)
interface loopback number
null (позволяет
маршрутизировать все ненужное в /dev/null)
interface null 0
синхронный
последовательный интерфейс (serial)
interface serial номер
encapsulation
atm-dxi/hdlc/frame-relay/ppp/sdlc-primary/sdlc-secondary/smds/stun/x25
- по умолчанию HDLC (есть
обнаружение ошибок, но нет повтора
неверно переданных данных)
compress stac - если
загрузка CPU превышает 65%, то
выключить
pulse-time секунд - какую паузу
сделать при
пропадании несущей
тунель
(инкапсуляция пакетов одного
протокола внутри пакетов другого)
Для чего это надо:
многопротокольная локальная сеть через
однопротокольный бэкбон
для обхода протоколов
ограничивающих число
промежуточных узлов
виртуальные частные сети через WAN
Компоненты:
протокол-пассажир
протокол-носитель
протокол
инкапсуляции (обычно GRE,
остальные в
исключительных случаях)
Предупреждения:
большая загрузка CPU
возможное нарушение
безопасности
увеличение времени задержки
множественные тунели могут забить канал
информацией о маршрутах
протокол
маршрутизации может
предпочесть тунель как якобы самый
короткий маршрут
появление
рекурсивных маршрутов
interface tunnel номер
тут должно быть описано каким
протоколам позволено
туннелироваться
tunnel source
ip-address-или-интерфейс
tunnel destination
ip-address-или-интерфейс
tunnel mode aurp/cayman/dvmrp/eon/gre ip/nos -
определяет протокол
инкапсуляции
tunnel checksum - все плохие пакеты будут
выкидываться (некоторые
протоколы требуют этого)
tunnel key номер - должны быть
одинаковы на обоих концах (слабая
защита)
tunnel sequence-datagramms -
отбрасывать пакеты,
пришедшие не в том порядке
(некоторые протоколы требуют этого)
управление и
мониторинг
show async status
show interface async
номер
show compress
show controller
имя-контроллера
show interface accounting
show interface тип
номер
clear counters тип
номер
show protocols
show version
clear interface тип
номер
clear line номер
shutdown
no shutdown
down-when-looped - считать
интерфейс упавшим, если на нем включен loopback
(необходимо для backup)
динамическое выделение IP-адресов из
локального пула и удержание их за
пользователями
ip address-pool local
ip local pool default
начальный-ip-адрес
конечный-ip-адрес
interface Group-Async1
ip unnumbered Ethernet0
ip tcp header-compression passive
encapsulation ppp
bandwidth 112
delay 20000
keepalive 10
async mode interactive
no cdp enable
peer default ip address pool
group-range 1 16
если чей-то адрес надо задать явно, то скажи:
member номер peer default ip address
IP-адрес
в версии 11.0(1) не работала, в версии 11.1(22)
вроде работает, но со временем
отъедает память, в версии 12.0(3) с
памятью все хорошо..
autoselect между ppp/telnet
Постановка задачи. Имеется NAS, который
должен в
зависимости от имени
пользователя
организовывать ему PPP или telnet сеанс. В то же
время хочется, чтобы клиенты PPP имели
возможность
передавать имя/пароль с помощью PAP, а не
вводить их в
диалоговом окне либо с помощью скрипта. Те, кто
привык
пользоваться скриптом или
диалоговым окном, должны иметь
возможность
пользоваться ими и дальше. Для
определения типа
пользователя
используется tacacs+. CHAP не
используется, потому что пароли
пришлось бы хранить в
незашифрованном виде (а умеет ли MS W9x
выдавать CHAP?). MS-CHAP не
используется потому что: а) нужна
прошивка Enterprise (flash 16MB); б) нужно
красть DES в обход законов США; в)
выпрашивать public key у Microsoft. И после этих
мучений выяснится, что tac_plus
опять-таки требует хранить пароли в
открытом виде.
Конфигурация NAS:
aaa new-model
aaa authentication login default tacacs+ enable
aaa authentication ppp default if-needed tacacs+ none
aaa authorization exec default tacacs+ if-authenticated
aaa authorization command 1 default tacacs+ if-authenticated
aaa authorization command 10 default tacacs+ if-authenticated
aaa authorization command 15 default tacacs+ if-authenticated
aaa authorization network default tacacs+ if-authenticated
aaa authorization reverse-access default tacacs+
aaa accounting exec default wait-start tacacs+
aaa accounting network default wait-start tacacs+
aaa accounting connection default wait-start tacacs+
aaa accounting system default wait-start tacacs+
aaa processes число
ip local pool default
начало-интервала
конец-интервала
tacacs-server host
IP-адрес
tacacs-server attempts
число-попыток
tacacs-server key ключ
...
interface Group-Async 1
encapsulation ppp
async mode interactive
peer default ip address pool default
ppp authentication pap
...
line от до
autoselect during-login
autoselect ppp
autoselect timeout
секунд
...
Конфигурация tac_plus:
key = ключ
accounting file =
имя-файла
user =
telnet-пользователь {
login = des
шифрованный-пароль
after authorization
имя-процедуры-для-дополнительной-проверки
service = exec { autocmd = "telnet
IP-адрес порт" }
cmd = telnet { permit "^IP-адрес
порт .*" }
...
}
user =
ppp-пользователь {
login = des
шифрованный-пароль
pap = des
шифрованный-пароль
service = ppp protocol = lcp { timeout =
макс-время-сеанса-в-сек }
maxsess =
число-одновременных-сессий
after authorization
имя-процедуры-для-дополнительной-проверки
service = exec { autocmd = "ppp default" }
cmd = ppp { permit .* }
...
service = ppp protocol = ip {
default attribute = permit
addr-pool = "default"
dns-servers = "сервер-1
сервер-2"
inacl =
ACL-для-ограничения-доступа
...
}
}
конфигурирование в
качестве простого
терминального сервера
Пример
конфигурации с
коментариями.
service tcp-small-servers #
позволяет киске отвечать на всякие мелкие
запросы типа echo, chargen и т.д.
hostname cat2511-wb # имя киски,
выдается в
приглашении и ,наверное, где-то еще
clock timezone MSK 3 #
временная зона
clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 2:00 #
летнее время
enable secret #
зашифрованный пароль
суперпользователя
enable password # не
используется, если есть
шифрованный
ip subnet-zero # не
разбирался
ip tcp synwait-time 120 #
зачем это
ip tcp path-mtu-discovery #
автоматическая настройка на размер MTU
ip accounting-threshold 256 # не
разбирался
ip accounting-list 194.84.39.0 0.0.0.255 #
не
разбирался
interface Ethernet0 # начинаем
конфигурировать порт Ethernet
ip address 194.84.39.24 255.255.255.224 # IP
адрес и маска ethernet-порта
(основной адрес киски)
ip address 194.87.163.24 255.255.255.224 secondary #
если у нас два блока IP-адресов (что у нас было в
момент перехода от одного ISP к
другому
exit # выход из
конфигурирования Ethernet
interface Serial0 # начинаем
конфигурировать
синхронный
последовательный порт
no ip address # нет у нас его
shutdown # -//-
exit # выход из
конфигурирования порта
interface Serial1 # начинаем
конфигурировать
синхронный
последовательный порт
no ip address # нет у нас его
shutdown # -//-
exit # выход из
конфигурирования порта
ip domain-name deol.ru. # имя нашего
домена
ip name-server 194.84.39.28 # адрес
DNS-сервера (может быть до 6 штук)
ip route 0.0.0.0 0.0.0.0 194.84.39.26 #
маршрут по умолчанию (все, что не на наших
портах, передаем на более "умную" киску
snmp-server community public RO #
разрешаем SNMP
управление (только чтение)
line con 0 # начинаем
конфигурирование
консольного порта
exec-timeout 0 0 #
отключаем тайм-аут
exit # выход из
конфигурирования порта
line 1 16 # начинаем
конфигурацию
асинхронных
последовательных портов
exec-timeout 0 0 #
отключаем тайм-аут
modem InOut #
отрабатывать модемные сигналы
autocommand telnet 194.84.39.28 # при входе на
линию, киска насильно выдает команду telnet..., что не
позволяет
пользователю делать что-либо еще (если,
конечно, не знаешь как из этого выйти)
transport input none # не
позволяет звонить с наших модемов (зайдя на линию
обратным телнетом)
transport preferred none # на всякий
случай
escape-character NONE # не
позволяет выйти из telnet'а
stopbits 1
rxspeed 115200 # скорость между
модемом и киской
txspeed 115200 # скорость между киской и
модемом
flowcontrol hardware
exit # выход из
конфигурирования порта
line aux 0 #
конфигурирование
вспомогательного
асинхронного
последовательного порта
transport input all # может быть сюда будет
подключена консоль другой киски
exit # выход из
конфигурирования порта
line vty 0 4 #
конфигирирование
виртуальных
терминалов (на них мы попадаем, когда
заходим телнетом на киску)
exec-timeout 0 0 #
отключаем тайм-аут
password # пароль линии; к
сожалению, не
шифрованный
login # киска будет
спрашивать пароль при заходе на эту линию (в
данном случае телнетом)
exit # выход из
конфигурирования порта
Безопасность
AAA (authentication,
authorization, accounting), tacacs+, RADIUS,
пароли
списки доступа и
фильтрация трафика
Рекомендации по
безопасности
Устанавливая пароль для
привилегированного доступа,
необходимо
использовать команду enable secret, а не enable password
(последняя не шифрует пароль).
Для консольного порта тоже
необходим пароль (либо через AAA, либо через login и password).
Тем более, что на них
приходится заходить telnet-ом. Наличие
возможности BREAK дает доступ к
маршрутизатору даже если
установлен пароль на консоль.
Необходимо
устанавливать списки доступа и пароли на
виртуальные
терминальные порты,
ограничивая места откуда на них можно будет
заходить по telnet.
Не надо запускать локальные сервисы,
которые не нужны. CDP и NTP
запускаются по умолчанию. Если они не нужны их надо
отключить (no cdp run и ntp disable).
Если NTP нужен, то
запускать его только на
требуемом интерфейсе и
настраивать так, чтобы он слушал только
заранее
назначенных соседей.
Необходима защита от подделки адресов в обоих
направлениях (через ACL). Закрыть source routing (no ip source-route).
Запретить directed broadcast на всех
интерфейсах (в редких случаях -
каких? -он все же нужен): no ip
directed-broadcast (в 12.0
устанавливается по
умолчанию).
Закрыть proxy arp на каждом
интерфейсе (для защиты от
обнаружения
внутренних адресов): no ip proxy-arp.
конфигурирование
маршрута по умолчанию
Решение
различных
неожиданных проблем в IOS
отладка и
журнализация
Где
купить Cisco?
управление
очередями
интересная информация
при
перезагрузке время
сохраняется пару минут
ICMP пакеты генерятся с частотой не более 2 в
минуту
Если у нас два выхода в Интернет через одну киску
То,
естественно, хочется
нагрузить их оба. Но делать
настоящую
маршрутизацию (AS, LIR) лениво и дорого.
Простейший метод состоит в том, чтобы
поделить все свои
компьютеры на две группы. Одной группе дать
адреса от одного
провайдера (194.1.1.0), другой - от
второго (195.2.2.0). И
обеспечить разделение потоков через policy routing.
ip access-list extended provider1-source
permit ip 194.1.1.0 0.0.0.255 any
deny ip any any
route-map provider1-out permit 10
match ip address provider1-source
set default interface Serial0
interface Ethernet0
ip policy route-map provider1-out
ip route 0.0.0.0 0.0.0.0 Serial1
------
Поддержка transparent proxy
Смысл:
маршрутизатор, стоящий на выходе в
Интернет,
перенаправляет все пакеты, идущие из
локальной сети наружу с портом
назначения 80 (HTTP), на хост,
осуществляющий
кеширование запросов.
Естественно, пакеты, идущие с этого хоста
(хостов) не
перенаправляются.
interface Ethernet0 ip policy route-map proxy-redirect ip access-list extended legal-to-proxy deny ip host отсюда-не-перенаправлять any permit tcp any any eq www deny ip any any route-map proxy-redirect permit 10 match ip address legal-to-proxy set ip next-hop адрес-proxy-сервера
Проблема 1. Если связь между
маршрутизатором и
прокси-сервером на время
пропадет, то пакеты пойдут наружу.
Получается коллизия, если они
возвращаются к моменту когда связь уже
восстановилась.
Рекомендуется просто кидать их, пока связь не
восстановится:
ip route
адрес-proxy-сервера 255.255.255.255 Null0 250
Нет уж, я бы предпочел, чтобы было
наоборот. Если
прокси-сервер упал или связь с ним
потеряна, то пакеты начали бы ходить как будто
никакого route-map вообще нет.
Проблема 2.
Фрагменты всегда
удовлетворяют ACL и,
соответственно, попадают на proxy-сервер,
которому они не нужны. Он их иногда
пересылает по
назначению, а иногда кидает в
зависимости от настройки.
|