Поиск по этому блогу

суббота, 15 октября 2016 г.

Cisco не удаляется vty сессия

Все началось с того, что не получилось сохранить конфиг. Плучаю ошибку
sw-ru-3#wr mem 
startup-config file open failed (Device or resource busy) 
Начал капаться, увидел странную vty сессию
sw-ru-3#sh users 
    Line       User       Host(s)              Idle       Location 
   1 vty 0     NCMuser    idle                 10w6d     192.168.0.33 
*  2 vty 1     admin      idle                 00:00:00  192.168.0.83 
Висит аж 10 недель да, давненьк не заходил
Перезагружать устройство не охото в середине рабочего дня, да и локация достаточно крупная и находится далеко. Пробуем очистить сессию через clear
sw-ru-3#clear line vty 0 
[confirm] 
[OK] 

Проверяем, но сессия все равно почему-то висит
sw-ru-3#sh users 
    Line       User       Host(s)              Idle       Location 
   1 vty 0     NCMuser    idle                 10w6d     192.168.0.33 
*  2 vty 1     admin      idle                 00:00:00  192.168.0.83 
Заглянем со стороны TCP на эту ситуацию
sw-ru-3#sh tcp brief 
TCB       Local Address           Foreign Address        (state) 
0031FEDC  192.168.0.247.22      192.168.0.83.53238        ESTAB
Тут почему-то одно наше лигитимное соединение.
Исследование cisco`s help на предмет clear, delete, no и т.п. команд натолкнуло на одну команду
sw-ru-3#disconnect ssh vty 0
После ее применения моя ssh сессия тут же закрылась (хотя она была на 1-ой линии), и перестало пинговаться устройство, что заставило немного напречься. Через некоторое время пинг и доступ к устройству восстановился. Аптайм не изменился. Пресловутая сессия пропала и коннфиг успешно сохранен.
sw-ru-3#sh ver | i uptime
sw-ru-3 uptime is 20 weeks, 4 days, 21 hours, 20 minutes
sw-ru-3#sh ver
Cisco IOS Software, C3750 Software (C3750-IPBASEK9-M), Version 12.2(55)SE8, RELEASE SOFTWARE (fc2)

Гугление по этому вопросу показало, что удаление vty сессия можно осуществить через ее TCB (Transmission Control Block). TCB представляет собой некую структуру которая содержит различные части данных, необходимых для установления соединения. Она содержит инфрмацию: о IP адресе, о порте, о состоянии соединения, о сокетах и т.д. Команда sh tcp brief предоставляет информацию о номере TCB (в моем случае это 0031FEDC). Удалить соединение по его TCB можно командой clear tcp tcb 0031FEDC.

Полезная инфрмация:
  • TCP Show Extension
  • Cisco IOS Configuration Fundamentals Command Reference
  • Clearing hung TCP session
  • Won’t Clear VTY session
  • RFC793 Протокол управления пересылкой - TCP
  • пятница, 9 сентября 2016 г.

    Syslog per host

    Дано:
    Имеется порядко 150 устройств (коммутаторы, файерволы, сервера, оптимизаторы трафика и т.д.), необходимо собирать с них логи по-хостово. Логи будут складываться в папку с текущей датой, храниться 100 дней и папки старше 100 дней удалаться. В качестве имен файлов должны выступать hostname устройств. Два дня "сегодня" и "вчера" файлы не архивированы, остальные в архивированном виде, причем каждый лог-файл архивируется отдельно. Web-морды нет.

    Решение:
    Сервер будем разворачивать на VMware, для него выделены ресурсы:
  • CPU - 1 процессор Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
  • Memory -2GB
  • HDD - 90GB

  • В качестве ОС будет использоваться Debian 8.2, а качетсве самого сборщика будет выступать штатный rsyslog (версия - 8.4.2). Диск размечен: 15GB выделено под корень и 75 GB под сами логи и примонтированы к /var.

    Необходимые настройки:
    # provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514

    ..........
    $FileOwner root
    $FileGroup root
    $FileCreateMode 0644 -> чтобы файл могли читать все пользователи
    $Umask 0022

    ..........
    #for dynamic create file per host
    $template DynFile,"/var/log/devices_logs/%$now%/%HOSTNAME%.log"

    ..........
    #for dynamic create file per host
    *.* ?DynFile


    Сам скрипт
    #!/bin/bash
    #определяем дату вчера и директорию "вчера"
    ydate=`date +%Y-%m-%d -d "yesterday"`
    #Запускаемархиватор. Каждый лог-файл в директории станет архивом.
    /usr/bin/find $1 /var/log/devices_logs/$ydate/ -exec /bin/gzip -9 {} \;
    #удаляем папки старше N дней (100)
    find /var/log/devices_logs -type d -mtime +100 -exec rm -rf {} \;

    Добавляем этот скрипт в крон, будем запускать его каждый день в 23:59
    59 23 * * * root /root/rotetion_log
    Если в качетсве имен фалов будут не hostname, а ip адрес, то в файле /etc/host необходимо создать запись вида ip address          hostname

    P.S. в день валится порядка 500-700МБ логов, сжимается все это дело где-то до 30-50МБ.
    P.P.S. здесь нет никакого секретного знания, просто заметка для себя. Оставляйте свои дополнения в комментариях, если где-то ошибся поправлю.

    Cisco Ironport невозможно установить соединение на HTTPS порт

    Используя в сети, в качестве прокси, Cisco IronPort столкнулся с такой проблемой.
    Обращаясь на порт 8888, в браузере получаем такую ошибку ERR_BAD_SSL_CLIENT_AUTH_CERT.

    В логах прокси она выгляди так:
    1471205494.766 0 136.y.x.18 TCP_DENIED/407 516 CONNECT tunnel://z.x.y.kz:8888/ - NONE/- - OTHER-NONE-Cusctomer_Identities_name-NONE-NONE-NONE-NONE <-> -

    В Web Tracking это выглядело так:

    Идем в Web Security Manager - Access Policies находим Global Policy


    Нажимаем на No blocked items и в поле HTTP Connect Ports дописываем требуемый нам порт, конкретно 8888

    После добавления порта, результат в Web Tracking изменился и сайт соответственно успешно открывается. На рисунке можно заметить, что в поле policy теперь стоит Allow, да и трафик уже не нулевой.



    вторник, 19 июля 2016 г.

    Juniper настройка dot1x authentication

    protocols {
        igmp-snooping {
            vlan all;
        }
        dot1x {
            authenticator {
                authentication-profile-name dot1x-profile;
                no-mac-table-binding;
                interface {
                    dot1x-interface {
                        supplicant multiple;
                        quiet-period 3;
                        transmit-period 3;
                        mac-radius;
                        reauthentication 3600;
                        supplicant-timeout 5;
                        server-timeout 1;
                        maximum-requests 3;
                    }
                }
            }
        }
    }
    ..........
    access {
        radius-server {
            10.10.10.1 {
                port 1812;
                secret "secret password"; ## SECRET-DATA
            }
            10.10.10.2 {
                port 1812;
                secret "secret password"; ## SECRET-DATA
            }
        }
        profile dot1x-profile {
            authentication-order radius;
            radius {
                authentication-server [ 10.10.10.1 10.10.10.2 ];
            }
        }
    }

    http://www.juniper.net/techpubs/en_US/junos15.1/topics/example/802-1x-pnac-ex-series-connecting-server-configuring.html
    http://www.juniper.net/techpubs/en_US/junos15.1/topics/example/802-1x-pnac-single-supplicant-multiple-supplicant-configuring.html
    https://www.juniper.net/techpubs/en_US/junos16.1/topics/task/configuration/802-1x-interface-settings-ex-series-cli.html
    http://www.juniper.net/documentation/en_US/junos15.1/topics/task/configuration/802-1x-accounting-cli.html
    http://www.juniper.net/techpubs/en_US/junos15.1/topics/example/802-1x-pnac-radius-attribute-ex-series.html
    http://www.juniper.net/documentation/en_US/junos14.1/topics/task/configuration/802-1x-authentication-j-web.html

    пятница, 10 июня 2016 г.

    cat выявление "неправильных" символов

    Вобщем-то ничего нового, все описанов man`е.
    Итак необходимо в текстовом файле выловить скрытые CR/LF, наличие русских букв и т.д.

    cat -AEeTt показывает непечатные символы, символы конца строки и табуляции

    Немного подробнее по опциям:
  • A - показывает все невидимые символы
  • E - показывает символы конца строки
  • e - показывает непечатаемые символы плюс символ конца строки
  • T - показывает символ табуляции
  • t - показывает непечатаемые символы плюс символ табуляции


  • Дополнительно полезно так же будет испльзовать:
  • b - нумерует непустые строки
  • n - нумерует все строки


  • Выловить русскиме фимволы поможет такая команда cat <файл> | grep -ce [а-Я], если больше 0 значит есть кирилица
  • c - выдает только количество строк, содержащих образец
  • e - может использоваться для указания нескольких критериве поиска, или для защиты шаблона начинающего на -

  • Если необходимо узнать наличие кириллических символов в linux системе, в которой отсутствует поддержка сооветсвующей локали, то можно использолвать следующую команду cat <файл> | grep -ce [^a-zA-Z0-9] . P.S. хотя они будут отображаться знаками ? или другими некорректными символами.

    Полезные ссылки:
    man grep
    man cat
    grep на русском
    cat на русском
    полезно и интересно про grep
    полезно и интересно про cat

    суббота, 4 июня 2016 г.

    Cisco/Juniper Commands


    Cisco CommandJuniper CommandОписание
    show runsh configurationПоказывает рабочую конфигурацию 
    sh versh verПоказывает версию
    show ip interface briefshow interface terseпоказывает кратко статус интерфейсов
    show interface [type slot/port]show interfaces [type slot/port] detailпоказывает статус и статистику по интерфейсам
    show controller show interfaces intfc extensiveОтображает информацию о физических портах устройства
    show interface descriptionshow interfaces descriptionотображает настройки интерфейса, статус 
    show ip routeshow routeОтображает общую информацию о содержании роутинг таблицы
    show ip bgp summaryshow bgp summaryотобраает информацию о всех BGP соединениях
    show ip bgp net maskshow route protocol bgp prefixПокажет как этот  маршрут рекламируется
    show ip bgp net mask longer-prefixesshow route range prefixПокажет как этот  маршрут рекламируется
    show ip bgp regexp AS-regexpshow route aspath-regexp "AS-regexp"отображает маршруты соответствующие выражению AS path
    show ip bgp neighbors neigh received-routesshow route receive-protocol bgp neigh

    show route source-gateway neigh protocol bgp
    Показывает, поддерживает ли сосед возможность обновления маршрута
    show ip bgp neighbor neigh advertised-routesshow route advertising-protocol bgp neighПоказывает, поддерживает ли сосед возможность обновления маршрута
    show clns neighborsshow isis adjacencyотображает ES и IS соседов
    show clns interfaceshow isis interfaceshows specific information about each interface
    show ip route isisshow isis routesотображает текущее состояние таблицы маршрутизации
    show isis topologyshow isis spfотображает список всех подключенных маршрутизаторов во всех областях
    show ip ospf interfaceshow ospf neighborпоказывает ID  соседа, приоритет, IP
    show ip ospf databaseshow ospf databaseОтображение списка информации, относящейся к базе данных OSPF для конкретного  сервера
    show versionshow version, show system uptimedisplay the system hardware config., software version, and name and source of configuration files and boot images
    show diagsshow chasis hardwareотображает диагностическую информацию
    show processes cpushow system processотображает загрузку
    show tech-supportrequest support infoотображает текущий образ ОС, память, буферы и различную системную информацию
    show loggingshow log messagesотображает состояние системы логирования
    show route-map nameshow policy nameотображает настроенные route-maps
    show ip prefix-list nameshow policy nameотображает информацию о префиксах
    show ip community-list listconfigure,
    show policy-options community name
    отображает маршруты, разрешенные в BGP
    show environment allshow chassis  environmentотображает информацию по температуре и вольтажу
    ping destping dest rapid (for cisco like output)
    ping dest (for unix like output)
    ping
    ping (setting source int)ping dest bypass-routingеще ping
    terminal monitormonitor start messagesПозволяет отображать сообщения системы логирования в консоли
    terminal no monitormonitor stopотменяет прдыдущее
    terminal length 0set cli screen-length 0sets the length for displaying command output


    Полезные ссылки:
    Cisco show commands
    Cisco Tech-Support Commands
    Juniper show configuration
    Junos OS CLI Operational Mode Commands
    Juniper CLI User Guide

    Junos: директории, конфигурационные файлы и работа с ними

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

    Для того, чтобы candidate конфигурация "заработала" ее необходимо зафиксировать (команда commit). В этот момент происходит проверка правельности синтаксиса, если ошибок в синтаксисе нету, то файл активируется и помечается текущий (рабочий) конфигурационный файл операционной системы. Дополнительно к текущему конфигурационному файлу (version 0) хранит еще 49 ранее сохраненных конфигурационных файлов.

    По умолчанию Juniper хранит текущую и 3-и предыдущие конфигурации в CompactFlash, текущая конфигурация хранится в файле juniper.conf.gz в директории /config. Оставшиеся 46 конфигураций (с 4 по 49) хранятся в директории /var/db/config в основной памяти.

    Во время загрузки Juniper работает с предопределенным конфигурационным файлом. Устройство выбирает конфигурационный файл используя Configuration Selection Sequence




  • /config/juniper.conf - Активная конфигурация
  • /config/rescue.conf — "Спасательная" конфигурация. Создается вручную
  • /config/juniper.conf.1 — Первая запасная конфигурация
  • /etc/config/factory.conf — Конфигурация по умолчанию (заводская). После загрузки с заводской конфигурацией, доступ к устройству возможен только через консоль.


  • Небольшой список что и где хранится в Junos OS (относительно конфигурационных файлов):

  • директория: /config - файл juniper.db храни общую candidate database
    файл rescue.gz - спасательная конфигурация
    файлы с juniper.conf.1.gz по juniper.conf.3.gz - предыдущие конфигурации
  • директория: /var/run/db - файл juniper.data закоммиченный config database(т.е. активная конфигурация)
    файл juniper.data+ - копия candidate db, используется во время проверки корректности конфига (commit check), затем становится juniper.data
    файл juniper.conf+.gz - это candidate конфигурация, существует только во время commit
    файлы с juniper.conf.4.gz по juniper.conf.49.gz - предыдущие конфигурации


  • Копировать файлы (лог-файлы, файлы конфигурации, обновления прошивки и т.д.) с/на джунипер извне можно использую ftp, scp. На джунипере можно включить ftp сервер командой set system service ftp, после этого к нему можно подключаться любым ftp клиентом (к примеру WinSCP, FileZilla и т.д.). Можно работать с файлами и через командную сторку из операционного режима.

    Просмотр содержания директорий используется команда list, копировать файлы можно командой file copy <источник> <назначение> (file copy /config/juniper.conf ftp://user@hostname/juniper.conf), просмотреть, к примеру, логи можно show log <имя файла> (все команды выполняются из оперативного режима)
    - в деректории пользователя
    user@host> file list
    .ssh/
    common
    - в директории /config/db/config
    user@host> file list /config/db/config
    juniper.conf.4.gz
    .....
    juniper.conf.49.gz
    - получение контекстной помощи
    user@host> file list /?
    Possible completions:
    <[Enter]> Execute this command
    Path to list
    /COPYRIGHT Size: 6355, Last changed: Feb 13 2005
    /altconfig/ Last changed: Aug 07 2007
    /altroot/ Last changed: Aug 07 2007
    /bin/ Last changed: Apr 09 22:31:35
    /boot/ Last changed: Apr 09 23:28:39
    /config/ Last changed: Apr 16 22:35:35
    /data/ Last changed: Aug 07 2007
    /dev/ Last changed: Apr 09 22:36:21
    /etc/ Last changed: Apr 11 03:14:22
    /kernel Size: 27823246, Last changed: Aug 07 2007
    /mfs/ Last changed: Apr 09 22:36:49
    /mnt/ Last changed: Jan 11 2007
    /modules/ Last changed: Apr 09 22:33:54
    /opt/ Last changed: Apr 09 22:31:00
    /packages/ Last changed: Apr 09 22:34:38
    /proc/ Last changed: May 07 20:25:46
    /rdm.taf Size: 498, Last changed: Apr 09 22:37:31
    /root/ Last changed: Apr 10 02:19:45
    /sbin/ Last changed: Apr 09 22:33:55
    /staging/ Last changed: Apr 09 23:28:41
    /tmp/ Last changed: Apr 11 03:14:49
    /usr/ Last changed: Apr 09 22:31:34
    /var/ Last changed: Apr 09 22:37:30




    Стандартные директории в Junos OS

    Директория
    Описание
    /config
    Эта директория распалагается во внутренные flash памяти. В ней хранится текущая конфигурация и три предыдущие (1,2,3)
    /var/db/config
    Эта директория хранится в основной памяти и содержит конфигурационные файлы с 4 по 49
    /var/tmp
    Эта директория располагается в основной памяти. Содержит файлы, генерируемые  различными  процессами  Routing Engines.  Они генерируются когда процесс крашится и могут использоваться для диагностики неполадок.
    /var/log
    Эта директория располагается в основной памяти. Содержит файлы сгенерированные функцией логирования (команда traceoptions)
    /var/home
    Эта директория располагается в основной памяти. Домашняя директория по умолчания для каждого нового пользователя
    /altroot
    Эта директория располагается в основной памяти. Содержит копию корневой файловой структуры из  flash памяти. Используется в режиме аварийного восстановления, когда flash память не работает.
    /altconfig
    Эта директория располагается в основной памяти. Содержит копию /config файловой структуры.  Используется в режиме аварийного восстановления, когда flash память не работает.


    Полезные ссылки:
    Understanding How the Junos OS Configuration Is Stored
    Configuration File Selection Sequence
    Viewing Files and Directories on a Device Running Junos OS
    Default Directories for Junos OS File Storage on the Router or Switch
    Syntax file copy