Перегрузка CPU на Cisco Catalyst 3550

Комментарии ()

После настройки OSPF и BGP на Cisco Catalyst 3550 при прокачке трафика, загрузка CPU в районе 98%, железка начинает "тупить", возростают пинги... show processes cpu sorted показывает, что процесс IP Input кушает 70-90% CPU

Мне помогло сделующее

В режиме config включаем Cisco Express Forwarding (CEF). Это технология быстрой коммутации IP пакетов на третьем уровне модели OSI в маршрутизаторах и некоторых коммутаторах производства компании Cisco. В сравнении с предыдущими технологиями коммутации пакетов рассчитана на большие масштабы сети и часто меняющиеся маршруты.

catalyst#configure terminal
catalyst(config)#ip cef
catalyst(config)#exit

Включаем кеширование обработки дейтаграмм. Такой режим называется fast-switching. В таком режиме работы маршрутизатор запоминает маршрут в кеше и на следующий пакет в маршруте время уже не затрачивается.

Включается fast switching командой ip route-cache на интерфейсе, где включен policy routing. Для Catalyst 3550 команда "ip route cache" требует дополнительный параметр из списка:

catalyst(config-if)#ip route-cache ?
  cef             Enable Cisco Express Forwarding
  policy          Enable fast-switching policy cache for outgoing packets
  same-interface  Enable fast-switching on the same interface

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

interface Vlan15
 ip address XXX.XXX.180.40 255.255.254.0
 ip route-cache cef
 ip route-cache same-interface
 ip route-cache policy
 shutdown
!

Посмотреть таблицу кешированных маршрутов можно посмотреть с помошью команд sh ip cache
и sh ip cef

 

 


Читать далее

Мониторинг СISCO Catalyst 3550

Комментарии ()

Задача: мониторить процент загрузки CPU, количество свободной памяти, температуру железки

Мониторинг будем выполнять через SNMP, использую следующие OID'ы

.1.3.6.1.4.1.9.2.1.56.0 - загрузка CPU в среднем за за 5 секунд.
.1.3.6.1.4.1.9.2.1.57.0 - загрузка CPU в среднем за за 60 секунд.
.1.3.6.1.4.1.9.2.1.58.0 - загрузка CPU в среднем за 5 минут.
.1.3.6.1.4.1.9.2.1.8.0 - объем свободной памяти..1.3.6.1.4.1.9.5.1.2.13.0 — статус температуры (1 — нормальная, 2 — повышенная, 3 — критическая)

Пример конфига mrtg

 


Читать далее

Настройка SNMP в Cisco

Комментарии ()

Пример настройки SNMP для чтения и записи

snmp-server community public RO
snmp-server community write RW

Пример  настройки SNMP для чтения и записи с ограниченым доступа по ip

Создаем теперь список доступа в целях безопасности:

на чтение будет иметь доступ только адрес 192.168.0.11 

catalyst(config)#ip access-list standard SNMP_ACCESS_RO
catalyst(config-std-nacl)#permit 192.168.0.11

на запись будет иметь доступ только адрес 192.168.0.12 

catalyst(config)#ip access-list standard SNMP_ACCESS_RW
catalyst(config-std-nacl)#permit 192.168.0.12

конфигурация snmp сервера с ограниченым доступом по ip

snmp-server community public RO SNMP_ACCESS_RO
snmp-server community write RW SNMP_ACCESS_RW

 


Читать далее

CISCO Catalyst 3550 - настройка портов

Комментарии ()

Trunk

Канал типа trunk — это линия связи "точка-точка", по которой осуществляется отправка и получение трафика между несколькими коммутаторами или между коммутаторами и маршрутизаторами. По каналам типа trunk передается трафик из нескольких сетей VLAN, что позволяет расширить эти VLAN на всю сеть. В каналах типа trunk 100Base-T и Gigabit Ethernet используется по умолчанию протокол Cisco ISL или можно использовать протокол IEEE 802.1q для передачи трафика нескольких VLAN по одной линии связи.

Каналы, работающие по протоколу IEEE 802.1q налагают ряд ограничений на стратегию перераспределения каналов в сети.

  • Если native VLAN на одном канале отличается от native VLAN на другом конце, в результате могут возникнуть петли STP. Следовательно, native VLAN для канала 802.1q на обoих концах линии связи должны быть одинаковыми.
  • Если протокол STP отключен в native VLAN канала 802.1q и не отключен во всех остальных VLAN в сети, это потенциально может привести к возникновению петель STP. Рекомендуется оставить включенным STP в native VLAN канала 802.1q или отключить STP во всех VLAN в сети. Перед отключением STP убедитесь, что в сети отсутствуют петли.
  • В соответствии с передовой отраслевой практикой нужно оставить STP включенным, чтобы обеспечить возможность обнаружения петель, которые, в случае возникновения, могут вызвать серьезные сетевые проблемы.

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

interface Gi0/11
switchport mode trunk 
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 900,934


  1. переход в режим конфигурирования конкретного интерфейса(11-й порт)
  2. настраиваем порт как канал типа trunk.
  3. выбираем для интерфейса инкапсуляцию 802.1q ( или ISL ). В настройках на каждом конце канала типа trunk нужно задать один и тот же тип инкапсуляции. Если выбирается 802.1q, то нужно также выбрать VLAN по умолчанию 
  4. По умолчанию в транке разрешены все VLAN. Можно ограничить перечень VLAN, которые могут передаваться через конкретный транк. В даном случае разрешаем 900-й и 934-й vlan'ы

Добавление ещё одного разрешенного VLAN:

(config-if)# switchport trunk allowed vlan add 110

Удаление VLAN из списка разрешенных:

(config-if)# switchport trunk allowed vlan remove 110

 


Читать далее

CISCO Catalyst 3550 - настройка VLAN

Комментарии ()

Пример создания двух vlan'ов 100 и 101 с именем vlan100 и vlan101 соотвественно на cisco catalyst 3550

3550# config terminal
3550(config)# vlan 100
3550(config-vlan)# name vlan100
3550(config-vlan)# exit
3550(config)# vlan 101
3550(config-vlan)# name vlan101

Изменение названия VLAN'а:

3550(config-vlan)# name newname

Удаление VLAN'а:

3550(config)# no vlan 100

 


Читать далее

CISCO Catalyst 3550 - Базовая настройка

Комментарии ()

Подключение через com-порт в FreeBSD

cu -l /dev/cuad0 -s 9600

Установка пароля на enable режим

Switch> enable

Switch# configure terminal

Switch(config)# enable password my-secret-password

Установка пароля для входа по telnet (а также разрешаем вход по telnet)

Switch(config)# line vty 0 15

Switch(config-line)#password my-telnet-password

Switch(config-line)# login

Switch(config)# exit

Шифрование паролей, чтобы по sh run они не показывались в открытом виде

Switch(config)# service password-encryption

Устанавка имени устройства, например c3560G

Switch(config)# hostname c3560G

Устанавливаем IP-адрес 

c3560G(config)# interface vlan 1

c3560G(config-if)# ip address 192.168.1.2 255.255.255.0

c3560G(config-if)# exit

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

c3560G(config)# no ip domain-lookup

Зададим имя домена

c3560G(config)# ip domain-name my-domain.ua

Установка сервера точного времени

c3560G(config)# ntp server 192.168.1.1 version 2 source vlan 1

c3560G(config)# ntp clock-period 36029056

c3560G(config)# ntp max-associations 1

а используя «добавку» source vlan вы можете четко задать номер vlan с IP которого будет отправляться NTP запрос

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

Зададим переход с зимнего на летнее время и наоборот

c3560G# configure terminal

c3560G(config)# clock timezone MSK 3

c3560G(config)# clock summer-time MSD recurring last Sun Mar 2:00 last Sun Oct 2:00

Сделаем так, чтобы по команде show logging отображалось нормальное время, а не кол-во дней и т.п.

c3560G(config)# service timestamps log datetime localtime

Зададим дефолтовые настройки сразу всем портам на девайсе (у меня catalyst 24 порта + 4 SFP)

c3560G(config)# interface range gi 0/1 — 28

c3560G(config-if-range)# description not_used

c3560G(config-if-range)# shutdown

c3560G(config-if-range)# no cdp enable

c3560G(config-if-range)# switchport nonegotiate

c3560G(config-if-range)# switchport mode access

c3560G(config-if-range)# exit

Рекомендую: все неиспользуемые порты держать выключенными, а ещё лучше создать влан (например 999) и все выключенные порты переместить в него:

3560G(config)# vlan 999

 c3560G(config-vlan)# name unused_ports

 c3560G(config-vlan)# shutdown

 c3560G(config-vlan)# exit

 c3560G(config)# interface range gi 0/1 — 28

 c3560G(config-if-range)# description not_used

 c3560G(config-if-range)# shutdown

 c3560G(config-if-range)# no cdp enable

 c3560G(config-if-range)# switchport nonegotiate

 c3560G(config-if-range)# switchport access vlan 999

 c3560G(config-if-range)# switchport mode access

 c3560G(config-if-range)# exit

Выключим web-интерфейс, командная строка рулит 

c3560G(config)# no ip http server

Зададим gateway по умолчанию (допустим это будет 192.168.1.1, т.к. мы присвоили девайсу IP 192.168.1.2/255.255.255.0)

c3560G(config)# ip default-gateway 192.168.1.1

Если этот свич будет моддерживать маршрутизацию (будет router`ом), то включим функцию маршрутизации (если это позволяет сам девайс и его прошивка)

3560G прекрасно справляется с функцией маршрутизации

c3560G(config)# ip routing

c3560G(config)# ip classless

c3560G(config)# ip subnet-zero

необходимо задать gateway по умолчанию, но уже другой командой

c3560G(config)# ip route 0.0.0.0 0.0.0.0 192.168.1.1

Настроим access-list для доступа к свичу только с определенных IP-адресов

c3560G(config)# ip access-list standard TELNET

 c3560G(config-std-nacl)# permit 192.168.1.1

 c3560G(config-std-nacl)# permit 192.168.1.15

 c3560G(config-std-nacl)# exit

Применим этот access-list

c3560G(config)# line vty 0 15

 c3560G(config-line)# access-class TELNET in

Зададим timeout неактивности telnet сессии, по истечении указанного времени, если вы в консольке ничего не вводили, то telnet соединение будет автоматически закрываться

c3560G(config-line)# exec-timeout 5 0

 c3560G(config-line)# exit

Включим SNMP, но только read only (RO) и доступность только с хоста 192.168.1.1

c3560G(config)# snmp-server community RO-MY-COMPANY-NAME RO

 c3560G(config)# snmp-server trap-source Vlan1

 c3560G(config)# snmp-server source-interface informs Vlan1

 c3560G(config)# snmp-server location SWITCH-LOCATION

 c3560G(config)# snmp-server contact my-email@my-domain.ru

 c3560G(config)# snmp-server host 192.168.1.1 RO-MY-COMPANY-NAME

 c3560G(config)# exit

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

c3560G# copy running-config startup-config

или можно проще и короче

c3560G# wri

Если хочется включить на девайсе ssh, чтобы подключаться к cisco по ssh (если это позволяет установленный IOS), то выполним следущее:

а) Обязательно указываем имя домена (необходимо для генерации ключа) 

cisco(config)# crypto key generate rsa

cisco(config)# line vty 0 15

cisco(config)# transport preferred none

cisco(config)# transport input ssh

cisco(config)#transport output ssh

Подробнее по настройке ssh: Configuring Secure Shell on Routers and Switches Running Cisco IOS


Читать далее

__call или вызов рутинных методов в движке

Комментарии ()

В каждом объекте, который работает с БД, плодятся методы, которые я называю рутинными. Примеров тьма: getLoginById, getIdByLogin, getAliasByName. getNameById и так далее. Поскольку практически суть везде одна и таже (выполнить select с некой таблицы БД по некому признаку и вернуть value) я утвердил в своем движке стандарт вызова метода __call

Для начала договоримся, что в каждом классе, который унаследован от Core, должно присутствовать свойство $call, которое содержит ассоциативный масив следующего виду

  • table - название таблицы по умолчанию, с которой брать данные. Значение задается в конструкторе класса.
  • fields_private - масив с перечнем названия полей, доступ к которым через метод __call нужно закрыть

public function __call($methodName, $args)

$methodName - название несуществующего метода, которого мы вызываем

$args - массив параметров:

первый параметр - значение поля, по которому ищем запись в БД

второй параметр - название таблицы, если нету - используется $call['table']

Пример

В классе User вызываем не существующий метод getEnableById - в даном случаи мне нужно получить значени поля enable из таблицы users по значению поля id. В классе задано свойсто   protected $call = array('table' => 'users', 'fields_private' => array()); 

На самом деле я создал метод   getEnableById только ради автодополнения в IDE. Также методы следует задавать явно, если необходимо выполнить дополнительные действия. В этом примере выполняется проверка на существование  $id (если отсутствует, тогда присвоить  $_SESSION['user']['id'])

 

 public function getEnableById($id = '')
    {
        if ($id == '')
        {
            $id = $_SESSION['user']['id'];
        }
        return parent::__call(__METHOD__, $id);
    }

 


Читать далее

Сбор логов по сети

Комментарии ()

По умолчанию Syslogd не принимает логи по сети (в /etc/default/rc.conf прописано запускать syslogd с ключом -s, запрещающим принимать логи от внешних устройств)

Редактируем /etc/rc.conf

syslogd_enable="YES"
syslogd_program="/usr/sbin/syslogd"
syslogd_flags="-a 192.168.0.100  -C"
  • -a ключ, уведомляет syslogd принимать логи от устройства с адресом  192.168.0.100 (можно задавать доменное имя)
  • -C ключ, для создания лог-файла если он отсутствует (с правами 600)

Добавляем в /etc/syslog.conf

+192.168.0.100
*.* /var/log/router_192.168.0.100.log
-192.168.0.100

Если для IP-адреса  существует hostname то необходимо использовать его.

Перегружаем syslog и смотрим логи 

/etc/rc.d/syslogd restart

 


Читать далее

DirectAdmin Используемое дисковое пространство не отображается (Disk Usage 0.00)

Комментарии ()

DirectAdmin ведет подсчет используемого места на основе системных квот (system quotas). DirectAdmin запускает

/usr/sbin/repquota quota_partition

Значение quota_partition устанавливается в файле /usr/local/directadmin/conf/directadmin.conf. Запуск такой команды должен вывести большой набор чисел типа:

[root@server]# /usr/sbin/repquota /home 
 *** Report for user quotas on device /dev/hda3 
 Block grace time: 7days; Inode grace time: 7days 
 Block limits File limits 
 User used soft hard grace used soft hard grace 
 ---------------------------------------------------------------------- 
 root -- 417796 0 0 7446 0 0 
 nobody -- 4 0 0 1 0 0 
 bin -- 56880 0 0 510 0 0 
 majordomo -- 8 0 0 2 0 0 
 diradmin -- 8 0 0 2 0 0 
 admin -- 200 0 0 44 0 0 
 user123 -- 100 0 0 22 0 0 
 user456 -- 100 0 0 22 0 0

Если колонка "used" пуста или пользователей нет в списке, тогда вам требуется запустить программу quotacheck:

Redhat:

/sbin/quotaoff -a; /sbin/quotacheck -avugm; /sbin/quotaon -a;

FreeBSD:

/usr/sbin/quotaoff -a; /sbin/quotacheck -avug; /usr/sbin/quotaon -a;

Если "сыплются" ошибки или на выходе программы нет никаких значений, проверьте /etc/fstab и удостоверьтесь, что там есть строка rw,userquota,groupquota напротив партиции, для которой требуется подсчет квот.
*Важно: На Redhat, строка выглядит так: usrquota,grpquota, а на FreeBSD так: userquota,groupquota.

Пример /etc/fstab:

# Device Mountpoint FStype Options Dump Pass# 
 /dev/ad0s1a / ufs rw,userquota,groupquota 1 1 
 /dev/ad0s1e /tmp ufs rw 2 2 
 proc /proc procfs rw 0 0

В этом случае quota_partition является /. Именно тот раздел (партиция), на котором вы держите пользователей должен быть quota_partition. Обычно это /home, / или /usr.

Если программа repquota вернула нормальные значения, то вы можете запустить задачу подсчета (tally) юзерских квот для отображения правильных значений в DirectAdmin:

echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue

 


Читать далее

Форма

Комментарии ()

Form - один из самих больших моих класов. В чем собственно суть? Посколья я далеко не дизайнер, Bootstrap стал для меня как манна небесная в плане веб-строительства. Уже вышла третья версия, но я пока по прежнему на второй, так как треться еще сырая, да и вторая меня вполне устраивает.


Читать далее

Webit.in.ua 2013