понедельник, 2 декабря 2013 г.

Конвертация PFX certificate в ключи для использования в APache

С OpenSSL можно сконвертировать pfx сертификат для использования в Apache :
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key   
Первая команда извлекает public key to domain.cer.
Вторая команда извлекает private key to domain.key.
Исправляем конфиг Apache :
<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>

Настройка безопасного соединения HTTPS (SSL)

1. Установка необходимого программного обеспечения.
Для настройки WEB-сервера с SSL шифрованием вам нужно, чтобы на сервере были установлены OpenSSL и mod_ssl. В CentOS установка данного ПО может быть выполнена следующей командой:
# yum install mod_ssl openssl 
2. Создание самоподписанного сертификата
Используя OpenSSL Мы можем сгенерировать самоподписанный сертификат.
Для создания ключа используемого в сертификате, нам будет необходимы права пользователя root:
Создаем приватный ключ
# openssl genrsa -out ca.key 1024
Создаем CSR  (Certificate signing request)
# openssl req -new -key ca.key -out ca.csr
Создаем самоподписанный ключ
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt 
Копируем в корректную директорию
# cp ca.crt /etc/pki/tls/certs 
# cp ca.key /etc/pki/tls/private/ca.key 
# cp ca.csr /etc/pki/tls/private/ca.csr 
После этого нужно в файле /etc/httpd/conf.d/ssl.conf найти строку с указанием SSLCertificateFile. Если вы используете редактор vi, то сделать это можно так:
# vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
Раскомментируйте строку если нужно и отредактируйте как указано ниже (если вы используете пути из данной инструкции):
SSLCertificateFile /etc/pki/tls/certs/ca.crt
После этого установите корректный путь к файлу ключа (Certificate Key File) несколькими строками ниже:
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
Сохраняем файл, выходим из редактора и перезапускаем Apache:
# /etc/init.d/httpd restart
Теперь если вы укажете в пути к сайту протокол https:
https://ServerName_or_IP/
вам будет выдано сообщение с просьбой подтвердить, что вы принимаете сертификат.
3. Настройка виртуальных хостов (virtual hosts)
Так же как вы настраивали виртуальные хосты apache для http на порту 80 вы их настраиваете для https на порту 443. Пример:
<VirtualHost *:80>
        <Directory /var/www/vhosts/yoursite.com/httpdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
        ServerName yoursite.com
</VirtualHost>
Чтобы добавить такой же сайт на порту 443 вам нужно указать :
MyHost *:443
Где вместо MyHost вам нужно указать ваш реальный виртуальный хост.
Запись для VirtualHost с httpd будет выглядеть примерно так:
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key 
<Directory /var/www/vhosts/yoursite.com/httpsdocs>
        AllowOverride All
</Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
        ServerName yoursite.com
</VirtualHost>
Перезапускаем Apache:
# /etc/init.d/httpd restart 
4. Настройка фаервола.
Так же вам возможно понадобится на фаерволе добавить разрешающее правило для порта 443:
# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# /sbin/service iptables save
# iptables -L -v

вторник, 26 ноября 2013 г.

Как передать настройки PuTTy на другую Windows машину

PuTTy это приложение, эмулирующее работу терминала, которое может использоваться как клиент для SSH, Telnet, rlogin и некоторых других компьютерных протоколов. Вы можете использовать PuTTy для удаленного подключения или контроля вашими роутерами через  последовательное подключение.
По умолчанию PuTTy хранит настройки сессий в реестре на компьютерах под управлением Windows. Если вы имеете несколько настроенных подлючений на лаптопе и хотели бы передать их на другой компьютер, вам необходимо  передать ветку реестра HKEY_CURRENT_USER\Software\SimonTatham и её значения. Экспорт ветки реестра PuTTy c исходной машины
Нажмите на  Start -> Run -> и введите следующую команду реестра в диалоговое окно. Данная команда поместит значение ветки в рег-файл. Обратите внимание на имя ветки рееста (Simon Thatham) - это автор PuTTy.
regedit /e "%userprofile%\desktop\putty-registry.reg" HKEY_CURRENT_USER\Software\Simontatham Данную операцию вы можете сделать и не из командной строки, экспортировав ветку реестра как показано ниже. Нажмите  Start -> Run -> regedit -> Click File menu -> Click Export menu-item -> Enter --> Наберитен HKEY_CURRENT_USER\Software\Simontatham в строке "Selected branch" -> Сохраните как  putty-registry.reg.
Импортируем ветку реестра на машине назначения Передайте файл putty-registry.reg на нужный вам компьютер. Нажмите правой кнопкной на .reg файл и выберите Merge, как показано ниже. Подтвердите импорт, нажав "Yes".
Запустите putty для проверки что все соединения передались успешно. Импортирование рег-файла не удаляет существующие настройки PuTTy. Вместо этого, происходит добавление эскпортированных соединений к уже существующим.

четверг, 21 ноября 2013 г.

Tcpdump usage examples

In most cases you will need root permission to be able to capture packets on an interface. Using tcpdump (with root) to capture the packets and saving them to a file to analyze with Wireshark (using a regular account) is recommended over using Wireshark with a root account to capture packets on an "untrusted" interface. See the Wireshark security advisories for reasons why.
See the list of interfaces on which tcpdump can listen:
tcpdump -D
Listen on interface eth0:
tcpdump -i eth0
Listen on any available interface (cannot be done in promiscuous mode. Requires Linux kernel 2.2 or greater):
tcpdump -i any
Be verbose while capturing packets:
tcpdump -v
Be more verbose while capturing packets:
tcpdump -vv
Be very verbose while capturing packets:
tcpdump -vvv
Be less verbose (than the default) while capturing packets:
tcpdump -q
Limit the capture to 100 packets:
tcpdump -c 100
Record the packet capture to a file called capture.cap:
tcpdump -w capture.cap
Record the packet capture to a file called capture.cap but display on-screen how many packets have been captured in real-time:
tcpdump -v -w capture.cap
Display the packets of a file called capture.cap:
tcpdump -r capture.cap
Display the packets using maximum detail of a file called capture.cap:
tcpdump -vvv -r capture.cap
Display IP addresses and port numbers instead of domain and service names when capturing packets:
tcpdump -n
Capture any packets where the destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n dst host 192.168.1.1
Capture any packets where the source host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n src host 192.168.1.1
Capture any packets where the source or destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n host 192.168.1.1
Capture any packets where the destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n dst net 192.168.1.0/24
Capture any packets where the source network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n src net 192.168.1.0/24
Capture any packets where the source or destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n net 192.168.1.0/24
Capture any packets where the destination port is 23. Display IP addresses and port numbers:
tcpdump -n dst port 23
Capture any packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n dst portrange 1-1023
Capture only TCP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n tcp dst portrange 1-1023
Capture only UDP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n udp dst portrange 1-1023
Capture any packets with destination IP 192.168.1.1 and destination port 23. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and dst port 23"
Capture any packets with destination IP 192.168.1.1 and destination port 80 or 443. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and (dst port 80 or dst port 443)"
Capture any ICMP packets:
tcpdump -v icmp
Capture any ARP packets:
tcpdump -v arp
Capture either ICMP or ARP packets:
tcpdump -v "icmp or arp"
Capture any packets that are broadcast or multicast:
tcpdump -n "broadcast or multicast"
Capture 500 bytes of data for each packet rather than the default of 68 bytes:
tcpdump -s 500
Capture all bytes of data within the packet:
tcpdump -s 0

Как послать snmptrap

snmptrap -v 1 -c <community string> <target ip> ‘enterprise-oid‘ ‘simulated agent ip’ generic-trap specific-trap ‘up-time’ [oid type value]
где:
  • community string - строка сообщества (простейший “пароль”)
  • target ip - адресс хоста на который мы отправляем трап
  • enterprise-oid - оид события который мы хотим симулировать
  • simulated agent ip – ip-адрес с которого мы симулируем отправку события
  • generic-trap – общий тип сгенерированного трапа
  • specific-trap – подтип сгенерированного трапа (поле TRAP-TYPE в описании миба)
  • up-time – аптайм
  • oid - обычный оид – информация которую мы хотим передать snmp-демону
  • type – идентификатор типа данных – i – Integer, s – String остальное описано там
  • value – непосредственно данные по оиду
причем пар generic и specific трапов может быть несколько
пример:
snmptrap -v 1 -c public 127.0.0.1 ’1.2.3.4.5.6′ ’192.192.192.192′ 6 99 ’55′ 1.11.12.13.14.15 s “teststring”
UPDATE 02.10.2013
Если необходимо выслать какой то определенный трап к команде выше необходимо добавить путь к миб-файлам, после чего можно использовать символьное описание трапа. Для теста подойдут события, описанные в стандартном мибе, поставляющемся с библиотекой net-snmp – NET-SNMP-EXAMPLES-MIB.
snmptrap -M /path-to-net-snmp-folder/mibs -mAll -v1 -c public <target-ip> NET-SNMP-EXAMPLES-MIB::netSnmpExampleNotification “” 6 17 “” SNMPv2-MIB::sysLocation.0 s “sample of trap message

Организация приема SNMP trap’ов и их отправки на коммутаторах DLink

В рамках поставленной задачи (узнавать о появлении новых MAC-адресов на портах
коммутаторов DLink) понадобилось организовать настройку SNMP-trap'ов на
коммутационном оборудовании с последующим приемом их на сервере и дальнейшей
обработкой в зависимости от пришедшего события.

Для начала надо установить и настроить демон, который будет принимать трапы от
оборудования и при нужном MIB вызывать наш обработчик. Установка net-snmp -
тема отдельная, выполняется из пактов или портов, и особых трудностей не вызывает.

Собственно приемом трапов занимается snmptrapd. Для обработки заданного трапа
пишем в snmptrapd.conf:

    traphandle 1.3.6.1.4.1.171.11.63.6.2.20.0.2 /scripts/trap.php

Теперь после рестарта демона snmptrapd, он начнет принимать приходящие трапы и
при наличии трапа с заданным MIB (1.3.6.1.4.1.171.11.63.6.2.20.0.2 - в нашем
случае), будет вызывать наш обработчик, который уже будет совершать необходимые
нам действия.
Обработчик SNMP-трапов

Принимать SNMP trap-ы на самом деле достаточно просто. Вот пример простого
обработчика SNMP-трапов на PHP:

      #!/usr/bin/php -q
      <?php
      $message = "";
      $fd = fopen("php://stdin", "r");
      while (!feof($fd)) $message .= fread($fd, 1024);
      ?>

Все что делает этот скрипт - получает в переменную $message текст, который
передается демоном snmptrapd. Текст приходит разделенный знаками конца строки.
Первая строка - это всегда имя хоста (который прислал трап), вторая - IP-адрес
этого хоста, третья - его uptime, четвертая - MIB пришедшего трапа. Остальные
строки в сообщении - это детальная информация касательно пришедшего трапа, если
она предусмотрена.


Для отправки Trap-ов на коммутаторе исполняем такие команды:

    create snmp community trap_com view CommunityView read_only
    create snmp host x.x.x.x v2c trap_com

Где х.х.х.х - IP-адрес сервера, котоырй будет принимать SNMP traps.

Далее надо включить опцию дабы коммутатор отсылал трап при появлении на порту
нового мака. Делается это через SNMP

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 3

Выключить эту опцию можно так

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 2

Узнать текущее состояние опции можно так

    snmpwalk -v2c -c read_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19


Вся информация справедлива для коммутаторов 3028. Для других моделей MIB-ы
могут сильно отличаться - к сожалению, DLink любит менять их от серии к серии.
Надо заметить, что опция отправки трапа при появлении нового мака на порту
доступна далеко не на всех моделях DLink-овых коммутаторов - например, 3010
такой возможности не поддерживает.

Tcpdump usage examples

In most cases you will need root permission to be able to capture packets on an interface. Using tcpdump (with root) to capture the packets and saving them to a file to analyze with Wireshark (using a regular account) is recommended over using Wireshark with a root account to capture packets on an "untrusted" interface. See the Wireshark security advisories for reasons why.
See the list of interfaces on which tcpdump can listen:
tcpdump -D
Listen on interface eth0:
tcpdump -i eth0
Listen on any available interface (cannot be done in promiscuous mode. Requires Linux kernel 2.2 or greater):
tcpdump -i any
Be verbose while capturing packets:
tcpdump -v
Be more verbose while capturing packets:
tcpdump -vv
Be very verbose while capturing packets:
tcpdump -vvv
Be less verbose (than the default) while capturing packets:
tcpdump -q
Limit the capture to 100 packets:
tcpdump -c 100
Record the packet capture to a file called capture.cap:
tcpdump -w capture.cap
Record the packet capture to a file called capture.cap but display on-screen how many packets have been captured in real-time:
tcpdump -v -w capture.cap
Display the packets of a file called capture.cap:
tcpdump -r capture.cap
Display the packets using maximum detail of a file called capture.cap:
tcpdump -vvv -r capture.cap
Display IP addresses and port numbers instead of domain and service names when capturing packets:
tcpdump -n
Capture any packets where the destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n dst host 192.168.1.1
Capture any packets where the source host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n src host 192.168.1.1
Capture any packets where the source or destination host is 192.168.1.1. Display IP addresses and port numbers:
tcpdump -n host 192.168.1.1
Capture any packets where the destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n dst net 192.168.1.0/24
Capture any packets where the source network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n src net 192.168.1.0/24
Capture any packets where the source or destination network is 192.168.1.0/24. Display IP addresses and port numbers:
tcpdump -n net 192.168.1.0/24
Capture any packets where the destination port is 23. Display IP addresses and port numbers:
tcpdump -n dst port 23
Capture any packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n dst portrange 1-1023
Capture only TCP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n tcp dst portrange 1-1023
Capture only UDP packets where the destination port is is between 1 and 1023 inclusive. Display IP addresses and port numbers:
tcpdump -n udp dst portrange 1-1023
Capture any packets with destination IP 192.168.1.1 and destination port 23. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and dst port 23"
Capture any packets with destination IP 192.168.1.1 and destination port 80 or 443. Display IP addresses and port numbers:
tcpdump -n "dst host 192.168.1.1 and (dst port 80 or dst port 443)"
Capture any ICMP packets:
tcpdump -v icmp
Capture any ARP packets:
tcpdump -v arp
Capture either ICMP or ARP packets:
tcpdump -v "icmp or arp"
Capture any packets that are broadcast or multicast:
tcpdump -n "broadcast or multicast"
Capture 500 bytes of data for each packet rather than the default of 68 bytes:
tcpdump -s 500
Capture all bytes of data within the packet:
tcpdump -s 0

Debian, exim4. Настраиваем SMTP сервер для нашего веб-сервера

данной статье я рассмотрю один из самых быстрых способов настройки smtp-демона для нашего вебсервера. Если вам нужен сервер, который ещё и должен принимать почту — проходите мимо. Эта статья подойдёт для тех, кто принимает почту гуглом или яндексом (на своём домене, само собой), но не хочет дергать их SMTP серверы, чтобы слать письма.
Внимание! Этот мануал описывает то, как настроить SMTP сервер (сервер отправки писем), отправить письмо через который можно только с того же сервера (то есть с localhost). При этом не будет требоваться никакой авторизации для «доверенных» доменов! Будьте внимательны.
lamp-server:~# aptitude install exim4
lamp-server:~# dpkg-reconfigure exim4-config

Отвечаем на вопросы:
General type of mail configuration: internet site; mail is sent and received directly using SMTP
System mail name: желательно вписываем сюда обратную зону для вашего IP интерфейса eth0. Либо просто full hostname сервера (mail.debian.pro, например)
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1 (нам же не нужен open relay?)
Other destinations for which mail is accepted: вписываем через пробел домены, от имени которых нам нужно отправлять письма с этого сервера.
Domains to relay mail for: если не знаете зачем оно, то оставляйте пустое поле
Machines to relay mail for: аналогично, если не знаем — оставляем пустым
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Delivery method for local mail: Maildir
Split configuration into small files? По желанию. Я ставлю No.
Ещё могут спросить, кому перенаправлять почту локального админа. Я пишу root и не парюсь.
Теперь вы можете отправлять письма при помощи апача (чуть позже опишу как настроить) или командой вида echo «Testing Exim» | mail -s Test vlad@debian.pro
Ну и да — не стоит спамить ;)
Так же не используйте этот метод для тех случаев, когда доступ к серверу по ssh (или даже по ftp в каталоги, доступные по http) имеют доступ люди, которые могут начать спамить.

вторник, 19 ноября 2013 г.

Централизованный сбор, хранение и просмотр Syslog в Debian Linux

В качестве стандартного syslog-сервиса в Debian используется rsyslog. Дальше рассказывается, как отправлять копии журналов на сервер, сохранять их в SQL-базе и просматривать через удобный Веб-интерфейс.



Отправка с клиентских машин на центральный сервер


Создаём файл /etc/rsyslog.d/send2server.conf со строкой:
*.* @hostname-или-fqdn-или-ip-адрес-сервера
Например:
*.* @netlog.lan
Чтобы не собирать отладочный мусор, можно заменить "*.*" на "*.notice" или "*.warning".
Перечитываем настройки: /etc/init.d/rsyslog restart

Протокол доставки


  • по умолчанию используется udp/514
  • если указать "@@" вместо "@", то вместо стандартного UDP станет использоваться TCP (нестандартное расширение!).
  • если нужна 100% надёжность доставки, вместо udp/tcp следует использовать модули omrelp на клиенте и imrelp на сервере.


Приём на сервере


В /etc/rsyslog.conf должны быть раскомментированы строки:
$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514

Перечитываем настройки: /etc/init.d/rsyslog restart

Хранение в MySQL


  • apt-get install rsyslog-mysql
  • аккуратно отвечаем на все задаваемые вопросы,
  • если не считать паролей, достаточно подтверждать предлагаемые значения,
  • настройки сохраняются в /etc/rsyslog.d/mysql.conf


Просмотр в LogAnalyzer


  • Страница скачивания: loganalyzer.adiscon.com/downloads (в пакетах Debian отсутствует)
  • Установка зависимостей: apt-get install libapache2-mod-php5
  • Из архива с исходными текстами внутрь /var/www требуется скопировать папку ./src и переименовать её в «loganalyzer».
  • Рекомендуемое исправление для ./include/functions_common.php, чтобы убрать предупреждения из логов Apache:
    --- loganalyzer/include/functions_common.php.orig 2011-11-14 14:32:32.000000000 +0200
    +++ loganalyzer/include/functions_common.php 2011-11-16 02:05:58.982834986 +0200
    @@ -1163 +1163,2 @@
    - $content['EXTRA_METATAGS'] .= '/>';
    + if (array_key_exists($content['HeaderDefaultEncoding']))
    + $content['EXTRA_METATAGS'] .= '/>';
  • Создание пустого файла конфигурации, будет заполнен инсталлятором:
    touch config.php
    chmod 666 config.php


Подготовка SQL-баз для LogAnalyzer



SQL-таблицу Syslog.SystemEvents стандартного формата LogAnalyzer автоматически дополняет собственными столбцами, но для этого потребуется давать ему слишком большие привилегии. Чтобы разрешить ему только SELECT, создадим столбцы вручную:
ALTER TABLE `SystemEvents` ADD `processid` varchar(60) NOT NULL DEFAULT '';
ALTER TABLE `SystemEvents` ADD `checksum` int(11) UNSIGNED NOT NULL DEFAULT '0';



Настройка LogAnalyzer


  • Открываем netlog.lan/loganalyzer/install.php и проходим все шаги.
  • Формат syslog-базы = MonitorWare.
  • Имя базы Syslog и таблицы SystemEvents являются регистрозависимыми.

После завершения установки:
chmod 644 config.php
rm install.php

Первый пользователь имеет права администратора.
Рекомендуется зайти в «Admin Center / Users» и зарегистрировать гостя с флагом «ReadOnly User».

понедельник, 11 ноября 2013 г.

Как конвертировать видео G2M3/G2M4

В комплект GoToMeeting, входит необходимый кодек, для кодирования в Windows Media формат.

Итак начнем по порядку.

У вас есть файл video.
wmv, кодированный в G2M3/G2M4 формате.

1. Необходимо скачать и установить кодек, это можно сделать на странице разработчика этого кодека
www.gotomeeting.com/codec
Нажимаем  кнопку "
Install GoToMeeting Codec" и следуем инструкциям.
2. После установки открываем содержимое директории  C:\Program
Files\Citrix\GoToMeeting\1082
, где 1082 - номер установленной версии GoToMeeting, у вас это может быть другое число.

3. Затем, копируем содержимое папки в отдельный каталог.
Например,
D:\test

4. Копируем в этот же каталог нашу видео запись.
Осторожно!!! Рекомендую работать с копией, а не с оригиналом, так как файл будет перезаписан!!!

5. Открываем терминал (коммандную строку).
Для этого нажимаем
Win+R, в окне "выполнить" вводим cmd и нажимаем ENTER.

6. Переходим в каталог
D:\test\
Для этого выполним команду
D:
D:\cd test
 
7. Запускаем процесс конвертирования, выполнив команду
ВНИМАНИЕ!!! Исходный файл будет перезаписан!!!

D:\test\g2mtranscoder.exe source=d:\test\video.wmv

Вот и все!!! Откроется маленькое окошко с кнопкой
Cancel и начнется конвертация видео.

пятница, 8 ноября 2013 г.

Восстановление пароля root

Для смены пароля root, не зная его, делаем следующее:
Получив физический доступ к компьютеру, нажимаем Ctrl + Alt + Del (возможно дважды) - система уходит в перезагрузку.

1 вариант)
  • Попробовать загрузиться в однопользовательском режиме (single mode). Для этого в меню загрузчика (Grub или Lilo - всё равно) отредактировать вариант, начинающийся со слова kernel - добавить в конец 1 или слово single, заменив также режим монтирования диска (если указан) с ro на rw (чтобы можно было сохранить новый пароль).
  • Если при загрузке запрашивает пароль root'a, то нужно перезагрузиться и изменить команду загрузчика по другому, добавив вместо single параметр init=/bin/bash, заменив также режим монтирования диска (если указан) с ro на rw

2 вариант)
  • Входим в интерактивный режим загрузчика (см выше) и указываем ему опцию:
linux init=/bin/bash
  • После загрузки оболочки необходимо перемонтировать корневой раздел в режим RW:
mount -o remount,rw /
  • Меняем пароль:
passwd
  • Сбросим данные из кеша на диск. Для этого достаточно просто перемонтировать корневой раздел обратно в режим только для чтения:
mount -o remount,ro /
  • Теперь можно перезагрузить компьютер в обычный режим. Не забывайте, что скрипты инициализации для нашего сеанса /bash не работают.

понедельник, 4 ноября 2013 г.

Настройка VLAN в Linux

1. Модуль ядра для работы с VLAN
Для работы в Linux с VLAN необходимо загрузить модуль ядра: 8021q
# modprobe 8021q
Для этого, ядро должно быть сконфигурировано с поддержкой стандарта IEEE 802.1Q (включается при конфигурировании ядра: в kernel/net/8021q включить 802.1Q VLAN Support или в Network options / 802.1Q VLAN Support). Во многих современных дистрибутивах Linux (Debian, CentOS, openSUSE и т.д) такая поддержка уже включена в ядре и модуль можно загружать.

 2. Использование утилиты vconfig для настройки VLAN
Что бы настроить на интерфейсе необходимые VLAN, можно воспользоваться утилитой vconfig она находится в пакете vlan либо в пакете vconfig, в зависимости от дистрибутива Linux.
vconfig имеет следующие опции:
 add [interface-name] [vlan_id] — добавить VLAN с номером vlan_id (от 0 до 4095) на интерфейсе interface-name
 rem [vlan-name] — удалить VLAN, именованый как vlan-name (имя vlan-name зависит от того, какой тип именования выбран см. ниже)
 set_flag [interface-name] [flag-num] [0 | 1] — указывает следует ли делать перестановку (reorder) заголовка Ethernet кадра. Если значение 1 — перестановка включена, и трафик в снифферах (tcpdump и т.д)  будет выглядеть как трафик обычного сетевого устройства без тегов VLAN. Если значение - перестановка отключена, и трафик видится с тегами VLAN. Значение по умолчанию: 0.
 set_egress_map [vlan-name] [skb_priority] [vlan_qos- указывает, что для исходящих пакетов через vlan-name с определённым приоритетом буфера сокетов (sk_buff) skb_priority, должна выполняться маркировка приоритета VLAN в значение vlan_qos (3-х битное значение в VLAN заголовке). По умолчанию значение приоритета VLAN vlan_qos: 0.
 set_ingress_map [vlan-name] [skb_priority] [vlan_qos- указывает, что входящие пакеты через vlan-name с определённым приоритетом VLAN vlan_qos, должны помещаться в очередь буфера сокетов с приоритетом  skb_priority. Значение по умолчанию приоритета очереди буфера сокетов skb_priority: 0.
 set_name_type [name-type] - задаёт тип именования VLAN интерфейсов, при их добавлении. Возможные значения name-type:
    VLAN_PLUS_VID — имя vlan-name будет вида  vlan0020
    VLAN_PLUS_VID_NO_PAD - имя vlan-name будет вида vlan20
    DEV_PLUS_VID - имя vlan-name будет вида eth0.0020
    DEV_PLUS_VID_NO_PAD - имя vlan-name будет вида eth0.20
 Пример добавление VLAN 100 и VLAN 200 на интерфейсе eth0:
#
# modprobe 8021q
# vconfig add eth0 100
    Added VLAN with VID == 100 to IF -:eth0:-
# vconfig add eth0 200
    Added VLAN with VID == 200 to IF -:eth0:-
#
Посмотреть существующие VLAN можно в файле "/proc/net/vlan/config"
# cat /proc/net/vlan/config
   VLAN Dev name | VLAN ID
   Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
   eth0.100 | 100 | eth0
   eth0.200 | 200 | eth0
#
Задать IP адрес на  VLAN интерфейсах и включить их, можно командой ifconfig:
#
# ifconfig eth0.100 192.168.100.1 netmask 255.255.255.0 up
# ifconfig eth0.200 192.168.200.1 netmask 255.255.255.0 up
#

 3. Сохранение конфигурации VLAN интерфейсов при перезагрузке системы 
Создание VLAN через vconfig и их настройка через ifconfig позволяет сохранить настройки до перезагрузки системы, что бы настройка применялась при загрузке операционной системы, необходимо создать специальные файлы конфигурации для VLAN интерфейсов.
Конфигурация VLAN интерфейсов зависит от того, какие скрипты инициализации сети используется в дистрибутиве Linux (initscripts, sysconfig или interfaces). Что бы узнать, какая система инициализации сети у Вас, следует:
  — Выполнить команду "rpm -qf /sbin/ifup" на экране отобразится название пакета, название начинается на "initscripts" либо на "sysconfig". Этот пакет и предоставляет скрипты инициализации сети.
  - Если в директории "/etc/network" присутствует файл "interfaces", то в Вашей системе используется interfaces для инициализации сети
 Рассмотрим примеры настройки для всех трёх типов инициализации сети.

Настройка VLAN в Linux с использованием initscripts
Примером дистрибутивов Linux, использующих для настройки сети initscripts, являются RedHat, CentOS, Fedora и пр.
Файлы описания (конфигурации) для VLAN интерфейсов следует создавать в "/etc/sysconfig/network-scripts/". Имя файла должно быть вида: ifcfg-ethX.Y, либо вида ifcfg-vlanY (тогда в самом файле ifcfg-vlanY необходимо задать соответствующее значение параметра VLAN_NAME_TYPE ), где X — номер сетевого интерфейса, Y — идентификатор (номер) VLAN (VID)
Для примера, на интерфейсе eth0 добавим два VLAN 100 и 200. Что бы рассмотреть пример обоих файлов, создадим в "/etc/sysconfig/network-scripts/" один файл ifcfg-eth0.100 (описание для VLAN 100) и второй ifcfg-vlan200 (описание для VLAN 200).
 Содержание файла "ifcfg-eth0.100":
VLAN=yes
DEVICE=eth0.100
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.100.1
NETMASK=255.255.255.0
 Содержание файла "ifcfg-vlan200":
VLAN=yes
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
DEVICE=vlan200
PHYSDEV=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.200.1
С такими файлами, после перезагрузки системы, на интерфейсе eth0 будут присутствовать два VLAN 100 и 200. Модуль ядра 8021q, при этом, загрузился автоматически.
Проверка:
#
# lsmod | grep 8021q
    8021q 20355 0
    garp 5703 1 8021q
#
# cat /proc/net/vlan/config
     VLAN Dev name | VLAN ID
     Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
     eth0.100 | 100 | eth0
     vlan200  | 200 | eth0
#
#
# ifconfig eth0.100
   eth0.100 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
            inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
            inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0
            TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)

# ifconfig vlan200
   vlan200 Link encap:Ethernet HWaddr 00:0C:29:64:7F:04
           inet addr:192.168.200.1 Bcast:192.168.200.255 Mask:255.255.255.0
           inet6 addr: fe80::20c:29ff:fe64:7f04/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:0 (0.0 b) TX bytes:768 (768.0 b)
#
 Видно, что модуль ядра 8021q загружен, созданы VLAN 100 и 200, подняты соответствующие им интерфейсы с заданными IP адресами. (Значение RX равно 0, так как на интерфейс ещё не подан транк со стороны коммутатора).

Настройка VLAN в Linux с использованием sysconfig
Одним из примеров дистрибутива Linux, использующего для настройки сети sysconfig, является SuSE Linux.
Нужно создать в директории "/etc/sysconfig/network/" файлы для конфигурации необходимых VLAN. Имя файла имеет вид: ifcfg-vlanX, где X — номер VLAN (VID)
В содержание файла, помимо настроек сети (IP адрес, маска сети и т.д.), необходимо добавить параметры: ETHERDEVICE и VLAN

Пример создания двух VLAN 100 и 200 на интерфейсе eth0:
Создаем в "/etc/sysconfig/network/" два файла, первый с именем  ifcfg-vlan100 и второй с именем ifcfg-vlan200
Содержание файла "ifcfg-vlan100":
ETHERDEVICE="eth0"
IPADDR="192.168.100.2"
NETMASK="255.255.255.0"
NETWORK="192.168.100.0"
BROADCAST="192.168.100.255"
STARTMODE="onboot"
VLAN="YES"
Содержание файла "ifcfg-vlan200":
ETHERDEVICE="eth0"
IPADDR="192.168.200.2"
NETMASK="255.255.255.0"
NETWORK="192.168.200.0"
BROADCAST="192.168.200.255"
STARTMODE="onboot"
VLAN="YES"
После перезагрузки системы или выполнения команды "/etc/init.d/network restart", на интерфейсе eth0 появятся два VLAN 100 и 200, а VLAN интерфейсы vlan100 и vlan200 будут подняты с заданной настройкой IP адреса и маской сети. Так же модуль ядра 8021q будет загружен автоматически.
Проверить результат можно таким же способом, как описано в случае с initscripts ("lsmod | grep 8021q", "cat /proc/net/vlan/config","ifconfig")

Настройка VLAN в Linux с использованием interfaces (ifupdown)
Примером дистрибутивов Linux, использующих для настройки сети interfaces, являются Debian, Ubuntu и пр.
Настройка производится в файле: "/etc/network/interfaces", в который необходимо добавить дополнительные строки, описывающие VLAN интерфейсы и их настройку.

Пример создания двух vlan 100 и 200 на интерфейсе eth0:
Добавить в файл "/etc/network/interfaces" строки:
auto eth0.100
iface eth0.100 inet static
   address 192.168.100.3
   netmask 255.255.255.0
   vlan_raw_device eth0

auto eth0.200
iface eth0.200 inet static
   address 192.168.200.3
   netmask 255.255.255.0
   vlan_raw_device eth0

После перезагрузки, или после выполнения команд "# ifup eth0.100″ и "# ifup eth0.200″, на интерфейсе eth0 появятся два VLAN 100 и 200, интерфейсы eth0.100 и eth0.200 будут подняты с заданными сетевыми настройками. Так же модуль ядра 8021q будет автоматически загружен.
Проверить результат можно таким же способом, как описано в случае с initscripts ("lsmod | grep 8021q", "cat /proc/net/vlan/config","ifconfig")

четверг, 31 октября 2013 г.

Как создать VLAN и добавить в него порты на коммутаторах серий DES-35XX, DES-38XX, DES-30XX и DES-3226S по SNMP

Задача:
Создать VLAN с VID=5 и добавить в него порты: порт 14 как tagged, порты 25-26 как untagged.
Примечание: Порты 14, 25-26 удалены из VLAN default.
Команда (для серий DES-38XX, DES-35XX и DES-30XX):
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.1.5 s v5 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000400C0 1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 00000000 1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000 1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4
Объяснение:
5 - VID
snmpset -v2c -c private 192.168.0.1
1.3.6.1.2.1.17.7.1.4.3.1.1.5 sv5 <= Задаём имя VLAN-а с VID=5 – v5.

1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000400С0 <= Порты, которые должны быть добавлены в VLAN как tagged– порты 25-26.
Порты задаются следующим образом:
x 00000000 – шестнадцатеричное число, каждый октет (4 разряда) которого представляют 4 порта. Старший разряд представляет порт 1. Старшие два разряда седьмого октета представляют порты 25-26. Т.е. 1100 (двоичное) = C (шестнадцатеричное).
1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 00000000 <= Порты, которые не могут быть добавлены в этот VLAN (forbidden).

1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000 <= Порты, которые должны быть добавлены в VLANкак untagged– порт 14.
*  Для того, чтобы добавить untagged порт в VLAN, сначала его нужно добавить как tagged, т.е. добавление в VLAN как untaggedпорта 14 будет выглядеть следующим образом, при условии, что VLANv5 уже создан:
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 00040000  1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000
1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4 <= Создать VLAN с указанными параметрами createAndGo(4)


Команда (для DES-3226S):
Отличие заключается в том, что DES-3226S поддерживает аппаратное стекирование. В стек может быть добавлено до 16 коммутаторов DES-3226S, следовательно общее количество портов 26*16 = 416. Количество шестнадцатеричных цифр представляющих это количество портов 416:4 = 104. Исходя их этого и указывается количество шестнадцатеричных разрядов.
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.1.5 s v5
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000000C000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 000000C000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 0004000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4

вторник, 29 октября 2013 г.

Как перезагрузить управляемые коммутаторы D-Link по SNMP?



Параметр SNMP, отвечающий за перезагрузку устройства, может отличаться в зависимости от модели коммутатора.
Ниже приведена таблица этих параметров для наиболее распространённых моделей управляемых коммутаторов D-Link:
Модель коммутатора FW Параметр SNMP Значение
DES-2110 Любая miscReset(OID=1.3.6.1.4.1.171.10.61.1.3.2) (1) - reset
DES-2108 Любая miscReset(OID=1.3.6.1.4.1.171.10.61.2.3.2) (1) - reset
DES-3226S Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.36.2.5.2.1.0) (2) - cold start
DES-3226S Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.48.1.1.1.1.2.5) (2) - cold start
DES-3250TG Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (2) - cold start
DES-3026 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-3526 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3.0) (3) - warm start
DES-3326SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.49.2.1.1.1.2.5) (2) - cold start
DES-3350SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-3828 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3024 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (2) - cold start
DES-3224TGR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3312SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3324SR
DGS-3324SR
DXS-3326GSR
DXS-3350SR
Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-6500 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start

AAA на коммутаторах D-Link через RADIUS

Конфиг для авторизации (  где 192.68.0.105 - радиус сервер, 1 - пароль для повышения привелегий)

create authen server_host 192.68.0.105 protocol radius port 1812 key "mkserveradius" timeout 5 retransmit 2
config authen server_group radius delete server_host 192.68.0.105 protocol radius
config authen server_group radius add server_host 192.68.0.105 protocol radius
config authen_login default method radius local
create authen_login method_list_name terminal
config authen_login method_list_name terminal method local
config authen_enable default method local_enable
create authen_enable method_list_name terminal
config authen_enable method_list_name terminal method local_enable
config authen application console login method_list_name terminal
config authen application console enable method_list_name terminal
config authen application telnet login default
config authen application telnet enable default
config authen application ssh login default
config authen application ssh enable default
config authen application http login default
config authen application http enable default
config authen parameter response_timeout 30
config authen parameter attempt 3
enable authen_policy
config admin local_enable

1
1

Настройка RADIUS описана в этой ссылке : Примеры настройки аутентификации при доступе к коммутатору с использованием серверов Radius и Tacacs+

понедельник, 28 октября 2013 г.

Конвертация flv to avi, swf to avi

Добрый день. Возникла необходимость сконвертировать видео flv в avi, для просмотра на IPad и Android устройствах. Наверное есть какие-то приложения для Android и IOS, которые позволяют смотреть flv, но приложений под IOS, которые просматривают swf точно нет, т.к. для проигрывания swf нужен Flash. От конвертации под Windows я сразу отказался, по трём причинам:
1.  Происхождение приложений. Скачивая приложения с непонятных сайтов и устанавливая их с правами администратора, можно получить очень "интересные" последствия. Наверное, я параноик, но устанавливать непонятные Win-приложения я не хочу.
2. Интерфейс у приложений, какой-то не очень для меня очевидный. Может быть я тупой или ленивый, но разбираться в невероятном количестве менюшек мне не хотелось.
3. В процессе конвертации видео на моём бюджетном ноутбуке, выяснилось что время, затрачиваемое на конвертацию, чуть ли не больше, чем время воспроизведения файла. Т.е. на конвертацию 20 часов видео потратиться более суток и если при этом что-то, программа  вернёт ошибку, то сколько то часов времени будет потеряно.

И тут мне в голову пришла совершенно очевидная мысль: не может быть, что бы в репозиториях для Debian не было средства для конвертации. Первая же ссылка в поиске привела меня на форум OpenNet . А дальше дело техники:
# apt-get install ffmpeg

Сам код для конвертации без потери качества, для тех кому день читать man :
ffmpeg -i src.flv -vcodec copy -acodec copy dst.avi

И маленький скриптик:

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
        ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi &
done

exit 0


Кстати, очень важно наличие амперсанда & в конце команды :

ffmpeg -i $i.flv -vcodec copy -acodec copy $i.avi

Т.к. это позволяет запустить конвертацию в несколько "потоков" и отвязать выполнение скрипта от консоли в которой он запущен. Т.е. после запуска скрипта проверяем наличие ffmpeg
в top и можно закрывать консоль. На моём сервере с древним Xeon и 2 Гб оперативной памяти все процессы (12 шт.) ffmpeg "съели" 4% процессорного времени и всё видео (20 часов) сконвертировалось в течении 3-4 минут.

Желающие могут усовершенствовать скрипт использую BASH Guide .
Конвертация проходит без потери качества.
Удачи:)

воскресенье, 27 октября 2013 г.

Обновляем прошивку на коммутаторах D-Link

Существует по крайне мере 4 способа (возможно есть и еще) обновления прошивки на коммутаторах D-link
Для примера возьмем DES-3526
1. Загрузка прошивки через консольный кабель (восстановление слетевшей прошивки)
2. Загрузка прошивки по сети, через cli.
3. Загрузка прошивки через web интерфейс
4. Загрузка прошивки по средствам snmp.

FTP с которого можно получить прошивки, MIB и т.п. ftp://ftp.dlink.ru/pub/Switch/

Первый способ применим лишь  тогда, когда на коммутаторе отсутствует прошивка. Про этот способ я уже писал, ознакомиться с ним можно тут Восстановление прошивки на коммутаторах D-link
2. Загрузка прошивки по сети, через cli.
- Необходимо зайти на коммутатор по telnet или ssh.
- Ввести в командной строке коммутатора команду:
download firmware <Полный путь к файлу прошивки> <указать в какой слот загружать прошивку, в первый или во второй, если не указывать image_id то по умолчанию будет 1 слот)>
Пример команды:
DES-3526:admin# download firmware_fromTFTP 192.168.200.10 fw_des3526
Дождавшись загрузки и установки прошивки на коммутатор, необходимо перезагрузить коммутатор, выполнив команду reboot на коммутаторе и нажав «y» для подтверждения.
3. Загрузка прошивки через web интерфейс
Заходим на коммутатор через веб-интерфейс, выбираем Maintenance -> Download firmware

Вписываем в поле Server IP Address – ip-адрес tftp сервера, а в поле File Name – имя файла прошивки, после этого нажать старт.






Дождавшись окончания загрузки необходимо перезагрузить коммутатор.
4. Загрузка прошивки по средствам snmp.
Задаем IP-адрес TFTP-сервера:
snmpset –v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.3.1 a 192.168.200.10
172.20.0.1 -> IP-адрес коммутатора
192.168.200.10 -> IP-адрес TFTP-сервера
Указываем тип передачи файла:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.4.1 i 2
Задаем имя файла прошивки:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.5.1 s fw_des3526
Указываем загрузку файла на коммутатор
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.7.1 i 3
Начать передачу файла:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.8.1 i 3
Выбрать ID прошивки в качестве загрузочной:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.10.1 i 1
Теперь осталось только перезагрузить коммутатор:
snmpset -t 45 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.3.0 i 3
Получился у нас приблизительно такой скрипт:
#!/usr/local/bin/bash
snmpset -t 90 -r 1 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.3.1 a 192.168.200.10 \
1.3.6.1.4.1.171.12.1.2.1.1.4.1 i 2 \
1.3.6.1.4.1.171.12.1.2.1.1.5.1 s fw_des3526 \
1.3.6.1.4.1.171.12.1.2.1.1.7.1 i 3 \
1.3.6.1.4.1.171.12.1.2.1.1.8.1 i 3 \
1.3.6.1.4.1.171.12.1.2.1.1.10.1 i 1
snmpset -t 45 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.3.0 i 3
P.S: Сохранение конфига:
snmpset -t 60 -r 1 -v2c -c private 10.90.90.90 1.3.6.1.4.1.171.12.1.2.6.0 i 3

пятница, 25 октября 2013 г.

Включение LLDP D-Link 3200-28

config lldp ports 1-24 notification disable
config lldp ports 1-24 admin_status disable
config lldp ports 25-28 notification enable
config lldp ports 25-28 admin_status tx_and_rx
config lldp ports 25-28 basic_tlvs port_description system_name system_description system_capabilities enable
config lldp ports 25-28 mgt_addr ipv4 10.4.255.23 enable
config lldp forward_message enable
config lldp ports 25-28 notification enable
config lldp ports 25-28 basic_tlvs all enable
config lldp ports 25-28 dot1_tlv_pvid enable
config lldp ports 25-28 dot1_tlv_vlan_name vlan all enable
enable lldp

Полезные ссылки:
XGU LLDP

четверг, 17 октября 2013 г.

Lighttpd + WebDAV


Ставим пакеты:

apt-get update
apt-get install -y lighttpd
apt-get install -y lighttpd-mod-webdav

Добавляем в конфиг файл
vi /etc/lighttpd/lighttpd.conf

$HTTP["url"] =~ "^/dav($|/)" {
webdav.activate = "enable" # allow module
webdav.is-readonly = "disable" # enable write
webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db" # access to locaks and metadata database
}

Около блока "server.modules" ищем строку "mod_webdav" и убираем знак диеза слева, если он установлен.

После этого нам требуется создать хотя бы одну папку с доступом по WebDAV. Корнем веб сервера устанавливается папка /var/www, если вас устраивает такое положение, можете её так и оставить, в противном случае можете изменить её местоположение в конфиг файле. После этого создаем папку для WebDAV доступа:
mkdir /var/www/dav
chown www-data:www-data /var/www/dav

Ну и напоследок применяем настройки:
/etc/init.d/lighttpd restart

После это можно каким-нить WebDAV клиентом (я использовал nd) попробовать поиграться с папкой http://ваш_сайт/dav

Я использовал версию (в случае же проблем, обновляемся на более новую):
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Apr 15 2008 08:23:10

Играемс:
nd -d http://домен.ru:81/dav/suxx.ics --- удаление файла
nd -p wammu.log http://домен.ru:81/dav/suxx.log -- загружаем файл
nd -m http://домен.ru:81/dav/suxx555.log http://домен.ru:81/dav/suxx.log -- перемещаем файл
nd -v http://домен.ru:81/dav/555suxx.log -- запрос свойств объекта
У меня было выдано:
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:

Зададим новое свойство:
nd -l http://домен.ru:81/dav/suxx555.log -- блокируем объект
Lock: token="opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725",
scope="exclusive",
owner-href="",
timeout="Second-600"

nd -u -t opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725 http://домен.ru:81/dav/suxx555.log -- разлочим объект посредством "ключа", выданного нам при блокировке
nd -k http://домен.ru:81/dav/folder1 -- создаем новую папку

А вот далее интереснее:
nd -e test=12345 http://домен.ru:81/dav/suxx555.log
nd -v http://домен.ru:81/dav/suxx555.log
Name: http://домен.ru:81/dav/suxx555.log
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:


Как видите, вновь заданное свойство не показывается (хотя в sqlite лайта базе данных оно имеется). Это баг nd / lighttpd или же я туплю ? Попробуем другой WebDAV клиент, пожалуй, это будет cadaver.
nrg@dell:~$ cadaver
dav:!> open http://домен.ru:81/dav
dav:/dav/> propset suxx555.log suxx 777
dav:/dav/> propget suxx555.log suxx
Fetching properties for `suxx555.log':
Value of suxx is: 777


Таки выходит, глюк nd. Ну вот и все, осталось только придумать, для чего использовать такой замечательный протокол :)

Установка net-snmp-utils в RHEL

Добрый день. Возникла необходимость установить на RedHat x86_64 snmpwalk. Естественно в репозитории rhel его нет. snmpwalk находится в пакете net-snmp-utils . Поискав решение в интернете я поключил несколько репозиториев EPEL, REMI, RPMforge .

Комманды для x86_64 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities

Комманды для i386 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities
 
Включаем репозитории и выставляем приоритет: 
Во всех репозиториях выставляем enabled=1 и после этой строчки добавляем priority=10 .
vim /etc/yum.repos.d/remi.repo
 
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
 
vim /etc/yum.repos.d/epel.repo
 
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&amp;arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
 
Но это не сработало. На http://mirror.centos.org/centos/5/os/x86_64/CentOS/ я нашёл 
нужные пакеты:
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-5.3.2.2-20.el5.x86_64.rpm
rpm -Uhv net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm

Теперь работает.

RPM

Простые манипуляции

Чтобы ... Нужно выполнить
Импортировать GPG ключ для проверки пакетов # rpm --import RPM-GPG-KEY
Посмотреть информацию о пакете, который лежит в текущем каталоге $ rpm -qip package-1.rpm
Посмотреть список файлов из неустановленного пакета $ rpm -qlp package-1.rpm
Посмотреть скрипты %pre- %post- install (uninstall) $ rpm -qp --scripts package-1.rpm
Посмотреть changelog пакета $ rpm -qp --changelog package-1.rpm
Установить пакет $ rpm -ivh package-1.rpm
Обновить или установить пакет $ rpm -Uvh package-1.rpm
Обновить пакет, если его предыдущая версия установлена в системе $ rpm -Fvh package-1.rpm
Узнать, какому пакету принадлежит данный файл $ rpm -qf /etc/sysctl.conf
Посмотреть информацию об уже установленном пакете $ rpm -qi initscripts
Посмотреть список всех установленных пакетов $ rpm -qa
Найти все пакеты, начинающиеся на gnome $ rpm -qa "gnome*"
Удалить пакет $ rpm -e package
Посмотреть даты инсталляции пакетов $ rpm -qa --last
Посмотреть зависимости необходимые пакету $ rpm -qR yum



Манипуляции посложнее

Использование ключа подсказки --aid

При инсталляции нового пакета иногда возникают ситуации, в которых требуется добавить еще один или несколько пакетов для удовлетворения зависимостей. К сожалению, по-умолчанию RPM не сообщает какой именно пакет нужен, сообщает только имя библиотеки и версию. Дело в том, что информация о все пакетах, входящих в официальный дистрибутив, содержится отдельно - в специальном пакете rpmdb-* (для версий дистрибутивов RedHat это будет rpmdb-redhat-<дата-релиза>, для CentOS - rpmdb-CentOS-<дата-релиза> и т.д.).
Например: rpmdb-CentOS-4.4-0.20060828
Т.е. необходимым условием является наличие этого пакета, проинсталлированного в системе.
Проверяем:
# rpm -ivh --aid samba-swat-3.0.9-1.3E.7.x86_64.rpm
error: open of /var/spool/up2date/samba-3.0.9-1.3E.7.x86_64.rpm failed: No such file or directory
error: Failed dependencies:
        samba = 0:3.0.9 is needed by samba-swat-3.0.9-1.3E.7
Здесь нам указали, что для инсталляции samba-swat потребуется обязательный пакет samba с версией 0:3.0.9
Обратите внимение на строчку "error: open of /var/spool/up2date/samba-3.0.9-1.3E.7.x86_64.rpm failed: No such file or directory". RPM сам попытался проинсталлировать пакет, но не нашел его в каталоге /var/spool/up2date. Если мы заглянем в конфигурационный файл /etc/rpm/macros.solve и исправим параметр %_solve_pkgsdir на местоположение всех пакетов дистрибутива, то после повторного выполнения команды, RPM найдет необходимый пакет и автоматически его проинсталлирует.
Например, все пакеты дистрибутива у нас живут в каталоге /opt/linux/redhat/as30u7/x86-64, который в свою очередь смонтирован по NFS с сервера. Тогда в файле /etc/rpm/macros.solve должно быть:
%_solve_pkgsdir /opt/linux/redhat/as30u7/x86-64
А вот результат выполнения команды:
# rpm -ivh --aid samba-swat-3.0.9-1.3E.7.x86_64.rpm
Preparing...                ########################################### [100%]
   1:samba                  ########################################### [ 50%]
   2:samba-swat             ########################################### [100%]


Чтобы добавить новые ключи, расширяющие возможности стандартного вывода:

$ cat >~/.popt 
rpm     alias --arch --qf '%{NAME}  %{VERSION}-%{RELEASE} %{ARCH}\n' \
        --POPTdesc=$\"list package name, version, release and arch\"
^D
Посмотреть оригинальные запросы можно в /usr/lib/rpm/rpmpopt-*.
Альтернативные форматы запросов можно помещать в /etc/popt или в ~/.popt

Чтобы увидеть результат выполним комнду: `rpm -q --arch postfix` 
 и сравним ее вывод с выводом этой команды: `rpm -q --arch kernel`
Посмотреть список полей $ rpm -q --querytags
Вывод дополнительных полей $ rpm -q --qf '%{NAME}\t%{VERSION}-%{RELEASE}.%{ARCH}\t%{LICENSE}\n' package-1
Проверить целостность установленного пакета $ rpm -V postfix
Проверить целостность всех установленных пакетов в системе $ rpm -Va
Откатить пакеты по состоянию на 1 мая $ rpm -Uhv --rollback 'may 1'




  • расшифровка результатов проверки целостности:
    `S.......` отличаются размеры файлов
    `.M......` отличаются флаги и права доступа
    `..5.....` отличается контрольная сумма
    `...D....` несоответствуют major/minor номер устройств
    `....L...` readLink(2) path mismatch
    `.....U..` отличаются владельцы
    `......G.` отличаются группы-владельцы
    `.......T` отличается время модификации
    ` c` - файл из секции %config, то есть явно конфигурационный файл
    ` d` - файл из секции %doc, аналогично - явно принадлежит к документации
    ` g` - файл-призрак, т.е. содержимое файла явно не существует в пакете (но возможно создается скриптами при инсталляции пакета)
    ` l` - файл из секции %license
    ` r` - файл из секции %readme

Сложные манипуляции

Как откатить систему пакетов по состоянию на определенное время

1. Добавить в файл /etc/rpm/macros
%_repackage_all_erasures 1
2. Для отката состояния использовать опцию --rollback
rpm -Uhv --rollback '12 hours ago'
требуется `%_repackage_all_erasures 1` в /etc/rpm/macros

среда, 16 октября 2013 г.

Загрузочная флешка с ОС Windows

Возникла задача сделать загрузочную флешку с Windows Vista . Почему именно Vista не важно, задача есть задача. Проблема заключается в том, что Windows 7 USB DVD Download Tool не работает с образами Windows XP и Windows Vista

Нам понадобится дистрибутив с операционной системой (на диске или в виде iso образа) и флешка/карта памяти объемом 4 Гб и больше.

Важное замечание: необходимо скопировать всю нужную информацию с флешки или карты памяти. Она будет форматироваться.

Сначала нужно вставить флешку или и запустить Командную строку (это можно сделать как через меню Пуск, так и через Выполнить (нажимаем Win + R) с вводом команды cmd). Она имеет примерно такой вид:
Командная строка
Вводим команду diskpart и нажимаем Enter:
Вводим команду diskpart и нажимаем Enter
Чтобы отобразить список всех запоминающих устройств, вводим команду list disk и нажимаем Enter:
Список запоминающих устройств
Флешка на скриншоте выше является Диск 2. У вас она может быть под другим номером (1, например). Вводим команду select disk 2 и нажимаем Enter (2 - это номер диска. Если у вас флешка под номером 1 (Диск 1), то вводим команду select disk 1. Это очень важно!):

Выбираем диск
Вводим команду clean, которая очищает выбранный диск, и нажимаем Enter:
Очищаем выбранный диск
Вводим команду create partition primary и нажимаем Enter:
Создаем раздел на диске
Вводим команду active и нажимаем Enter:
Активируем раздел
Форматируем раздел. Для этого вводим команду format fs=NTFS и нажимаем Enter:
Форматируем раздел
Назначаем флешке букву командой assign letter=Z и жмем Enter:
Назначаем флешке букву
е этого в системе должна появится флешка. Вводим команду Exit и нажимаем Enter:

Выходим с Diskpart
Теперь копируем все файлы с диска с дистрибутивом на флешку. Если у вас есть ISO образ с дистрибутивом, то рекомендую воспользоваться утилитой 7-Zip. Устанавливаем эту утилиту и выбираем образ с Windows:
Выбираем образ с Windows
Нажимаем на кнопку Извлечь и указываете вашу флешку:
Распаковываем образ на флешку
Ждем пока файлы скопируються
Вот и все.

Архив блога