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

четверг, 31 декабря 2015 г.

горячие клавиши MC

Клавиатурные сочетания выбираются модификаторами. В mc используются модификаторы:
Ctrl - Клавиша "Ctrl";
Meta - Клавиша ""Alt", или "Meta", такде может быть заменена однократным нажатием "Esc"
Shift - Клавиша "Shift",


Горячие клавиши для файловых панелей


Insert
Выделение текущего объекта
+
вызывает окно для выделения группы файлов (можно использовать регулярные выражения)
\
снимает отметку с группы файлов (действие, обратное тому, которое вызывается по клавише +)
Meta+.
не показывать или показать скрытые файлы или каталоги (начинаются на точку '.')
Meta+,
Переключить режим отображения панелей (вертикально/горизонтально)2
Meta+a
Посылает в командную строку полный путь в текущей активной панели
Meta+c
Вызывается меню быстрой смены текущего каталога на активной панели
Meta+h
Вызов меню последних выполненных команд (также историю вызванных команд можно посмотреть в файле /root/.local/share/mc/history)
Meta+i
Смена текущего каталога на неактивной панели, на каталог в котором вы находитесь в активной панели
Meta+j
отмечает последний файл или каталог в отображаемом списке на панели
Meta+o
неактивная панель переходит в каталог на который указывает активная панель
Meta+p
Вернуть предыдущую выполненную командную строку
Meta+t
Смена режима работы панели ('Стандартный','Укороченный','Расширенный')
Meta+Shift+?
Вызывается меню расширенного поиска файлов
Meta+Shift+A
Посылает в командную строку полный путь в нективной панели
Meta+Shift+H
Отобразить историю каталогов
Ctrl+\
Вызывается меню часто используемых каталогов
Ctrl+o
Скрытие/показ панелей
Ctrl+r
перечитать содержимое каталога
Ctrl+s
Быстрый поиск файла или каталога
Ctrl+Space
Показать размер текущего каталога
Shift+F3
Просмотр файла raw без учета расширения
Shift+F4
Создает новый файл
Ctrl+Space
Показывает размер папки











Горячие клавиши для редактора


F3
Начать выделение текста. Повторное нажатие F3 закончит выделение
Shift+F3
Вертикальное выделение текста
F5
Скопировать выделенный текст (в этом же файле)
F6
Переместить выделенный текст (в этом же файле)
F8
Удалить выделенный текст
Meta+l
Переход к строке по её номеру
Meta+t
Сортировка строк выделенного текста
Meta+u
Выполнить внешнюю команду и вставить в позицию под курсором её вывод
Ctrl+f
Занести выделенный фрагмент во внутренний буфер обмена mc (для копирования в другие файлы) (содержимое буфера обмена можно посмотреть /root/.local/share/mc/mcedit/mcedit.clip)
Ctrl+k
Удалить часть строки до конца строки
Ctrl+s
Включить или выключить подсветку синтаксиса
Ctrl+t
Выбрать кодировку текста
Ctrl+u
Отменить действия
Ctrl+x
Перейти в конец следующего
Ctrl+y
Удалить строку
Ctrl+z
Перейти на начало предыдущего слова
Shift+F5
Вставка текста из внутреннего буфера обмена mc
Meta+Enter
Диалог перехода к определению функции
Meta+n
Включение/отключение отображения номеров строк
Meta+Shift+-
Переключение режима отображения табуляций и пробелов


За более подробной информацией обращайтесь на официальный сайт midnight-commander.org

Ошибка при сбросе пароля на Cisco 2960 (No such file or directory)

Имеется в распоряжении коммутоар Cisco 2960G. Пароли от него никто не помнит. Следуя инструкции по сбросу пароля от Cisco, производим эту несложную процедуру.

При переименовании файла config.old, я допустил ошибку в имени нового файла, да и терминал внес свою лепту. Причем в "рековери режиме" эта ошибка видна не в полное мере
Switch: dir flash:
Directory of flash:/

    2  -rwx  2072                     multiple-fs
    3  -rwx  944                      vlan.dat
    4  -rwx  3555                     private-config.text
    5  -rwx  15524                    confug.old
    6  drwx  512                      c2960s-universalk9-mz.122-55.SE5
И если попробовать дальше рабоать с этим неправильным файлом confug.old. то выдается ошибка типа: "No such file or directory"
Решил загрузилтя в обычном режиме с этим неправильно названным конфиг файлом.

Тут имя конфигурационного файла выглядит немного иначе, появились какие-то непечатные спец. символы confug.old^[[D^[[D^[[D^[[D^[[i.
Switch#dir flash:
Directory of flash:/

    3  -rwx         944   Aug 9 2013 12:28:44 +00:00  vlan.dat
  585  -rwx        1048   Mar 1 1993 00:02:33 +00:00  multiple-fs
    4  -rwx       15524  Oct 25 2013 10:42:25 +00:00  confug.old^[[D^[[D^[[D^[[D^[[i
    5  drwx         512   Mar 1 1993 00:16:05 +00:00  c2960s-universalk9-mz.122-55.SE5
Попытки полностью скопировать это странное имя и переименовать (или хотя бы удалить) его обратно в правильный вид результата не дали
Switch#rename flash:confug.old^[[D^[[D^[[D^[[D^[[i flash:config.old
Rename filename [confug.old^[[D^[[D^[[D^[[D^[[i]?
Rename flash:confug.old^[[D^[[D^[[D^[[D^[[i? [confirm]
%Error renaming flash:confug.old^[[D^[[D^[[D^[[D^[[i (No such file or directory)
Уже почти растроился, пока не решил попробовать допольнить это странное имя TAB-об и неожиданно все получилось
Switch#rename flash:confug.old^[[D^[[D^[[D^[[D^[[i flash:config.old
Rename filename [confug.old^[[D^[[D^[[D^[[D^[[i]?
Rename flash:confug.old^[[D^[[D^[[D^[[D^[[i? [confirm]
Switch#dir
Directory of flash:/

    3  -rwx         944   Aug 9 2013 12:28:44 +00:00  vlan.dat
  585  -rwx        1048   Mar 1 1993 00:02:33 +00:00  multiple-fs
    4  -rwx       15524  Oct 25 2013 10:42:25 +00:00  config.old
    5  drwx         512   Mar 1 1993 00:16:05 +00:00  c2960s-universalk9-mz.122-55.SE5


После чего успешно завершил процедуру сброса пароля

Будте внимательны в работе, не допускайте ошибок и пользутесь TAB-ом :)

вторник, 22 декабря 2015 г.

Linux операторы перенаправления

Оператор перенаправления Действие
> Создает стандартный файл содержащий стандартный вывод (stdout). Если указанный файл существует, то он перезаписывается.
>> Добавляет стандартный вывод к существующему файлу. Если указанный файл не существует, то создает его
2> создает файл содержащий стандартный вывод ошибок (stderr). Если указанный файл существует, то перезаписывает его.
2>> Добавляет stderr к существующему файлу. Если указанный файл не существует, то создает его.
&> Создает новый файл содержащий stdout и stderr. Если указанный файл существует, то перезаписывает его
< Посылает содержимое указанного файла, для использования как стандартный вход (stdin)
<< Принимает текст в следующих строках, как stdin
<> Указанный файл будет использоваться как stdin и stdout

среда, 12 августа 2015 г.

Juniper interface disable

Если вы отключили интерфейс командой set interface inteface-name disable, то чтобы его включить (удалить disable) необходимо просто выполнить delete interface inteface-name disable

Кроме команды delete можно так же использовать команду deactivate, что бы игнорировать конретную часть конфигурации, сохраняя исходную конфигурацию. Команда activate, позволяет вернуть к использованию ранее игнорируемые части конфигурации.

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

понедельник, 10 августа 2015 г.

Обновление радиуса с версии 2.1 до версии 2.2

Имеется основной радиус сервер на базе Debian 7.8 и Freeradius 2.1.12 (настраивался давно человеком. который больше не работает), необходимо поднять backup сервер с аналогичной конфигурацией. Будит использоваться Debian 8.1 Freeradius 2.2.5, все устанавливается из стандартных репозиториев.

!Прежде, чем производить, какие-либо изменения в конфигурационных файлах, необходимо остановить сервис freeradius. Если это не сделать то при перезапуске может появиться примерно примерно такая ошибка: ExecStart=/etc/init.d/freeradius start (code=exited, status=1/FAILURE). Лечиться убиванием радиуса через kill, возвращением измененых файлов в исходное состояние и запуском сервиса снова.
Замечание может несколько наивное и явное, но в ubuntu 14.01 можно было менять конфиг не останавливая радиус. И при последующем перезапуске никаких ошибок не вылезало.

Перенесли конфиг, запустили радиус в дебаг режиме (freeradius -X), затем запустили сервис - ошибок ненаблюдается, создали тестового юзера, запустили radtest (radtest testing password localhost 0 testing123). Проблем не наблюдалось. Т.к. freeradius используется для аутентификации про протоколу 802.1X и MAB, а пользователи хранятся в файлах, то необходимо привести имена и mac-адреса к нормализованному виду.

Как об этом пишет freeradius:
NAS usually send the MAC address in the Calling-Station-ID attribute. There are several common formats: 00:11:22:33:44:55 00-11-22-33-44-55 0011.2233.4455 upper-case hex lower-case hex


И если при настройке радиуса версии 2.1 вы поудаляли все лишние модули и настройки, к ним относящиеся (как в моем случае), то вероятнее получите ошибку о том, что Login Invalid. В логах появляется такая ошибка: WARNING: Unknown module "tolower" in string expansion "%".

Freeradius к релизу 2.2.1 пишет:
rlm_expr is now responsible for registering many of the xlat expansions. This is cleaner than bundling them all in the server core. You should ensure 'expr' is listed in instantiate to ensure correct operation of xlat expansions.
Т.е. что бы корректно работала трансформация hostname и mac-адресов необходимо явно указать модуль expr в основном конфигурационном файле радиус сервера

Добавляем модуль expr в /etc/freeradius/modules, в файл /etc/freeradius/radiusd.conf добавляем секцию
instantiate { 
     expr 
}
. Перезапускаем и аутентификация прекрасно работает.

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

Как удалить пакеты помеченные dpkg как rc

После удаления пакетов у него может остаться всякий "мусор".
Посмотреть списсок всех доступных пакетов в системе можно командой dpkg -l
Перечислить файлы, принадлежащие пакету dpkg -L cntlm
# dpkg -L cntlm
/.
/etc
/etc/cntlm.conf
/etc/default
/etc/default/cntlm
/etc/init.d
/etc/init.d/cntlm
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/cntlm.1.gz
/usr/share/doc
/usr/share/doc/cntlm
/usr/share/doc/cntlm/README.gz
/usr/share/doc/cntlm/copyright
/usr/share/doc/cntlm/changelog.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/cntlm
/usr/sbin
/usr/sbin/cntlm

Найти пакет, которому принадлежит файл dpkg -S
# dpkg -S cntlm.conf
cntlm: /etc/cntlm.conf

dpkg -l выводит список пакетов, начинающиеся с различных двухбуквенных сочетаний.
ii  wireless-tools                  30~pre9-8ubuntu1     amd64                Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                   2.1-0ubuntu4         amd64                client support for WPA and WPA2 (IEEE 802.11i)
rc  x11-common                      1:7.7+7ubuntu2       all                  X Window System (X.Org) infrastructure
ii - пакет установлен (все в порядке)
rc - означает, что пакет удален, но остались какие-то конфигурационные файлы
Чтобы выбрать и удалить данные пакеты можно выполнить команду
# dpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge

Что бы посмотреть в каком "статусе" находятся пакеты, исключив пакеты со "статусом" ii. можно выполнить команду dpkg --list | grep "^[^ii]"

понедельник, 29 июня 2015 г.

Ubuntu обновление пакетов

Будит описано банальное обновление пакета/ов, по которому есть сотни мануалов и HOWTO. Для продвинутых пользователей ничего нового и интересного, наоборот, может присутствовать некоторый дискомфрт от написанного :). Но т.к. опыт работы с убунту небольшой мне пришлось углубиться в чтение манов.
Итак имеется
#uname -a
Linux atos-pc 3.16.0-23-generic #31-Ubuntu SMP Tue Oct 21 17:56:17 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Потребовалось обновить ядро (вышел новый релиз безопасности, той же ветки) и некоторых пакетов (все по той же причине).

Перед каждым обновлением или установкой пакетоврекомендуется делать apt-get update

В Ubuntu обновить пакет можно несколькоими способами:
-apt-get upgrade - Обновляется все установленные пакеты или пакет (если указан) и его зависимости. Установленные пакеты не удаляются. Новые версии уже установленных пакетов, которые не могут быть обновлены без изменения статуса установки другого пакета останутся в своей текущей версии.
-apt-get dist-upgrade - впринципе тоже, что и upgrade только более "умно" работает с зависимостями и может удалять пакеты
-apt-get install <имя пакета> - обновит только конкретный пакет до более свежей версии
-apt-get install --only-upgrade - делает тоже, что и предыдущий. Обновляет только конкретный пакет, никакие зависимсоти не трогает (в чем разница так и не понял). (данным способом и производил обновление)

Мне пригодилась такая конструкция, для понимания в каком состоянии окажется система после обновлени тем или иным способом
apt-get -o APT::Get::Simulate=Yes -o APT::Get::Show-Upgraded=Yes <способ> <имя пакета>
# apt-get  -o APT::Get::Simulate=Yes -o APT::Get::Show-Upgraded=Yes dist-upgrade curl
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Расчёт обновлений…Готово
НОВЫЕ пакеты, которые будут установлены:
  linux-headers-3.16.0-41 linux-headers-3.16.0-41-generic linux-image-3.16.0-41-generic linux-image-extra-3.16.0-41-generic
Пакеты, которые будут обновлены:
  apport bind9-host bsdutils ca-certificates cgmanager command-not-found command-not-found-data cpio curl dbus dnsutils dpkg e2fslibs e2fsprogs file fuse gir1.2-gtk-3.0 gnupg gpgv isc-dhcp-client
  isc-dhcp-common krb5-locales landscape-common libbind9-90 libblkid1 libc-bin libcgmanager0 libcomerr2 libcups2 libcurl3 libcurl3-gnutls libdbus-1-3 libdns100 libelf1 libevent-2.0-5 libfreetype6
  libfuse2 libgcrypt11 libgcrypt20 libglib2.0-0 libglib2.0-data libgnutls-deb0-28 libgnutls-openssl27 libgssapi-krb5-2 libgtk-3-0 libgtk-3-bin libgtk-3-common libicu52 libisc95 libisccc90
  libisccfg90 libk5crypto3 libkrb5-3 libkrb5support0 libldap-2.4-2 liblwres90 libmagic1 libmount1 libnuma1 libpam-systemd libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0
  libprocps3 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libpython3.4 libpython3.4-minimal libpython3.4-stdlib libsmartcols1 libss2 libssl-dev libssl-doc libssl1.0.0 libsystemd-daemon0
  libsystemd-journal0 libsystemd-login0 libtasn1-6 libudev1 libuuid1 libxext6 libxrender1 linux-firmware linux-generic linux-headers-generic linux-image-generic linux-libc-dev lshw mercurial
  mercurial-common mime-support mount mountall multiarch-support ntpdate openssl patch policykit-1 ppp procps python-requests python2.7 python2.7-minimal python3-apport python3-commandnotfound
  python3-distupgrade python3-problem-report python3.4 python3.4-minimal rsyslog sudo systemd systemd-shim tcpdump tzdata ubuntu-release-upgrader-core udev unattended-upgrades util-linux
  uuid-runtime wpasupplicant
обновлено 122, установлено 4 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Inst bsdutils [1:2.25.1-3ubuntu4] (1:2.25.1-3ubuntu4.1 Ubuntu:14.10/utopic-updates [amd64])
Conf bsdutils (1:2.25.1-3ubuntu4.1 Ubuntu:14.10/utopic-updates [amd64])
Inst dpkg [1.17.13ubuntu1] (1.17.13ubuntu1.1 Ubuntu:14.10/utopic-updates [amd64])
Conf dpkg (1.17.13ubuntu1.1 Ubuntu:14.10/utopic-updates [amd64])
Inst e2fslibs [1.42.10-1.1ubuntu1] (1.42.10-1.1ubuntu1.2 Ubuntu:14.10/utopic-updates [amd64]) [e2fsprogs:amd64 on e2fslibs:amd64] [e2fsprogs:amd64 ]
Conf e2fslibs (1.42.10-1.1ubuntu1.2 Ubuntu:14.10/utopic-updates [amd64]) [e2fsprogs:amd64 ]
Inst e2fsprogs [1.42.10-1.1ubuntu1] (1.42.10-1.1ubuntu1.2 Ubuntu:14.10/utopic-updates [amd64])
s [amd64])
Conf libsmartcols1 (2.25.1-3ubuntu4.1 Ubuntu:14.10/utopic-updates [amd64])
.........

APT::Get::Show-Upgraded=Yes - покзывать обновляемые пакеты, выводить список всех пакетов, которые будут обновлены.
APT::Get::Simulate=Yes - производит симуляцию событий, которые будут происходить, но никакие изменения в системе сделаны не будут.

Чтобы посмотреть список пакетов, которым необходимо обновление можно использовать apt-show-versions - она показывает, какие пакеты в системе можно обновить и еще некоторую полезную информацию. Опция -u отображает список обновляемых пакетов:
root@pc:~# apt-show-versions -u
linux-generic:amd64/utopic-security 3.16.0.23.24 upgradeable to 3.16.0.44.44
linux-headers-generic:amd64/utopic-security 3.16.0.23.24 upgradeable to 3.16.0.44.44
linux-image-generic:amd64/utopic-security 3.16.0.23.24 upgradeable to 3.16.0.44.44

Использованные источники:
-man apt-get
-APT HOWTO
-Unix Toolbox

среда, 24 июня 2015 г.

scp копирование без пароля (по ключу)

имеется
#uname -a
Linux atos-pc 3.16.0-23-generic #31-Ubuntu SMP Tue Oct 21 17:56:17 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
#
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.10
Release:        14.10
Codename:       utopic
#
# cat /etc/debian_version
jessie/sid

хочу настроить копирование на удаленную машину без запроса пароля (использование пары ключей)

создал пару ключей ssh-keygen -t rsa, скопировал закрытый ключ на локальной машине в папку пользоваль/.ssh/, на удаленной машине открытый ключ скопировал пользоваль/.ssh/authorized_keys

В /etc/ssh/sshd_conf на локальной машине: расскоментировал PubkeyAuthentication yes,
На удаленной машине: AuthorizedKeysFile     %h/.ssh/authorized_keys, PubkeyAuthentication yes
%h - домашний каталог пользователя

копирую таким образом
scp -i /root/.ssh/id_dsa -v   /home/user3/test_file root@10.1.1.11:/home/user
-i - указывает где лежит закрытый ключ на локальной машине
-v - делает многословный вывод. удобно при тестировании, особено совместно с опцией -d

В таком виде его можно и в cron запихать
*/5 * * * * /usr/bin/scp -2 -B -r -i /root/.ssh/id_dsa -v /etc/freeradius/mac_db root@10.1.1.11:/home/user
производить копирование каждые через каждые 5 минут (12:00, 12:05, 12:10 и т.д.)
5 * * * * /usr/bin/scp -2 -B -r -i /root/.ssh/id_dsa -v /etc/freeradius/mac_db root@10.1.1.11:/home/user
запуск каждые 5 минут каждого часа (12:05, 13:05, 14:05 и т.д.)

Простой скрипт без всяких проверок, на наличие файлов, их изменение и т.д. (не умею пока этого делать). Просто копирование в различные места /home/user/scp_script
#!/bin/bash
for i in user user1 user2 user3 user4
do
/usr/bin/scp -r -v -B  -i /root/.ssh/id_dsa  /etc/freeradius/mac_db root@10.1.1.11:/home/$i/
done


Если возникнут такие ошибки

debug1: Found key in /root/.ssh/known_hosts:3
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa
debug1: Authentications that can continue: publickey,password
debug1: No more authentication methods to try.
Permission denied (publickey,password).
lost connection

Необходимо провеирть права на папку /.ssh и файл authorized_keys на удаленой машине. Должны быть владельцами "пользователи" в директорию которых они скопированы (для user1 - пользователь1, для root - и т.д.)

Если настройка нового ssh сервера производилась клонированием настроек со старого, то необходимо перегенерировать все ключи в папке /etc/ssh:
  • Удаляем старые ssh ключи: rm /etc/ssh/ssh_host_*
  • Переконфигурируем OpenSSh Server: dpkg-reconfigure openssh-server
  • Обновляем всех ssh клиентов: ~/.ssh/known_hosts files

  • При необходимости перезапустить ssh используем invoke-rc.d ssh restart
    При перегенерировании новых ключей текущая ssh сессия не должна быть прервана

    Полезно для ознакомления Теория и практика использования SSH, crontab, wiki.debian.org
    Наглядная табличка по cron, чтобы не забыть


    среда, 18 марта 2015 г.

    Windows отключение компьютера от общих ресурсов

    При настройке Samba столкнулся с проблемой при подключении пользователей Windows: "Не возможно подключится к "имя ресурса". Множественное подключение к серверу или общим ресурсом одним пользователем....."

    В Windows для отключения пользователей есть команда net use. Она позволяет подключать/отключать компьютер к/от общих ресурсов, отображать информацию о соединениях компьютера.

    Использование net use без параметров отобразит подключения

    Команда net use * /del /y сбросит все подключения без дополнительного подтверждения

    За более подробной информацией technet.microsoft.com net use

    понедельник, 23 февраля 2015 г.

    Proftpd постоянно падает

    Итак, proftpd-1.3.5_4, freebsd 10, ставился из портов. Становился и настроился без проблем. Запускаем и смотрим, что он работает
    root@server:/ # /usr/local/etc/rc.d/proftpd start 
    Starting proftpd. 
    root@server:/ # /usr/local/etc/rc.d/proftpd status 
    proftpd is running as pid 15734. 
    
    Но через короткий промежуток времени он сам останавливается. В логах ничего по этому поводу нет.

    Запускаем proftpd с выводом информации в консоль

    root@server:/ # proftpd -n -d 9 -c /usr/local/etc/proftpd.conf 
    2015-02-20 14:41:03,279 server proftpd[15751]: using PCRE 8.35 2014-04-04 
    2015-02-20 14:41:03,280 server proftpd[15751]: using TCP receive buffer size of 65536 bytes 
    2015-02-20 14:41:03,280 server proftpd[15751]: using TCP send buffer size of 32768 bytes 
    2015-02-20 14:41:03,284 server proftpd[15751]: setting default addresses to *.*.*.* 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: Config for FTP-DH: 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: Limit 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*:  DenyAll 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: DefaultServer 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: Umask 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: CommandBufferSize 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: UserID 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: UserName 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: GroupID 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: GroupName 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: DefaultRoot 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: DefaultRoot 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: AllowOverwrite 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: SyslogLevel 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: SystemLog 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: LogFormat 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: LogFormat 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: LogFormat 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: TimeoutIdle 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: MaxClients 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: DisplayLogin 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: mod_lang/1.0: binding to text domain 'proftpd' using locale path '/usr/local/share/locale' 
    2015-02-20 14:41:03,302 server proftpd[15751] *.*.*.*: mod_lang/1.0: using locale files in '/usr/local/share/locale' 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: mod_lang/1.0: added the following supported languages: zh_CN.UTF-8, zh_CN, zh_TW.UTF-8, zh_TW, en_US.UTF-8, en_US, es_ES.UTF-8, es_ES, it_IT.UTF-8, it_IT, ja_JP.UTF-8, ja_JP, ru_RU.UTF-8, ru_RU, bg_BG.UTF-8, bg_BG, fr_FR.UTF-8, fr_FR, ko_KR.UTF-8, ko_KR 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: ROOT PRIVS at mod_ctrls.c:1187 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at mod_ctrls.c:1189 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: ROOT PRIVS at mod_delay.c:441 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at mod_delay.c:444 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: ROOT PRIVS at mod_log.c:1762 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at mod_log.c:1765 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: ROOT PRIVS at mod_rlimit.c:541 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at mod_rlimit.c:544 
    2015-02-20 14:41:03,304 server proftpd[15751] *.*.*.*: set core resource limits for daemon 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: SETUP PRIVS at main.c:3014 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: ROOT PRIVS at main.c:2351 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: deleting existing scoreboard '/var/run/proftpd/proftpd.scoreboard' 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: opening scoreboard '/var/run/proftpd/proftpd.scoreboard' 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at main.c:2378 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: ROOT PRIVS at inet.c:247 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at inet.c:270 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: ROOT PRIVS at inet.c:373 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at inet.c:447 
    2015-02-20 14:41:03,305 server proftpd[15751] *.*.*.*: ProFTPD 1.3.5 (stable) (built Wed Feb 18 2015 15:41:34 KRAT) standalone mode STARTUP 
    2015-02-20 14:41:03,306 server proftpd[15751] *.*.*.*: ROOT PRIVS at pidfile.c:47 
    2015-02-20 14:41:03,306 server proftpd[15751] *.*.*.*: RELINQUISH PRIVS at pidfile.c:49 
    Alarm clock 
    

    В интернете пишут, что данная ошибка (Alarm clock), лечится пересборкой порта. Добавляем в Makefile такую строчку LDFLAGS+= -pthread.
    Затем make configure && make install && make clean и все ftp стоит не падает

    Описание и обсуждение данной ошибки первая, вторая, рабочий конфиг

    воскресенье, 15 февраля 2015 г.

    HP-2530 зеркальный порт

    Если нужно зеркалировать трафик на коммутаторах HP, к примеру, для отладки IP телефонии, то это делается двумя командами
    mirror-port - тот кто наблюдает. Определяет зеркальный порт (данная команда доступна так же для vlan). Зеркальный порт должен подключаться к конечному устройству (не коммутатору), в противном случае это может привести к серьезным проблемам в сети.

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

    ..............
    mirror-port 39
    ..............
    interface 40
       monitor
       exit
    

    проверка настроек
    HP-2530-48-PoEP# sh monitor
    
     Network Monitoring Port
    
      Mirror Port: 39
    
      Monitoring sources
      ------------------
      40
    
    За более подробной информацией Command Line Interface Reference Guide

    суббота, 14 февраля 2015 г.

    Блокировка трафика от определенных портов на Procurve HP-2530

    Есть такая вот схема:

    У нас установлены на предприятии несколько IP камер. Попросили нас коллеги предоставить им доступ к нескольким нашим IP камерам, наблюдающим за периметром, для того что бы они могли их завести на свой сервер видеозаписи. Но не хотелось им давать доступ к нашим остальным камерам. Хотелось простого решения без экзотических ACL и более страшных конструкций. HP-2530 позволяет реализовать легко реализовать данную задачу использую source-port filters

    Source-port filters - этот тип фильтра позволяет коммутатору передавать или блокировать трафик от любых конечных узлов на указанный порт источника от конкретного порта назначения.

    Например нужно предоставить доступ к камерам 1 и 3 (номер камеры соответствует порту подключения, портов в коммутаторе 52), это выглядит так:
    filter source-port "50" drop 2,4-49,51-52
    Команда говорит дропать любой трафик от портов источников 2,4-49,51-52 с адресом назначения 50, весь остальной трафик разрешен. Таким образом любой кто подключен к порту 50 может получить доступ только к 1 и 3 порту.

    За более подробной информацией обращайтесь к официальной документации hp 2530 access security guide




    воскресенье, 25 января 2015 г.

    Cisco Bridging:практика

    Bridging в одном вилане
    В мое распоряжение попал маршрутизатор Cisco 1921 (имеет два интегрированных порта) и два модуля к нему EHWIC-4ESG (ge 0/1/3-0) (4 порта 10/100/1000), и EHWIC-1GE-SFP-CU (ge-0/0/0) (combo port SFP/RJ45), версия IOS 15.0(1r)M16. С помощью Cisco 1921 предполагалось модернизировать уже имеющуюся сеть. Сама циска располагается в серверной, к ней будит осуществлено 4 подключения: сервер (располагается в серверной), офис, цех и провайдер. Схема новой сети выглядит таким образом

    Интегрированный порт ge0/0 смотрит в сторону провайдера, к порту ge0/1 (интегрированный) подключается к коммутатору в офисе, по оптике (порт ge-0/0/0) подключается цех, ну и к оставшимся медным портам (ge 0/1/3-0) будит подключатся оборудование располагающееся в серверной. Все устройства подключенные к портам: ge0/1, ge-0/0/0, ge 0/1/3-0 должны располагаться в одной сети. Было решено использовать для этих целей технологию Transparent bridging.

    Для настройки бриджинга на интерфейсе необходимо в режиме глобального конфигурирования выполнить:
    bridge 1 protocol ieee - назначаем номер группы (1) и определяем EEE 802.1D Spanning Tree Protocol.
    bridge 1 priority 0 - назначаем приоритет (0), для нашей бридж группы (1), помогающий принять решение в определение root в spanning tree. Чем ниже приоритет тем выше вероятность стать root.
    Далее необходимо назначить необходимые нам интерфейсы в нашу бридж группу. Для этого переходим в режим конфигурирования интерфейса.
    interface g0/1
    bridge-group 1 - назначаем интерфейс g0/1 в первую группу
    exit
    interface g0/0/0
    bridge-group 1 - назначаем интерфейс g0/0/0 в первую группу
    exit
    interface vlan1
    bridge-group 1 - назначаем интерфейс vlan1 в первую группу
    exit
    
    Так как интерфейсы ge 0/1/3-0 на плате EHWIC-4ESG ведут себя как порты коммутатора, то по умолчанию они находятся в vlan 1, и поэтому принадлежность их к конкретной бридж группе определяет vlan интерфейс.

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

    Необходимо в режиме глобального конфигурирования выполнить:
    bridge irb - включаетм irb, позволяющий маршрутизировать трафик от бридж интрефейсов.
    interface bvi 1 - назначаем bvi, номер соответствующей бридж группы. Каждая бридж группа может иметь один соответствующий bvi.
    ip address 192.168.1.254 255.255.255.0 - назначаем адресацию для нашей сети. Можно так же создавать вторичные адреса.
    exit
    bridge 1 route ip - разрешаем bvi получать и маршрутизировать пакеты полученные от соответсвующей бридж группы
    

    Стоит обратить внимание, что в такой конфигурации при обрыве связи на линии на порту, пропадает порядка 20-30 пакетов (если использовать ping). Для уменьшения количества потерянных пакетов (улучшения сходимости) можно использовать команду spanning-tree portfast на каждом физическом интерфейсе, входящем в bridge. Так в Transparent bridging используется EEE 802.1D Spanning Tree Protocol, а указанная команда позволяет интерфейсу при восстановлении сразу переходить в режим передачи. Это позволит уменьшить количество потерянных пакетов до 8-12.
    .................
    interface GigabitEthernet0/1/0
     no ip address
     spanning-tree portfast
    !
    interface GigabitEthernet0/1/1
     no ip address
     spanning-tree portfast
    !
    interface GigabitEthernet0/1/2
     no ip address
     spanning-tree portfast
    !
    interface GigabitEthernet0/1/3
     no ip address
     spanning-tree portfast
    ................
    

    Получился вот такой конфиг
    ............................
    interface GigabitEthernet0/0
     description $ETH-LAN$$ETH-SW-LAUNCH$$INTF-INFO-GE 0/0$
     ip address *.*.*.* 255.255.255.0
     ip nat outside
     ip virtual-reassembly in
     duplex auto
     speed auto
    !
    interface GigabitEthernet0/1
     no ip address
     duplex auto
     speed auto
     bridge-group 1
    !
    interface GigabitEthernet0/0/0
     no ip address
     duplex auto
     speed auto
     media-type sfp
     bridge-group 1
    !
    interface BVI1
     ip address 192.168.22.254 255.255.255.0
     ip nat inside
     ip virtual-reassembly in
    !
    bridge 1 priority 0
    bridge 1 protocol ieee
    bridge 1 route ip
    
    Проверяем, что все работает:
    show interface bvi 1
    BVI1 is up, line protocol is up
    ..............................


    Bridging между vlan
    Затем захотелось развести подсети по разным vlan. НА BVI нельзя создать подинтерфейс. Для этого создадим bridge domain.
    Домены – это специфическая функция Cisco. Это функция доступна,если в настройках STP указан IEEE. Домен устанавливает внешнию идентификацию BPDU отправляемых из бридж группы. Цели этих идентификаций:
    • Бридж группы определенные в домене могут узнать, что BPDU принадлежат им.
    • Две бриджуемых подсети в разных доменах, которые делят общее соединение могут использовать идентификатор домена для определения своих BPDU и игнорирования BPDU из другого домена.

    В домен можно поместить любое количество маршрутизаторов и мостов. Только устройства в одном домене получают одинаковою STP информацию. Когда несколько маршрутизаторов разделяют один кабель и вы хотите использовать только определенные подсети этих маршрутизаторов для обмена информацией STP между собой, устанавливается spanning-tree домен. Эту функцию можно использовать для уменьшения количества общих переконфигураций в большой сети.

    Например возьмем конфигурацию из примера выше. И добавим в нее несколько подсетей
    • 192.168.22.254/24 - vlan 1 - сеть передачи данных
    • 10.1.10.254/24 - vlan10 - Devices management
    • 10.1.20.254/24 - vlan20 - Voice
    • 10.1.30.254/24 - vlan30 - Video
    Создадим подинтерфейсы для этих вланов, на основных интерфейсах. И помещаем каждый подинтерфейс в отдельную bridge group
    interface GigabitEthernet0/1
     no ip address
     duplex auto
     speed auto
     bridge-group 1
    !
    interface GigabitEthernet0/1.10
     description devices_management
     encapsulation dot1Q 10
     bridge-group 2
    !
    interface GigabitEthernet0/1.20
     description Voice
     encapsulation dot1Q 20
     bridge-group 3
    !
    interface GigabitEthernet0/1.30
     description Video
     encapsulation dot1Q 30
     bridge-group 4
    !
    interface GigabitEthernet0/0/0
     no ip address
     duplex auto
     speed auto
     media-type sfp
     bridge-group 1
    !
    interface GigabitEthernet0/0/0.10
     description devices_management
     encapsulation dot1Q 10
     bridge-group 2
    !
    interface GigabitEthernet0/0/0.20
     description Voice
     encapsulation dot1Q 20
     bridge-group 3
    !
    interface GigabitEthernet0/0/0.30
     description Video
     encapsulation dot1Q 30
     bridge-group 4
    

    Создаем также эти vlan, для платы EHWIC-4ESG.
    interface Vlan1
     no ip address
     bridge-group 1
    !
    interface Vlan10
     no ip address
     bridge-group 2
    !
    interface Vlan20
     no ip address
     bridge-group 3
    !
    interface Vlan30
     no ip address
     bridge-group 4
    

    Создаем соответствующие BVI интерфейсы и назначаем им адреса из выделенных подсетей
    interface BVI1
     ip address 192.168.22.254 255.255.255.0
     ip nat inside
     ip virtual-reassembly in
    !
    interface BVI2
     descriptiondevices_management
     ip address 10.1.10.254 255.255.255.0
    !
    interface BVI3
     description Voice
     ip address 10.1.20.254 255.255.255.0
    !
    interface BVI4
     description Video
     ip address 10.1.30.254 255.255.255.0
     

    Ну и объединяем наши BVI интерфейсы в домен
    bridge 1 domain 1
    bridge 1 priority 0
    bridge 1 protocol ieee
    bridge 1 route ip
    bridge 2 priority 20
    bridge 2 protocol ieee
    bridge 3 domain 1
    bridge 3 priority 30
    bridge 3 protocol ieee
    bridge 4 domain 1
    bridge 4 priority 40
    bridge 4 protocol ieee
    


    суббота, 10 января 2015 г.

    Cisco Bridging: теория

    Bridge - это мост, служит для передачи данных между LAN. Есть 4-е вида мостов:
    1. Transparent bridging (прозрачный мост) – применяется в основном в Ethernet сети и в основном используются для соединения сетей, с одинаковой средой передачи
    2. Source-Route Bridging (SRB) – в основном используются в Token Ring сетях. Мосты только перенаправляют фреймы основываясь на routing indicator, содержащемся во фрейме. Конечные станции несут ответственность за определение и поддержание таблиц адресов назначения и routing indicator (маршрутных индикаторов)
    3. Translational bridging – используется для передачи данных между различными физическими средами. Обычно это используется между Ethernet и FDDI или Token Ring и Ethernet
    4. Source-Route Translational Bridging (SR/TLB) – это комбинация source-route bridging и transparent bridging, которая обеспечивает связь в смешанной среде предприятия Ethernet and Token Ring. Translational bridging без routing indicators (маршрутных индикаторов) между Token Ring и Ethernet также называется SR/TLB

    Transparent bridge называется так потому, что его присутствие и работа прозрачна для хостов в сети. Когда Transparent bridge включен, он узнает расположение рабочих станций, анализирую адрес источника входящего фрейма ото всех подключенных сетей. Например, если bridge видит, что фрейм получен на порту 1 от хоста А, он решает, что хост А может быть достижим через сегмент подключенный к порту 1. В ходе этого процесса transparent bridges строит таблицу (процесс обучения) соответствий.

    Bridge использует таблицу как основу для передачи трафика. Когда фрейм получен на одном из интерфейсов добавленных в bridge, тогда bridge ищет адрес назначения фрейма по своей внутренней таблице. Если в таблице содержится взаимосвязь между адресом назначения и любым из забриджеванным портом, за исключением порта, на котором фрейм был получен, то фрейм передается на соответствующий порт. Если взаимосвязь не найдена, фрейм распространяется на все порты, кроме того, на котором фрейм был получен. Броадкаст и мультикаст так же распостраняются этим способом.

    Transparent bridges успешно изолирует внутрисегментный трафик, тем самым уменьшая видимый трафик на каждом отдельном сегменте. Это называется фильтрацией и происходит, когда MAC адрес источника и назначения расположены в том же интерфейсе моста. Фильтрация обычно улучшает отклик сети. Степень, до которой трафик уменьшается, а время отклика улучшается (уменьшается) зависит от объема внутрисегментного трафика по отношения к общему объему, а так же объема броадкаст и мультикаст трафика

    Bridging работает на data-link уровне, который управляет потоком данных, обрабатывает ошибки передачи, предоставляет физическую адресацию и управляет доступом к физической среде. Bridges анализирует входящий фрейм, принимает решение о переадресации основываясь на этом фрейме, и передает фрейм к его адресу назначения. Иногда, например в SRB, фрейм содержит полный путь к адресу назначения. В других случаях, таких как в transparent bridging, фреймы передаются в один хоп за раз к месту назначения.

    Мосты могут быть или удаленные или локальные. Локальные мосты предоставляют непосредственное соединение между несколькими сегментами LAN в той же области. Удаленные мосты соединяют сегметы LAN в различных областях, обычно через телекоммуникационные каналы.

    Spanning Tree Algorithm (STA) – является важной частью transparent bridging. STA используется для динамического обнаружения loop-free подсетей в сетевой топологии. Чтобы сделать это STA ставит порты моста, которые создают петли, когда активны, в состояние ожидания или блокировки. Заблокированные порты могут быть активированы, если основной порт неисправен, также они предоставляют поддержку избыточности. Для большей информации смотри IEEE 802.1d спецификацию.

    Расчет Spanning Tree происходит, когда мост создается или когда обнаружено изменение топологии. Конфигурационные сообщения называются Bridge Protocol Data Units (BPDUs), запускающие расчет.

    Пока B1 был единственным мостом, все работало хорошо, но с настройкой B2, появилось два способа соединения между двумя сегментами. Это называет bridging loop network. Без STA, broadcast от хоста из LAN1 стал бы известен двум мостам, и тогда B1 и B2 отправили одно и тоже broadcast сообщение в LAN2. Оба моста (В1 и В2) уверены, что хост подключен к LAN2. В дополнение к этой основной проблемы подключения с broadcast сообщениями в сети с петлями, может быть проблема с пропускной способностью.

    С STA, даже когда В1 и В2 настроены, они оба отправляют BPDU сообщения, которые содержат информацию, определяющую кто из низ является root bridge. Если В1 является root bridge, то он становится designated bridge для LAN1 и LAN2. В2 не будит бриджевать никакие пакеты, так как один из его портов будит в заблокированном состоянии.

    Integrated Routing and Bridging (IRB)

    IRB позволяет бриджевать и маршрутизировать протоколы одновременно и пропускать трафик от бриджеванного интерфейса к маршрутизируемому и наоборот. Например, вы можете переходить от bridged topologies к routed topologies, вам сначала может потребоваться подключить bridged segment к routed networks.

    Использую IRB функцию вы можете маршрутизировать определенный протокол между routed interfaces и bridge groups в пределах L3 коммутатора. В частности, локальный или немаршрутизируемый трафик будит передаваться через bridged interfaces в той же bridge group, в то время как маршрутизироуемый трафик будит передаваться через routed interfaces или bridge groups

    BVI – это виртуальный интерфейс в L3 коммутаторе, который действует как обычный маршрутизируемый интерфейс (routed interface). BVI не поддерживает bridging, но на самом деле представляет соответствующие bridge group для маршрутизируемого интерфейса L3 коммутатора. Номер интерфейса является связующим звеном между BVI и bridge group.

    Программное обеспечение L3 коммутатора поддерживает маршрутизацию IP и IPX между routed interfaces и bridged interfaces на том же L3 коммутаторе.

    Перед настройкой IRB необходимо учитывать:
    1. Поведение по умолчанию route/bridge в находящихся в bridge group (когда IRB включен) это bridge всех пакетов. Необходимо убедится, что маршрутизация настроено точно на BVI для протоколов, которые необходимо маршрутизировать
    2. Пакеты не маршрутизируемых протоколов, такие как local-area transport (LAT) всегда бриджуются. Нельзя отключить бриджинг для не маршрутизируемых протоколов.
    3. Bridge соединяет несколько сетевых сегментов в одну большую плоскую сеть. Для прохождения пакета идущего от маршрутизируемого интерфейса среди bridged interfaces, вся bridge group должна быть представлена одним интерфейсом.

    Когда на BVI настроена и включена маршрутизация, пакеты пришедшие на маршрутизируемый интерфейс, который является адресом назначения для хоста в сегменте bridge group, перенаправляются к BVI. От BVI пакеты перенаправляются к механизму бриджевания (bridging engine), который направляет их через bridged interface. Это перенаправление основывается на MAC адресе назначения. Аналогично, пакеты, которые пришли на bridged interface, но адрес назначения расположен в маршрутизируемой сети, сперва попадает на BVI. Затем BVI передает пакеты на механизм маршрутизации (routing engine), который направляет их через routed interface. На одном физическом интерфейсе, IRB может быть создан с двумя VLAN (802.1Q tagging) подинтерфейсами; одни VLAN подинтерфейс с IP адресом, используемым для маршрутизации, и другой VLAN подинтерфейс и другим физическим интерфейсом на маршрутизации.




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