Настройка авторизации пользователей на Cisco Secure ACS

Пример настройки классической авторизации пользователей на Cisco Secure ACS v4.0.

Настройка Cisco Secure ACS

Наша задачи:

  • создать AAA клиента, использующего TACACS+ аутентификацию
  • создать две группы пользователей с нужными свойствами

Этот раздел статьи содержит много рисунков и мало текста. Действительно, удобнее все увидеть на картинке, чем долго читать описание.

Настройка AAA клиента

Начинаем с того, что добавляем AAA клиента на ACS сервере.

Для этого открываем страницу Network Configuration.

Добавляем AAA клиента. В Блоке AAA Clients нажимаем Add Entry.

Заполняем поля как на рисунке и нажимаем Submit + Apply.

В итоге получаем следующую картину.

На странице Interface Configuration появилась строка со ссылкой TACACS+ ( Cisco IOS ). Нажимаем ее.

Проверяем, что флажок рядом Shell ( exec ) установлен. В противном случае нужные нам поля не отобразятся в свойствах групп.

Настройка группы обычных пользователей.

Создадим и настроим группу для рядовых пользователей. Напомню, что им требуется ftp трафик к двум FTP серверам и RDP трафик к терминальному серверу.

На странице Group Setup выбираем нужную группу и нажимаем кнопку Edit Settings.

В блоке TACACS+ Settings / Shell Command Authorization Set устанавливаем переключатели и заполняем поля согласно следующему рисунку.

Согласитесь, на первый взгляд это кажется немного странным: поставив два переключателя в положение Deny, мы разрешили прохождение нужного трафика. На самом деле все логично – оба Deny запрещают то, что не соответствует значением полей команды и аргумента.

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

Итак, сохраняем изменения, нажав Submit + Apply.

Снова открываем свойства редактируемой группы. Как Вы можете заметить, в блоке Shell Command Authorization Set появились поля для новых правил. Заполняем их в соответствии со следующим рисунком и нажимаем Submit + Apply.

Осталось только добавить пользователей в группу.

На странице User Setup находим нужного пользователя и в его свойствах указываем нужную группу.

Настройка группы администраторов серверов.

Администраторам нужен такой же, как у пользователей, FTP доступ, плюс RDP доступ ко всем серверам.

Настройки в той части, которая касается ftp трафика, совпадает на 100%. Во второй части, в поле аргумент в последнем октете адреса вместо цифры ставим «*». Таким образом, мы указали вместо одного адреса всю сеть 192.168.1.0/24.

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

— Можно указывать диапазон портов. Строка команды тогда будет выглядеть так: tcp/10000-10007.

— Чтобы открыть все порты, поставьте после черты “0”, например udp/0.

Так же добавим во вторую группу нужных пользователей.

Теперь все, что требовалось сделать на AAA сервере, выполнено.

Комментарий в заключении

Если Вы заметили, мы по-разному описали RDP и ftp трафики. Дело в том, что HTTP, HTTPS, FTP и Telnet трафик описываются явно. Т. е. в поле “Command” надо написать http или https или ftp или telnet. Для всех других портов требуется указывать комбинацию из названия протокола и номера порта, разделенных чертой, например tcp/3389 или udp/53. Но если вы напишете tcp/80, HTTP трафик не пройдет. Надо писать http. Тоже самое для HTTPS, FTP и Telnet. Но и это еще не все. Если нужно описать ICMP трафик, придется писать “1/8” для эхо запросов и “1/0” для эхо ответов. Как Вы, наверное, знаете, у каждого протокола есть свой номер: tcp=6, udp=17, icmp=1 и т. д. Как это не смешно, но если описать, например, RDP трафик через 6/3389, то такой вариант тоже работать не будет.

Как это не удивительно, но описать весь нужный трафик в одном формате не удается. Не могу сказать, в чем здесь причина. Возможно в более свежих версиях Cisco Secure ACS все намного лучше.

Использование авторизации пользователей на Cisco ASA для ограничения доступа к сетевым ресурсам

Использование авторизации пользователей на фаерволе Cisco ASA для ограничения доступа к сетевым ресурсам.

Предисловие

Иногда возникает необходимость ограничить доступ к выборочным сетевым ресурсам и сервисам для определенных пользователей. Особенностью такой задачи является то, пользователи используют динамически меняющиеся ip адреса. Следовательно, нужно контролировать не ip адрес компьютера, с которого выполняется соединение, а идентификатор самого пользователя. О том, как это сделать с помощью Cisco ASA и Cisco Secure ACS рассказано в этой статье.

Общая информация

Для решения задачи требуется AAA сервер и фаервол Cisco ASA.

AAA сервер это программа, предоставляющая сервисы аутентификации (Authentication), авторизации (Authorization) и учёта использования ресурсов (Accounting).

Аутентификация – это процесс проверки подлинность пользователя. Система спрашивает у пользователя: “Кто ты?”

При авторизации система проверяет, что пользователю разрешено делать, а что нет, доступ к каким ресурсам позволен, к каким — нет. Система определят “Куда ты идешь?” и решает пропустить или нет.

Таким образом, аутентификация вполне самодостаточна, то есть может существовать без авторизации. Авторизация же без аутентификации работать не может.

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

Есть два способа реализации авторизации.

Первый – это классическая авторизация пользователей.

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

Классическая авторизация поддерживается только TACACS+ сервером.

Второй способ реализации авторизации – это динамически загружаемые списки доступа (access lists). На AAA сервере создаются аксес листы. Они привязываются к определенным пользователям или группам. В момент, когда пользователь проходит аутентификацию на фаерволе, ASA загружает с AAA сервера нужные аксес листы. При этом в качестве ip адреса источника соединения прописывается ip адрес аутентифицировавшегося пользователя. Клода пользователь разлогинивается, его аксес листы удаляются из памяти фаервола.

Этот вариант авторизации поддерживается только RADIUS сервером.

Пример настройки классической авторизации.

Здесь мы рассмотрим пример реализации классической авторизации. В качестве AAA сервера будем использовать Cisco Secure ACS v4.0, а в качестве фаервола — ASA5510 с ios Cisco Adaptive Security Appliance Software Version 8.0(3).

На рисунке Вы видите схему тестовой сети.

В нашем примере за фаерволом есть небольшая сеть, включающая в себя несколько серверов. Двум группам пользователей нужен доступ к внутренней сети. Первая группа – это обычные пользователи. Им надо открыть ftp трафик к двум FTP серверам и RDP трафик к терминальному серверу. Вторая группа – это администраторы серверов. Им так же требуется ftp трафик к FTP серверам и RDP трафик ко всем серверам внутренней сети (точнее сказать, надо открыть RDP ко всей внутренней сети 192.168.1.0/24). Если бы пользователи имели статические ip адреса, достаточно было бы написать аксес листы на фаерволе. Но так как пользователи используют динамические ip адреса, без аутентификации не обойтись. Более того, пользователям нужен разный доступ к разным ресурсам. Следовательно, аутентификации не достаточно, нужна еще и авторизация.

Плюс, допустим, во внутренней сети есть сервер с базой данных, который обменивается информацией с другим, сервером БД. У обоих серверов статические ip адреса. Трафик между базами данных этих серверов не требует авторизации и аутентификации.

 

Восстановление (сброс) пароля на cisco ASA серии 5500

Шаг 1: Подключаемся к консольному порту согласно процедурам, описанным здесь: «Accessing the Command-Line Interface» section on page 2-1.

Шаг 2: Выключаем, затем включаем питание.

Шаг 3:В процессе появления сообщений загрузки жмем клавишу Escape для того, чтобы попасть в ROMMON. Обычно появляется сообщение »Press ESC to enter rommon»

Шаг 4: Для того, чтобы устройство проигнорировало автоматически загружаемый файл конфигурации, введите следующую команду:

rommon #1> confreg

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

Current Configuration Register: 0x00000011
Configuration Summary:
boot TFTP image, boot default image from Flash on netboot failure
Do you wish to change this configuration? y/n [n]:

Шаг 5: ОБЯЗАТЕЛЬНО запишите текущее значение конфигурационного регистра, для того чтобы позднее его восстановить.

Шаг 6: В ответ на приглашение об изменении параметра, введите Y чтобы начать изменения. После чего устройство предложит вам ввести новые значения.

Шаг 7: Примите настройки по усолчанию для всех параметров, кроме параметра «disable system configuration?»; в этом пункте ответьте Y.

Шаг 8: Перезагрузите устройство введением следующей команды:

rommon #2> boot

После чего устройство загрузит свою изначальную конфигурацию, вместо вашей стартовой конфигурации

Шаг 9:Войдите в привилегированный режим(EXEC) вводом следующей команды:

hostname> enable

Шаг 10:В случае возникновения приглашения о вводе пароля, ничего не вводите, а просто нажмите Enter.
Пароль пуст.

Шаг 11:Загрузите свою стартовую конфигурацию, вводом следующей команды:

hostname# copy startup-config running-config

Шаг 12:Войдите в режим глобальной конфигурации, использованием следующей команды:

hostname# configure terminal

Шаг 13:Задайте пароли по средствам использования следующих команд(по выбору, в зависимости от вашей ситуации):

hostname(config)# password
hostname(config)# enable password
hostname(config)# username password

Шаг 14: Установите значение конфигурационного регистра так чтобы после следующей при перезагрузке устройство смогло загрузить вашу стартовую конфигурацию. Используйте следующую команду :

hostname(config)# config-register ЗНАЧЕНИЕ

ЗНАЧЕНИЕ – это значение конфигурационного регистра, которое вы записали в ходе шага №5. 0×1 – это значение регистра по умолчанию. За более подробной информацией относительно значений, которые может принять конфигурационный регистр ознакомьтесь с документом: Cisco Security Appliance Command Reference.

Шаг 15: Сохраните значения новых паролей в ваш стартовый конфигурационный файл с использованием следующей команды:

 hostname(config)# copy running-config startup-config

Использование Cisco VPN Client на Linux

Стоит у меня несколько Cisco и прокинуты по ним туннели GRE между организациями, объединенные в свою сегментную сеть. Когда работал на форточках, проблем с подключением к сети не было. VPN клиент для Cisco под форточки работает прекрасно, но в связи с полным отказом от Windows возник вопрос запуска сие чуда на Debian. Как оказалось, стандартные средства организации vpn, входящие в состав репозитария системы, не обеспечивают решения данной задачи. Вот такую задачу мы и будем сегодня решать.

Поиски решения данной задачи в Гугле не привели к конкретному решению, поэтому все пришлось ставить путем проб и ошибок. Загруженные клиенты не хотели собираться в Debian. Спросите, почему нельзя получить клиента у поставщика, ответ: клиент может быть загружен только после регистрации и получения определенного статуса, вот так. Не у каждого есть возможность получить соответствующие права для загрузки. Поэтому принято решение получить все необходимое ПО из свободных источников. Предыстория понятна, пора начать все реализовывать. Все действия будем производить в консоли.

user$ su
root# cd /usr/src
root# wget http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
--2009-06-09 04:06:33--  http://projects.tuxx-home.at/ciscovpn/clients/linux/4.8.02/vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
Распознаётся projects.tuxx-home.at... 88.198.57.56
Устанавливается соединение с projects.tuxx-home.at|88.198.57.56|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 2050813 (2,0M) [application/x-gzip]
Сохраняется в каталог: `vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz'.
36% [=============>                         ] 746 577     21,9K/s  ОВП 56s

Клиент загружен (эта копия того, который предлагает Cisco у себя на сайте), теперь распакуем и запустим установку. Стоит заметить, что перед запуском установки стоит проверить, есть у вас исходные коды ядра системы. Если нет, то их необходимо установить. Проверить это можно следующим способом.

root# ls /usr/src
vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

Как видите, здесь лежит только загруженный нами ранее vpn клиент Cisco. Необходимо установить исходники ядра, но перед установкой рекомендую обновить пакеты, дабы не наставить дырявого и устаревшего ПО.

root# aptitude update
root# aptitude upgrade

Систему обновили, теперь посмотрим, что у нас есть по ядрам в пакетах.

root#aptitude search linux-image
v   linux-image                                        -                                                             
v   linux-image-2.6                                    -                                                             
p   linux-image-2.6-486                                - Linux 2.6 image on x86                                      
i   linux-image-2.6-686                                - Linux 2.6 image on PPro/Celeron/PII/PIII/P4                 
p   linux-image-2.6-amd64                              - Linux 2.6 image on AMD64                                    
p   linux-image-2.6-k7                                 - Linux 2.6 image on AMD K7 - transition package              
p   linux-image-2.6.26-1-486                           - Linux 2.6.26 image on x86                                   
i A linux-image-2.6.26-1-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-1-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-1-amd64                         - Linux 2.6.26 image on AMD64                                 
p   linux-image-2.6.26-1-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
p   linux-image-2.6.26-1-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-1-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-1-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
p   linux-image-2.6.26-2-486                           - Linux 2.6.26 image on x86                                   
p   linux-image-2.6.26-2-686                           - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
p   linux-image-2.6.26-2-686-bigmem                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4              
p   linux-image-2.6.26-2-amd64                         - Linux 2.6.26 image on AMD64                                 
p   linux-image-2.6.26-2-openvz-686                    - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, OpenVZ suppor
p   linux-image-2.6.26-2-vserver-686                   - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-2-vserver-686-bigmem            - Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4, Linux-VServer
p   linux-image-2.6.26-2-xen-686                       - Linux 2.6.26 image on i686, oldstyle Xen support            
p   linux-image-686                                    - Linux image on PPro/Celeron/PII/PIII/P4

Имеется новое ядро. Вот его и поставим. Напомню, что мы работаем со стабильной веткой Debian, если вы ставите эксперименты на боевой машине (сервере), подумайте хорошо —  сделайте копию. Ставим новое ядро и исходники к нему. Необходимые дополнительные библиотеки aptitude подхватит и установит сам. На всякий случай проверьте установлена ли утилита сборки проектов make. У меня ее почему-то не оказалось.

root# aptitude install linux-image-2.6.26-2-686 linux-headers-2.6.26-2-686 make

Проверяем содержимое …

root# ls -l /usr/src
итого 2020
drwxr-xr-x  4 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-686
drwxr-xr-x 18 root root    4096 Июн  9 06:30 linux-headers-2.6.26-2-common
drwxr-xr-x  3 root root    4096 Июн  9 06:30 linux-kbuild-2.6.26
-rw-r--r--  1 root src  2050813 Май 20 19:16 vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz

Новое ядро установлено, исходные коды ядра тоже на месте, осталось только сделать рестарт системы и можно приступать к настройке и установке vpn клиента для Cisco.

root# reboot

Рестарт системы сделан. У нас имеется архив с клиентом, надо его распаковать и запустить сборку. Приступаем.

user$ su
root# cd usr/src
root# tar xzvf vpnclient-linux-x86_64-4.8.02.0030-k9.tar.gz
root# cd vpnclient

Далее идут вопросы установщика и сборщика, отвечаем утвердительно.

root# ./vpn_install
Cisco Systems VPN Client Version 4.8.02 (0030) Linux Installer
Copyright (C) 1998-2006 Cisco Systems, Inc. All Rights Reserved.
By installing this product you agree that you have read the
license.txt file (The VPN Client license) and will comply with
its terms.
Directory where binaries will be installed [/usr/local/bin]
Automatically start the VPN service at boot time [yes]
In order to build the VPN kernel module, you must have the
kernel headers for the version of the kernel you are running.
Directory containing linux kernel source code [/lib/modules/2.6.26-2-686/build]
* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.6.26-2-686/CiscoVPN".
* The VPN service will be started AUTOMATICALLY at boot time.
* Kernel source from "/lib/modules/2.6.26-2-686/build" will be used to build the module.
Is the above correct [y]
Making module
make -C /lib/modules/2.6.26-2-686/build SUBDIRS=/usr/src/vpnclient modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
  CC [M]  /usr/src/vpnclient/linuxcniapi.o
  CC [M]  /usr/src/vpnclient/frag.o
  CC [M]  /usr/src/vpnclient/IPSecDrvOS_linux.o
  CC [M]  /usr/src/vpnclient/interceptor.o
  CC [M]  /usr/src/vpnclient/linuxkernelapi.o
  LD [M]  /usr/src/vpnclient/cisco_ipsec.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/vpnclient/cisco_ipsec.mod.o
  LD [M]  /usr/src/vpnclient/cisco_ipsec.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
Create module directory "/lib/modules/2.6.26-2-686/CiscoVPN".
Copying module to directory "/lib/modules/2.6.26-2-686/CiscoVPN".
Already have group 'bin'
Creating start/stop script "/etc/init.d/vpnclient_init".
    /etc/init.d/vpnclient_init
Enabling start/stop script for run level 3,4 and 5.
Creating global config /etc/opt/cisco-vpnclient
Installing license.txt (VPN Client license) in "/opt/cisco-vpnclient/":
    /opt/cisco-vpnclient/license.txt
Installing bundled user profiles in "/etc/opt/cisco-vpnclient/Profiles/":
* New Profiles     : sample
Copying binaries to directory "/opt/cisco-vpnclient/bin".
Adding symlinks to "/usr/local/bin".
    /opt/cisco-vpnclient/bin/vpnclient
    /opt/cisco-vpnclient/bin/cisco_cert_mgr
    /opt/cisco-vpnclient/bin/ipseclog
Copying setuid binaries to directory "/opt/cisco-vpnclient/bin".
    /opt/cisco-vpnclient/bin/cvpnd
Copying libraries to directory "/opt/cisco-vpnclient/lib".
    /opt/cisco-vpnclient/lib/libvpnapi.so
Copying header files to directory "/opt/cisco-vpnclient/include".
    /opt/cisco-vpnclient/include/vpnapi.h
Setting permissions.
    /opt/cisco-vpnclient/bin/cvpnd (setuid root)
    /opt/cisco-vpnclient (group bin readable)
    /etc/opt/cisco-vpnclient (group bin readable)
    /etc/opt/cisco-vpnclient/Profiles (group bin readable)
    /etc/opt/cisco-vpnclient/Certificates (group bin readable)
* You may wish to change these permissions to restrict access to root.
* You must run "/etc/init.d/vpnclient_init start" before using the client.
* This script will be run AUTOMATICALLY every time you reboot your computer.

Клиент собрался и установлена поддержка в ядро необходимых протоколов для работы VPN клиента Cisco. Далее необходимо создать конфигурацию и инициализировать клиента. Инициализация требуется один раз, если вы после этого перезапустите систему, то клиент инициализируется сам и при последующих запусках тоже. Если этого не происходит (как в моем случае), то можно произвести инициализацию вручную. Пока не стал разбираться, почему автомат не работает.

root# /etc/init.d/vpnclient_init start

Теперь готовим файл конфигурации:

root# cd /etc/CiscoSystemsVPNClient/Profiles
root# cp sample.pcf имя_нового_профиля.pcf

Если по каким-либо причинам профиль примера не создался, то вот его примерное содержимое:

root# cat sample.pcf
[main]
Description=sample user profile
Host=10.212.20.52
AuthType=1
GroupName=monkeys
EnableISPConnect=0
ISPConnectType=0
ISPConnect=
ISPCommand=
Username=chimchim
SaveUserPassword=0
EnableBackup=0
BackupServer=
EnableNat=1
CertStore=0
CertName=
CertPath=
CertSubjectName=
CertSerialHash=00000000000000000000000000000000
DHGroup=2
ForceKeepAlives=0

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

root# pwd
/etc/CiscoSystemsVPNClient/Profiles
root# mcedit имя_нового_профиля.pcf

строки для правки:

Description=Краткое описание вашего профиля

Host=IP_адрес_вашей_Cisco

GroupName=Имя_вашей_группы_в_домене

Username=Ваше_имя_в_домене_NT

NTDomain=Имя_вашего_домена

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

root# # vpnclient connect имя_вашего_профиля
Cisco Systems VPN Client Version 4.8.01 (0640)
Copyright (C) 1998-2007 Cisco Systems, Inc. All Rights Reserved.
Client Type(s): Linux
Running on: Linux 2.6.26-2-686 #1 SMP Thu May 28 15:39:35 UTC 2009 i686
Config file directory: /etc/opt/cisco-vpnclient
Initializing the VPN connection.
Contacting the gateway at <span style="color: red; font-weight: bold;">IP_адрес_вашей_Cisco</span>
User Authentication for <span style="color: red; font-weight: bold;">имя_вашего_профиля</span>...
The server has requested the following information to complete the user authentication:
Username [<span style="color: red; font-weight: bold;">Ваше_имя_в_домене_NT</span>]:
Password []:
Authenticating user.
Negotiating security policies.
Securing communication channel.
Your VPN connection is secure.
VPN tunnel information.
Client address: <span style="color: red; font-weight: bold;">Ваш_локальный_адрес</span>
Server address: <span style="color: red; font-weight: bold;">IP_адрес_вашей_Cisco</span>
Encryption: 168-bit 3-DES
Authentication: HMAC-SHA
IP Compression: None
NAT passthrough is active on port UDP 4500
Local LAN Access is disabled

Подключение успешно выполнено. Как видим туннель на удаленную сеть открыт и готов к транспорту пакетов. Отключение можно выполнить банальным сочетанием Ctrl+C или в другой консоли вводом команды разрыва соединения.

root# vpnclient disconnect

В другой консоли можно проверить ping любого адреса в удаленной сети. Можете запускать RDP, VNC или другую систему управления серверами или компьютерами. Адреса указывайте такие, как будто вы находитесь в домашней сети. Все это можно оформить аккуратней, но как всегда лень. Зато у вас будет желание сделать все красивее и качественней. Удачи с экспериментами.

http://www.qdesnic.ru/page/cisco_vpnclient.html

Решение проблем при размещении Cisco 7942G за NAT’ом

Весьма проблематично заставить работать телефон Cisco 7942 или Cisco 7962, если он находится за NAT-ом. Телефон не может выполнить регистрацию, а без этого не получится ни звонить, ни принимать звонки.

Проблема вызвана некоторыми особенностями в реализации SIP-стека на телефонах, которые интеграторы телефонии на Asterisk называют багами, а сами Cisco-разработчики называют фичей. Речь идет о инициирующих SIP-портах, которые начинаются с 49000.

При подключении из-за NAT, сервер Asterisk считает пир nat=yes устройством, из-за чего использует симметричный SIP/RTP и шлет ответы ровно на тот порт, с которого пришло соединение. Но на деле сама Cisco 7942 ждет ответа не на порту отправления, а на порту 5060, а точнее, на порту, указанном в <voipControlPort>. Из-за различия портов связь установить не удается, а сама Cisco 7942 упорно отвечает сообщениями типа ICMP Port Unreachable.

Решение проблемы:

1. (Опционально) Указать в теге <voipControlPort> порт, отличный от 5060. Например, 5091. Это связано с тем. что в дальнейшем мы этот порт будем пробрасывать на роутере.

2. Закрепить Cisco 7942 на статическом IP-адресе, либо присвоить статическую аренду на DHCP-сервере.

3. Прописать секцию
<natEnabled>false</natEnabled>
<natAddress></natAddress>

4. На сервере Asterisk в настройках экстеншена прописать опцию nat=no

5. На роутере, который пускает телефон в Интернет, прописать статический проброс UDP порта, который у вас указан в <voipControlPort> на внутренний IP телефона Cisco 7942G. Как правило, эта секция в веб-интерфейсе роутера называется «Virtual Server» или «NAT 1:1».

6. Перезагрузить телефон нажатием Settings-> **#**.
Убедиться, что телефон работает. Если чуда не случилось, то поможет разобраться в проблеме tcpdump. Возможно, будет иметь смысл игра с опиями nat=no и nat=never

* — Надо заметить, что IP может быть и динамическим. В этом случае нужно будет настроить роутер так, чтобы он обновлял динамическую DNS-запись, например, на сервисе DynDNS. Тогда в это поле вписывается FQDN-запись вида <natAddress>somename.dyndns.org</natAddress>. При этом нужно учитывать, что телефон резолвит это имя в IP всего один раз, при старте телефона. Если внешний IP изменится, телефон об этом не узнает, из-за чего будут наблюдаться проблемы односторонней слышимости или отсутствия регистрации.

 

Восстановление IP-фона Cisco 7942G

Cisco 7942G мне подарили товарищи по работе, за что им огромное спасибо и уважение! Угораздило же меня прошивать телефон на SIP-прошивку именно в тот момент, как скакнуло напряжение в офисе.. 8(( Телефон сдох.

После различных попыток восстановления телефона, он замолчал и уже не подавал никаких признаков жизни — на экране по появлялось никаких сообщений. Ни по команде 123456789*0#, ни по 3491672850*# восстановить телефон, с помощью местного TFTP-сервера и прошивок на нем, не удалось. (((

Пришлось менять стратегию.

Был запущен отдельный TFTP-сервер на DHCP с раздачей файла по протоколу BOOTP на Debian 5.0.6. Использовалось редкое в России устройство Synertron CV860A, с процессором VIA C3:

  • CPU VIA Eden/C3 376 PIN 1GHz,
  • PLE133 chipset, PC133 SDRAM memory,
  • 3x LANs, 2x Serial ports, 3x USB ports,
  • 50-pin bootable Compact Flash Disk Socket,
  • 1x DOC,
  • 1x 44-pin IDE,
  • and 1x 40-pin IDE.

 

Крайние правые порты (по порядку): eth0 и eth2.

Решение нашел благодаря статье на официальном сайте — http://www.cisco.com/en/US/ts/fn/620/fn62949.html

Вот содержание статьи:

Workaround:

Cisco recommends that customers stage their Cisco Unified IP Phones before deploying them to users. This allows Network Administrators to ensure:

— Each phone is upgraded to appropriate firmware releases.

— Properly configure the phone prior to deploying each phone

— The phone is assembled with the appropriate cables, handsets and optional headsets.

While staging the Network Administrator can perform additional activities such as factory resets, apply Dial Numbers and spot check phone functions.

Solution:

Cisco recommends the use of Firmware release 8.2(2)SR1 or later releases. This release and later versions are free of this defect. Registered users may obtain this release from the Cisco Unified IP Phone Firmware downloads (registered customers only) page. Select the proper load for your model of IP Phone.

Recovery of the IP Phone:

  1. Make sure your phones are on a network with a valid DHCP server.
  2. Make sure the DHCP server on this network has a valid Option 150 setting pointing to a valid Cisco TFTP server.
  3. Make sure you have a valid term11.default.loads file from load 8.2(2)SR1 or higher on the TFTP server that is referenced in Option 150.
  4. Make sure you have all other needed image files present on this same TFTP server. * See note below.
  5. Change the timing on the network — the problem is related to timing. Toggle switch port settings between «Auto» and «100Mbps.» On a Cisco switch the command to toggle the switch port switch:
    interface range fastethernet
    set speed 100
    set duplex full
    

    Wait 10 minutes, or until all the phones have been updated, then issue the following command if desired to return to original configuration:

    interface range fastethernet
    set speed auto
    set duplex auto
    

    Ensure that items 1 through 5 have been completed. If performing these five steps does not resolve the issue, continue with the remaining steps.

  6. Pull power on the phone (even if power is PoE).
  7. Hold down the # key on the phone.
  8. Continue holding down the # key and re-apply power.
  9. While still holding the # key wait for the Message Waiting Indicator (MWI) light on the handset to start flashing.
  10. Once the MWI light is flashing, release the # key and enter the following sequence exactly on the keypad:3491672850*#Once this sequence has been entered on the IP Phone, if all the network criteria above have been met, it should begin its recovery process. This process can take up to 15 minutes to finish. The phone may appear to be doing nothing during this time. However, if the phone does not recover after 20 minutes then it is possible that the recovery is stuck. In this case, re-examine your network and verify that steps 1-4 are in place, then re-issue the factory reset sequence.

* Note: The factory reset sequence is a way for a phone to clear flash and still upload to a valid firmware image. This is facilitated by the termxx.default.loads file, but requires that the image files listed in the termxx.default.loads file are available in TFTP for the phone to download. Open the termxx.default.loads file in any text editor. This loads file is essentially just a packing list showing all the OS and application files the phone needs to function. The files include a cnu, cvm, dsp, app and jar files. Please make sure that these files as listed in the termxx.default.loads file are in TFTP. («xx» will be either «06» for the CP-7906G model, or «11» for the CP-7911G model.)

Additional Diagnostic Steps:

— Try a hard-coded IP address as a test to see if this resolves the upgrade failures. If it does, and the number of failing IP Phones is relatively few, this procedure may be the most expedient. After the IP Phone upgrades successfully, reconfigure the IP Phone to use DHCP.

— Try putting the phone on a hub or a different switch and see if this helps change the startup timing enough so that the upgrade completes successfully.

***

Основная проблема возникла в пунктах 1-4, — не сразу удалось подобрать подходящую конфигурацию и заставить ее работать, ниже описываю положительный опыт создания такой конфигурации.

Первоначально пытался прописать DHCP option 150 на сервере Windows 2003 Server (позже подготовлю статью по этой теме), однако сразу не завелось, потому перешел на Debian.

IP-фон с помощью порта 10/100SW был подключен к свитчу, свитч подключен к серверу в порт eth0 (192.168.100.0/24), порт eth2 сервера (192.168.0.0/24) через еще один роутер, был подключен к интернету.

Итак, после установки операционной системы, был установлен TFTP-сервер:

apt-get install tftpd-hpa tftp-hpa
mcedit /etc/inetd.conf
#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
invoke-rc.d openbsd-inetd restart
chmod 777 /var/lib/tftpboot
echo TEST > /var/lib/tftpboot/test0
echo get test0 | tftp 127.0.0.1

Устанавливаем DHCP-сервер:

apt-get install dhcp3-server
mcedit /etc/dhcp3/dhcpd.conf

ddns-update-style none;

option option-150 code 150 = ip-address;

default-lease-time 3600;
max-lease-time 7200;

# eth2
subnet 192.168.0.0 netmask 255.255.255.0 {
}

# eth0
subnet 192.168.100.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.100.2 192.168.100.99;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.100.255;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option routers 192.168.100.1;
    option option-150 192.168.100.1;
}

host cisco7942 {
    hardware ethernet b8:be:bf:22:be:05;
#    filename "SEPB8BEBF22BE05.cnf.xml";
    filename "term42.default.loads";
}

log-facility local7;

 

Настройки DHCP-клиента:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "dhcp-server";
send dhcp-client-identifier 00:40:48:b1:7c:59;
send dhcp-lease-time 3600;

request subnet-mask, broadcast-address, time-offset, routers,
	domain-name, domain-name-servers, domain-search, host-name,
	netbios-name-servers, netbios-scope, interface-mtu,
	rfc3442-classless-static-routes;

timeout 360;

Файл /etc/defaults/dhcp3-server:

INTERFACES="eth0"

Настройки сети:

auto lo
iface lo inet loopback

iface eth0 inet static
	address 192.168.100.1
	netmask 255.255.255.0
	network 192.168.100.0
	broadcast 192.168.100.255
auto eth0

allow-hotplug eth2
iface eth2 inet static
	address 192.168.0.53
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.1
	dns-nameservers 192.168.0.1
auto eth2

Перезапуск сетевых настроек:

/etc/init.d/networking restart

Перезапуск DHCP-сервера:

/etc/init.d/dhcp3-server restart

Для пропуска трафика из подсети 192.168.0.0 в сеть 192.168.100.0, настраиваем NAT на IPtables, делаем скрипт ~/fw.start:

#!/bin/sh

INET="eth2"
INETIP="192.168.0.53"

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP

echo "1" > /proc/sys/net/ipv4/ip_forward

И запускаем его:

sh ~/fw.start

После этого трафик из сети 192.168.0.0 будет доступен и в 192.168.100.0.

Результаты работы проверяю с помощью tshark:

apt-get install tshark
tshark -i eth0

После всех манипуляций перезагружаем IP-фон, как описано в статье в пункте 10:

1. Зажимаем #.
2. Отключаем питание.
3. После того, как начинают мигать кнопки Line отжимаем #.
4. Набираем комбинацию 3491672850*# и ждем, пока с TFTP-сервера пойдет трафик в телефон.

На TFTP-сервере были размещены файлы одной из ранних прошивок:

# ls /var/lib/tftpboot/

apps42.8-5-2TH1-9.sbn
cnu42.8-5-2TH1-9.sbn
cvm42sip.8-5-2TH1-9.sbn
dsp42.8-5-2TH1-9.sbn
jar42sip.8-5-2TH1-9.sbn
SIP42.8-5-2S.loads
term42.default.loads
term62.default.loads
dialplan.xml
CTLSEPB8BEBF22BE05.tlv
SEPB8BEBF22BE05.cnf.xml
XMLDefault.cnf.xml

dialplan.xml:

<DIALTEMPLATE>
  <TEMPLATE MATCH="*" Timeout="3"/>
</DIALTEMPLATE>

SEPB8BEBF22BE05.cnf.xml (конфиг-файл от более поздней прошивки):

<device>
    <fullConfig>true</fullConfig>
    <deviceProtocol>SIP</deviceProtocol>
    <devicePool>
        <dateTimeSetting>
            <dateTemplate>D.M.Y</dateTemplate>
            <timeZone>Ekaterinburg Standard Time</timeZone>
            <ntps>
                <ntp>
                    <name>10.210.0.87</name>
                    <ntpMode>Unicast</ntpMode>
                </ntp>
            </ntps>
        </dateTimeSetting>
        <callManagerGroup>
            <tftpDefault>true</tftpDefault>
                <members>
                <member priority="0">
                <callManager>
                <name>77.243.103.107</name>
                <description>Asterisk</description>
                <ports>
                  <ethernetPhonePort>2000</ethernetPhonePort>
                  <sipPort>5060</sipPort>
                  <securedSipPort>5061</securedSipPort>
                </ports>
                <processNodeName>77.243.103.107</processNodeName>
                </callManager>
                </member>
                </members>
             </callManagerGroup>
    </devicePool>
    <commonProfile>
        <phonePassword></phonePassword>
        <backgroundImageAccess>true</backgroundImageAccess>
        <callLogBlfEnabled>0</callLogBlfEnabled>
    </commonProfile>
    <loadInformation>SIP42.8-5-4S</loadInformation>
    <loadInformation434  model="Cisco 7942">SIP42.8-5-4S</loadInformation434>
    <vendorConfig>
        <disableSpeaker>false</disableSpeaker>
        <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
        <pcPort>0</pcPort>
        <settingsAccess>1</settingsAccess>
        <garp>0</garp>
        <voiceVlanAccess>0</voiceVlanAccess>
        <videoCapability>0</videoCapability>
        <autoSelectLineEnable>0</autoSelectLineEnable>
        <daysDisplayNotActive>1,7</daysDisplayNotActive>
        <displayOnTime>10:30</displayOnTime>
        <displayOnDuration>06:05</displayOnDuration>
        <displayIdleTimeout>00:05</displayIdleTimeout>
        <webAccess>1</webAccess>
        <spanToPCPort>1</spanToPCPort>
        <loggingDisplay>1</loggingDisplay>
        <loadServer></loadServer>
    </vendorConfig>

<userLocale>
   <name>Russian_Russian_Federation</name>
   <uid></uid>
   <langCode>ru_RU</langCode>
   <version>8.4.3.1000-1</version>
   <winCharSet>utf-8</winCharSet> </userLocale>
<networkLocale>Russian_Federation</networkLocale>
 <networkLocaleInfo>
   <name>Russian_Federation</name>
   <uid></uid>
   <version>8.4.3.1000-1</version>
 </networkLocaleInfo>
    <deviceSecurityMode>1</deviceSecurityMode>
    <idleTimeout>0</idleTimeout>
    <directoryURL></directoryURL>
     <servicesURL>77.243.103.107</servicesURL>
     <idleURL></idleURL>
    <messagesURL></messagesURL>
    <proxyServerURL></proxyServerURL>
    <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
    <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
    <dscpForCm2Dvce>96</dscpForCm2Dvce>
    <transportLayerProtocol>2</transportLayerProtocol>
    <capfAuthMode>0</capfAuthMode>
    <capfList>
        <capf>
            <phonePort>3804</phonePort>
        </capf>
    </capfList>
    <certHash></certHash>
    <encrConfig>false</encrConfig>
    <sipProfile>
        <sipProxies>
            <backupProxy>77.243.103.107</backupProxy>
            <backupProxyPort>5060</backupProxyPort>
            <emergencyProxy>77.243.103.107</emergencyProxy>
            <emergencyProxyPort>5060</emergencyProxyPort>
            <outboundProxy>77.243.103.107</outboundProxy>
            <outboundProxyPort>5060</outboundProxyPort>
            <registerWithProxy>true</registerWithProxy>
        </sipProxies>
     <sipCallFeatures>
        <cnfJoinEnabled>true</cnfJoinEnabled>
        <callForwardURI>x--serviceuri-cfwdall</callForwardURI>
        <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
        <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
        <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
        <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
        <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
        <rfc2543Hold>false</rfc2543Hold>
        <callHoldRingback>2</callHoldRingback>
        <localCfwdEnable>true</localCfwdEnable>
        <semiAttendedTransfer>true</semiAttendedTransfer>
        <anonymousCallBlock>2</anonymousCallBlock>
        <callerIdBlocking>2</callerIdBlocking>
        <dndControl>0</dndControl>
        <remoteCcEnable>true</remoteCcEnable>
     </sipCallFeatures>
      <sipStack>
        <sipInviteRetx>6</sipInviteRetx>
        <sipRetx>10</sipRetx>
        <timerInviteExpires>180</timerInviteExpires>
        <timerRegisterExpires>3600</timerRegisterExpires>
        <timerRegisterDelta>5</timerRegisterDelta>
        <timerKeepAliveExpires>120</timerKeepAliveExpires>
        <timerSubscribeExpires>120</timerSubscribeExpires>
        <timerSubscribeDelta>5</timerSubscribeDelta>
        <timerT1>500</timerT1>
        <timerT2>4000</timerT2>
        <maxRedirects>70</maxRedirects>
        <remotePartyID>false</remotePartyID>
        <userInfo>None</userInfo>
     </sipStack>
     <autoAnswerTimer>1</autoAnswerTimer>
     <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
     <autoAnswerOverride>true</autoAnswerOverride>
     <transferOnhookEnabled>false</transferOnhookEnabled>
     <enableVad>false</enableVad>
         <preferredCodec>g711alaw</preferredCodec>
       <dtmfAvtPayload>101</dtmfAvtPayload>
       <dtmfDbLevel>3</dtmfDbLevel>
       <dtmfOutofBand>avt</dtmfOutofBand>
        <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
        <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
        <kpml>3</kpml>
        <stutterMsgWaiting>1</stutterMsgWaiting>
        <callStats>true</callStats>
        <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
        <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
        <startMediaPort>10100</startMediaPort>
        <stopMediaPort>10300</stopMediaPort>
        <voipControlPort>5060</voipControlPort>
        <dscpForAudio>184</dscpForAudio>
        <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
        <dialTemplate>dialplan.xml</dialTemplate>
         <phoneLabel>Cisco</phoneLabel>
          <natReceivedProcessing>false</natReceivedProcessing>
          <natEnabled>false</natEnabled>
          <natAddress></natAddress>
        <sipLines>
          <line button="1">
            <featureID>9</featureID>
            <featureLabel>672 L1</featureLabel>
            <proxy>77.243.103.107</proxy>
            <port>5060</port>
            <name>672</name>
            <displayName>672</displayName>
            <autoAnswer>
              <autoAnswerEnabled>2</autoAnswerEnabled>
            </autoAnswer>
            <callWaiting>3</callWaiting>
            <authName>672</authName>
            <authPassword>************</authPassword>
            <sharedLine>false</sharedLine>
            <messageWaitingLampPolicy>3</messageWaitingLampPolicy>
            <messagesNumber></messagesNumber>
            <ringSettingIdle>4</ringSettingIdle>
            <ringSettingActive>5</ringSettingActive>
            <contact>$ACCOUNT</contact>
            <forwardCallInfoDisplay>
              <callerName>true</callerName>
              <callerNumber>false</callerNumber>
              <redirectedNumber>false</redirectedNumber>
              <dialedNumber>true</dialedNumber>
            </forwardCallInfoDisplay>
          </line>
          <line button="2">
          <featureID></featureID>
          <featureLabel></featureLabel>
          <speedDialNumber></speedDialNumber>
          </line>
        </sipLines>
    </sipProfile>
</device>

XMLDefault.cnf.xml:

<Default>
    <callManagerGroup>
        <members>
            <member  priority="0">
                <callManager>
                    <ports>
                        <ethernetPhonePort>2000</ethernetPhonePort>
                    </ports>
                    <processNodeName>192.168.100.113</processNodeName>
                </callManager>
            </member>
        </members>
    </callManagerGroup>

 <loadInformation6  model="IP Phone 7910"></loadInformation6>
    <loadInformation124  model="Addon 7914"></loadInformation124>
    <loadInformation9  model="IP Phone 7935"></loadInformation9>
    <loadInformation8  model="IP Phone 7940"></loadInformation8>
    <loadInformation7  model="IP Phone 7960"></loadInformation7>
    <loadInformation20000  model="IP Phone 7905"></loadInformation20000>
    <loadInformation30008  model="IP Phone 7902"></loadInformation30008>
    <loadInformation30007  model="IP Phone 7912"></loadInformation30007>
   <loadInformation434  model="IP Phone 7942">SIP42.8-5-4S</loadInformation434>
</Default>

и пустой файл: CTLSEPB8BEBF22BE05.tlv

 

🙂

После всего этого, телефон восстановился.

Предстоит еще обновить прошивку с 8.5.2 до минимум 8.5.4 (для благополучно работы Cisco 7942 с Asterisk 1.4.39 у нас в конторе). Но это уже другая история.

 

2 gbit/sec SPAN Cisco export Netflow :)

Встала задача писать весь транзитный трафик с Cisco 6504, меня интересуют 2 гигабитных канала на интерфейсах Gi2/1 , Gi2/2. Можно было бы писать NetFlow напрямую с Cisco 6504, но на ней осуществляется нарезка полос (User Based Rate Limit microflow policy) совместно с которым экспорт в NetFlow не работает, поэтому будем извращаться :).

Для начала выгоним SPAN (копию интересующего меня трафика с Gi2/1 , Gi2/2 ) в два гигабитных порта Gi2/4 и Gi2/5.


!
vlan 100
!
!
interface Port-channel100
switchport
switchport access vlan 100
switchport mode access
!
interface GigabitEthernet2/4
switchport
switchport access vlan 100
switchport mode access
channel-group 100 mode on
!
interface GigabitEthernet2/5
switchport
switchport access vlan 100
switchport mode access
channel-group 100 mode on
!
monitor session 1 source interface Gi2/1 , Gi2/2
monitor session 1 destination interface Po100
!

Теперь необходимо определиться с инструментарием которым мы собираемся «ловить» поток и отдавать его в формате NetFlow.

На самом деле выбор не велик fprobe, ipcad, softflowd т. е. те вещи которые работают через pcap «умерли» сразу, попутно убив CPU сервера 🙂

Через ULOG iptables писать нельзя т. к. трафик не попадает ни в одну цепочку (ибо он не транзитный).

Нашелся один инструмент (ipt_netflow), но для его работоспособности в схеме со Span портом пришлось пропатчить ядро (здесь патченное ядро) и пропатчить сам модуль ipt_netflowустанавливать надо ipt_netflow (модуль iptables) и kmod-netflow-promisc (модуль ядра).

SPAN потоки приходят в сетевые адаптеры eth2 и eth3 сервера соответственно.

После установки этого чуда пишем в iptables


*raw
-A PREROUTING -i eth2 -j NETFLOW
-A PREROUTING -i eth3 -j NETFLOW
COMMIT

в /etc/modprobe.conf добавляем


options ipt_NETFLOW hashsize=160000 destination="127.0.0.1:2055"

результаты таковы, что при 1-1,5 gbit/sec трафика мы получаем следующую нагрузку на CPU
top

Tasks: 117 total, 1 running, 116 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni, 71.3%id, 0.3%wa, 0.0%hi, 28.3%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 69.5%id, 0.0%wa, 0.7%hi, 29.8%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni, 71.2%id, 0.0%wa, 0.3%hi, 28.4%si, 0.0%st
Cpu7 : 0.0%us, 1.0%sy, 0.0%ni, 68.2%id, 0.0%wa, 0.3%hi, 30.4%si, 0.0%st
Mem: 4044184k total, 2566136k used, 1478048k free, 485276k buffers
Swap: 2031608k total, 132k used, 2031476k free, 1622060k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
33 root 10 -5 0 0 0 S 2.7 0.0 32:41.04 events/7
1 root 15 0 10348 632 540 S 0.0 0.0 0:02.31 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.02 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:03.06 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.07 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:00.01 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/2

cat /proc/net/stat/ipt_netflow

Flows: active 354747 (peak 540458 reached 0d16h37m ago), mem 30486K
Hash: size 160000 (mem 1250K), metric 2.7, 2.2, 1.0, 1.0. MemTraf: 121088697 pkt, 75450911 K (pdu 5, 276).
Timeout: active 1800, inactive 15. Maxflows 2000000
Rate: 1382824352 bits/sec, 298823 packets/sec; Avg 1 min: 1367908158 bps, 296724 pps; 5 min: 1361329134 bps, 296061 pps
cpu# stat: , sock: , traffic: , drop: Total stat: 38000468809 22085636328 1231067128, 0 0 0 0, sock: 41023746 0 0, 58651136 K, traffic: 23316703456, 13030478 MB, drop: 0, 0 K
cpu0 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
cpu1 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
cpu2 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
cpu3 stat: 0 0 0, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 0, 0 MB, drop: 0, 0 K
cpu4 stat: 9502008868 5521585976 307793882, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5829379858, 3259408 MB, drop: 0, 0 K
cpu5 stat: 9495159604 5519723902 307727275, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5827451177, 3255443 MB, drop: 0, 0 K
cpu6 stat: 9500201467 5522411578 307754983, 0 0 0 0, sock: 0 0 0, 0 K, traffic: 5830166561, 3258689 MB, drop: 0, 0 K
cpu7 stat: 9503098870 5521914872 307790988, 0 0 0 0, sock: 41023746 0 0, 58651136 K, traffic: 5829705860, 3256938 MB, drop: 0, 0 K
sock0: 127.0.0.1:2055, sndbuf 33554432, filled 0, peak 140936; err: sndbuf reached 0, other 0

как видим трафик порядка 1.3 гбит/сек, 300 kpps 🙂

Вроде ничего не забыл.

http://centos.alt.ru/?p=367

Сброс пароля на Cisco 2960

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

1. Подключиться к коммутатору с помощью консольного кабеля COM-RJ45 и любого терминального клиента (SecureCRT, PuTTY, HyperTerminal) используя следующие параметры соединения: — бит в секунду (бод): 9600 — бит данных: 8 — четность: нет — стоп-бит: 1 — контроль передачи: Xon/Xoff

2. Подключить кабель питания к коммутатору.

3. В момент появления надписи Initializing Flash (индикатор SYST при этом мигает зеленым)…

Base ethernet MAC Address: 00:1a:a1:5c:42:00
Xmodem file system is available.
The password-recovery mechanism is enabled.
Initializing Flash...

…нажать кнопку Mode расположенную на передней панели коммутатора (индикатор SYST загорится оранжевым).

4. Появится приглашение на ввод команды:

flashfs[0]: filesystem check interrupted!
...done Initializing Flash.
Boot Sector Filesystem (bs) installed, fsid: 3

The system has been interrupted, or encountered an error
during initializion of the flash filesystem.  The following
commands will initialize the flash filesystem, and finish
loading the operating system software:

flash_init
load_helper
boot

switch:

5. В ответ на приглашение ввести команду flash_init

switch: flash_init
Initializing Flash...
flashfs[0]: 600 files, 19 directories
flashfs[0]: 0 orphaned files, 0 orphaned directories
flashfs[0]: Total bytes: 32514048
flashfs[0]: Bytes used: 8752128
flashfs[0]: Bytes available: 23761920
flashfs[0]: flashfs fsck took 10 seconds.
...done Initializing Flash.
Setting console baud rate to 9600...

switch:

6. Ввести команду load_helper

switch: load_helper

switch:

7. Ввести команду dir flash: Появится список файлов, содержащихся во flash-памяти коммутатора, среди них должен быть файл конфигурации – config.text.

switch: dir flash:
Directory of flash:/

3    -rwx  1981                     config.text
4    -rwx  1636                     vlan.dat
5    -rwx  5709294                  c2960-lanbasek9-mz.122-35.SE1.bin
6    drwx  128                      c2960-lanbase-mz.122-25.SEE2
619  -rwx  5                        private-config.text

23761920 bytes available (8752128 bytes used)

switch:

8. Ввести команду rename flash:config.text flash:config.text.old для переименования конфигурационного файла.

switch: rename flash:config.text flash:config.text.old

switch:

9. Ввести команду boot после чего начнется процесс загрузки IOS коммутатора. Необходимо дождаться окончания загрузки.

switch: boot
Loading "flash:c2960-lanbasek9-mz.122-35.SE1.bin"...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...
...
...
...
00:00:24: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to down
00:00:25: %SPANTREE-5-EXTENDED_SYSID: Extended SysId enabled for type vlan
00:00:46: %SYS-5-RESTART: System restarted --
Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(35)SE1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2006 by Cisco Systems, Inc.
Compiled Tue 19-Dec-06 10:50 by antonino

10. После окончания загрузки необходимо нажать Enter, на приглашение коммутатора.

Press RETURN to get started!

11. На все вопросы относительно автоустановки, запуска конфигурации коммутатора в режиме диалога, и всего прочего отвечать отказом no.

Would you like to terminate autoinstall? [yes]: no

--- System Configuration Dialog ---

Would you like to enter the initial configuration dialog? [yes/no]: no

Would you like to terminate autoinstall? [yes]: no
Switch>

12. Набрать enable для входа в привилегированный режим.

Switch>enable
Switch#

13. Ввести команду rename flash:config.text.old config.text для переименования конфигурационного файла, подтвердить переименование.

Switch#rename flash:config.text.old config.text
Destination filename [config.text]?
Switch#

14. Ввести команду copy flash:config.text system:running-config для копирования конфигурационного файла в область текущей конфигурации коммутатора, подтвердить.

Switch#copy flash:config.text system:running-config
Destination filename [running-config]?

1981 bytes copied in 0.336 secs (5896 bytes/sec)
sw00#

15. Заходим в конфигурационный режим conf terminal и меняем параметры авторизации и аутентификации. Для полного отключения аутентификации вводим no aaa new-model и no enable secret

sw00#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
sw00(config)#no aaa new-model
sw00(config)#no enable secret
sw00(config)#

16. Меняем пароль enable на стандартный cisco командой enable password cisco

sw00(config)#enable password cisco
sw00(config)#

17. Нажать Ctrl+Z для выхода из конфигурационного режима (либо набрать exit или end).

sw00(config)#^Z
sw00#

18. Набрать команду write memory для сохранения всех изменений.

sw00#write memory
Building configuration...
[OK]
sw00#

Все…готово:)))

Minicom

Мы будем пользоваться встроенным почти во все дистрибутивы эмулятором терминала minicom.

Для начала настроим программу будучи суперпользователем:

# minicom -l -8 -c on -s

Подробней о ключах, какие мы сейчас использовали :

-l - служит для отображения ANSI – графики (без нее будет некрасиво)
-8 - восьмибитный режим ввода для русского языка
-c on - включаем цветное отображение
-s - запускаем утилиту настройки minicom

«Настройка последовательного порта» – в этом меню мы выберем устройство (чаще всего при внешнем модеме на COM1 это /dev/modem или же /dev/ttyS0). Скорость задаем в соответствии с документацией на оборудование, к которому подключааемся.

  • Если используется бычный модем — 57600 бод, если подключаемся к сетевому оборудованию, например Cisco, то используется скорость 9600 бод.
  • Четность – нечетный.
  • Бит данных – 8.
  • Стоповый бит 1.

В minicom мы должны видеть строку «Скорость/Четность/Биты» как 9600 8N1.

Также обязательно разрешим опцию «аппаратное управление потоком» и соответственно откажемся от программного.

В повседневной жизни minicom нужно запускать со всеми ключами, кроме -s :

# minicom -l -8 -c on