ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архивные статьи в категории ‘FreeBSD’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

В данной статье рассматривается возможность использование MPD 5-й версии в качестве сервиса PPPoE на серверах FreeBSD.

Введение

Mpd — реализация multi-link PPP протокола для FreeBSD, основанная на netgraph(4). В его основу легли концепции скорости и гибкости настроек. Исходя из этих принципов настройка соединений происходит на пользовательском уровне (user land), в то время как передача данных является функцией ядра (kernel).

Mpd поддерживает множество типов соединений:

  • модем — для соединения различных асинхронных последовательных соединений (asychronous serial connections), включая модем, ISDN адаптеры, и нуль-модемное соединение (null-modem). Mpd включает в себя скриптовый язык обработки данных основанный на событиях (event-driven scripting language) для установки типа модема, утановки соединения, авторизации и т.д.
  • pptp — соединение точка-точка через Internet по протоколу PPTP (Point-to-Point Tunnelling Protocol). Данный протокол поддерживается большинством производителей операционных систем и оборудования.
  • l2tp — соединение через Internet используя протокол 2-го уровня L2TP (Layer Two Tunnelling Protocol). L2TP является дальнейшей реализацией протокола PPTP и также поддерживается современными производителями операционных систем и оборудования.
  • pppoe — соединение поверх Ethernet по протоколу PPP (PPP-over-Ethernet). Данный протокол в основном используется DSL провайдерами.
  • tcp — тунелирование PPP сессии поверх TCP соединения. Кодирование фреймов (Frames) происходит по аналогии с асинхронным соедиениеним (asychronous serial connections).
  • udp — туннелирование PPP сессии поверх UDP соединения. Каждый фрейм инкапсулируется в пакет с UDP датаграммой (UDP datagram packet).
  • ng — соединение различных устройств, поддерживаемых netgraph. Netgraph — система сетевых модулей уровня ядра, поддерживает синхронные последовательные соединения (synchronous serial connections), Cisco HDLC, Frame Relay, и многие другие протоколы.

MPD поддерживает некоторые реализации субпротоколов PPP и их расширений, таких как:

  • Multi-link PPP
  • PAP, CHAP, MS-CHAP и EAP автроризация
  • сжатие трафика (traffic compression (MPPC, Deflate, Predictor-1))
  • криптование трафика (traffic encryption (MPPE, DESE, DESE-bis))
  • IPCP и IPV6CP параметры согласования

В зависимости от конфигурационных правил и параметров соединения, mpd может функционировать как обычный PPP клиент/сервер (client/server) или передавать пакеты без изменения другому хосту, используя поддерживаемый тип соединения, обеспечивая при этом LAC/PAC/TSA функциональность для построения распределенных сетей.

Mpd включает в себя следующие дополнительлные возможности:

  • поддержка IPv4 и IPv6.
  • управление по Telnet и HTTP.
  • различные типы авторизации и методы подсчета трафика (RADIUS, PAM, авторизация по скрипту, авторизация по файлу, …)
  • подсчет трафика по NetFlow
  • Network address translation (NAT)
  • Dial-on-demand с выключением по неактивности (idle timeout)
  • Динамическое управление соединением (Dynamic demand based link management (также известное как «rubber bandwidth»))
  • Функциональный язык написания скриптов для асинхронных последовательных соединений (synchronous serial ports)
  • Готовые скрипты для некоторых основных типов модемов и ISDN адаптеров
  • Интерфейс, независимый от типа устройств
  • Обширные возможности авторизации

Mpd изначально разрабатывался Whistle Communications, Inc. для ипользования во внутренней сети Whistle InterJet. В его основе лежит iij-ppp user-mode PPP код, сильно изменившийся до сего дня. Домашняя страница разработчиков Mpd в настоящее время хостится на сайте sourceforge.net MPD Project Page

Отличия от 4 версии:

  • Изменения структуры:
    • Устранены статические линки (static link) — реализация зависимостей бандла (bundle). Линки выбирает бандл, используя параметры согласования на сетевой стадии (NETWORK phase). Этим достигается простота и полная работоспособность клиента и мультифункциональность сервера. Также это дает возможность реализовать боелее сложные LAC, PAC и TSA настройки, чем было до 5 версии.
    • Внедрены шаблоны, основанные на динамическом создании линках/бандлах. Это позволило значительно сократить конфигурацию для серверов с большим количеством клиентов. Линк может автоматически создаваться входящим запросом (call request) от устройства или DoD/BoD запросом (Dial on Demand/Brake on Demand) из бандла. Бандл может автоматически создаваться при достижении сетевой стадии NETWORK phase.
    • Для упрощения объединена конфигурация физического и канального уровня, разделенных с верии 4.2.
  • Новые возможности:
    • PAM авторизация.
    • Добавлена поддержка динамического пула IP адресов.
    • Добавлена поддержка внешних скриптов авторизации ‘ext-acct’ как альтернатива ‘radius-acct’.
  • Изменения:
    • Значительные изменения в конфигурации комманд. Следует прочитать мануал и примеры.
    • FreeBSD 4.x и старые релизы DragonFly не поддерживаются.

Установка

Перед установкой следует решить для себя, как MPD будет загружать модули netgraph — через ядро или самостоятельно по мере необходимости.

Опции:
# netgraph options
options HZ=1000
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_CISCO
options NETGRAPH_ECHO
options NETGRAPH_FRAME_RELAY
options NETGRAPH_HOLE
options NETGRAPH_KSOCKET
options NETGRAPH_LMI
options NETGRAPH_RFC1490
options NETGRAPH_TTY
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_ETHER
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_TEE
options NETGRAPH_UI
options NETGRAPH_VJC

Можно включать в конфиг ядра не все подряд, а только то, что нужно вам.
При установке на FreeBSD черед пэкедж или порт, mpd автоматически установится в /usr/local/sbin/mpd5 с компиллированием дефолтового набора поддерживаемых устройств. Для запуска mpd требуются несколько конфигурационных файлов, которые находятся в директории /usr/local/etc/mpd5. В этой директории вы можете найти примеры конфигурационных файлов.

Перед запуском mpd, нужно выполнить настроики следующих файлов:

mpd.conf
Файл описывает одну или более конфигурации. При старте mpd через консоль указывается название конфигурации (которая может состоять из нескольких mpd комманд), которая и загружается. Если название не указывается, загружается конфигурация, описанная в разделе ‘default’. Каждая конфигурация определяет один или несколько бандлов (bundle), линков (link) или репитеров (repeater). Их описание начинаются с комманды create. Последующие комманды в конфигурации описывают различные уровни этих блоков.
mpd.secret
Файл содержит пары логин-пароль. MPD просматривает файл при авторизации. Файл должен быть доступен для чтения только root.
mpd.script
Файл содержит скрипты для модемных устройств.

Прикручиваем логи:

В файл /etc/syslog.conf добавляем:
!mpd
*.* /var/log/mpd.log

Создаем файл /var/log/mpd.log ручками командой:

touch /var/log/mpd.log

Задаем ротацию логов в файле /etc/newsyslog.conf

/var/log/mpd.log 600 7 100 * JC

Файл /etc/rc.conf должен содержать запись:

mpd_enable=»YES»

иначе система не даст запустить процесс mpd.

Старт MPD проходит через загрузчик /usr/local/etc/rc.d/mpd5 с опцией start.

/usr/local/etc/rc.d/mpd5 start

Стандартные опции {start|stop|restart}.

Системные настройки сервера

Есть некоторые моменты, которые следует учесть, если ваш сервер имеет большое количество соединений. Например, можно столкнуться с ситуацией, когда при выводе комманды ngctl list будет выдававаться No buffer space available. Чтобы этого избежать следует добавить в /boot/loader.conf:

kern.ipc.nmbclusters=16384
kern.ipc.maxsockets=16384
net.graph.maxalloc=2048
kern.maxusers=512
kern.ipc.maxpipekva=32000000

в /etc/sysctl.conf:

net.graph.maxdgram=128000
net.graph.recvspace=128000

Более подробную информацию об этих настройках можно найти здесь.

Если MPD работает на вланах (vlan), которые поднимаются из /etc/rc.local, я наблюдал такую картину. Процесс MPD стартует раньше, чем поднимаются вланы на интерфейсах. В итоге получается, что вроде как сервер рабоатет нормально, только никто подключиться не может. Из этой ситуации есть два выхода (напоминает: из любой ситуации всегда есть два выхода). Либо поднимать вланы через /etc/rc.conf, либо в загрузчик MPD /usr/local/etc/rc.d/mpd5 в начало добавляем строчку:

`/bin/sh /etc/rc.local`

Будьте осторожны, возможно через этот файл у вас прописывается маршрутизация или еще что-нибудь.

Убедитесь, что этот способ не затронет другие сервисы в вашей системе.

Файл конфига mpd.conf

В этой главе я постараюсь по подробнее рассмотреть файл своего рабочего конфига. Если вы мигрируете с более ранней версии MPD, конфигурационный файл придется переписывать. Напомню также, что в 5-ой версии отказались от mpd.links. Для начала полный листинг mpd.conf:

startup:
#configure mpd users
 set user admin PASSWORD
#configure the console
 set console self 127.0.0.1 5005
 set console open
#configure the web server
 set web self 0.0.0.0 5006
 set web open
default:
 load def_conf
def_conf:
 create bundle template B
 set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.pl
 set iface down-script /usr/local/etc/mpd5/vpn_down_mpd.pl
 set bundle enable compression
 set bundle enable encryption
 set iface idle 0
 set iface disable proxy-arp
 set iface enable tcpmssfix
 set ipcp yes vjcomp
 set ipcp ranges aaa.bbb.ccc.ddd/32 0.0.0.0/0
 set ipcp dns xxx.yyy.zzz.ddd qqq.www.eee.rrr
 set ccp yes mppc
 set mppc yes e40
 set mppc yes e56
 set mppc yes e128
 set mppc yes stateless
 set ecp disable dese-bis dese-old
 log -echo -ipv6cp -radius -rep
 load common
common:
 create link template PPPoE pppoe
 set link enable no-orig-auth
 set link max-children 300
 set auth max-logins 0
 load pppoe
pppoe:
 set link action bundle B
 set link enable multilink
 set link yes acfcomp protocomp
 set link disable chap pap eap
 set link enable chap chap-msv1 chap-msv2 chap-md5
 set link keep-alive 10 60
#pppoe on bge1 with service name "service_name0"
 create link template bge1_0 PPPoE
 set pppoe iface bge1
 set link enable incoming
 set pppoe service service_name0
#pppoe on bge1 with service name "service_name1"
 create link template bge1_1 PPPoE
 set pppoe iface bge1
 set link enable incoming
 set pppoe service service_name1
#pppoe on bge2 with service name "service_name0"
 create link template bge2_0 PPPoE
 set pppoe iface bge2
 set link enable incoming
 set pppoe service service_name0

Примечание:

Все строки, кроме комментариев и ссылок (строки которые заканчиваются на «:»), в файле mpd.conf должны начинаться с отступа (пробела).


Блок startup:

В этом блоке описываются юзеры для консольного и web интерфейса MPD, а также сами настройки консоли и web сервера. Если вам это не нужно, то конфигурация может начинаться с блока default, а блока startup может вообще не быть.

Блок default:

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

Блок def_conf:

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

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

create bundle template B — создаем бандл «B», он же будет выступать в качестве шаблона
set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.pl
set iface down-script /usr/local/etc/mpd5/vpn_down_mpd.pl
— цепляем
внешние скрипты на события создания и закрытия туннеля ppp.

MPD может передавать данные в качестве аргументов на события подключения и отключения пользователя к серверу:
$ARGV[0] — ngXX — номер тунеля
$ARGV[1] — inet
$ARGV[2] — aaa.bbb.ccc.ddd/32 — IP адрес сервера
$ARGV[3] — IP адрес, выданный пользователю
$ARGV[4] — логин пользователя

Эти аргументы вы можете использовать в perl скриптах vpn_up_mpd.pl и vpn_down_mpd.pl

set bundle enable compression — разрешаем CCP (Compression Control Protocol). Разрешаем только использование протокола, выбор протокола сжатия описан ниже.

set bundle enable encryption — разрешаем ECP (Encryption Control Protocol). Аналогично предыдущему пункту, выбор протокола сжатия описан ниже.

set iface idle 0 — таймаут в секундах неактивности, по истечении которого соединение принудительно разрывается со стороны сервера. «0» — не разрывать (стоит по дефолту).

set iface disable proxy-arp — запрещаем proxy-arp. Этот параметр полезен для имитации единой локалки для удаленных хостов.

set iface enable tcpmssfix — позволяет MPD управлять настройкой входящих и исходящих TCP SYN сегментов таким образом, чтобы не превышать MTU, допустимый на интерфейсе.

set ipcp yes vjcomp — разрешает компрессию заголовков (Van Jacobson TCP).

set ipcp ranges aaa.bbb.ccc.ddd/32 0.0.0.0/0 — пул IP адресов сервера/клиентов

set ipcp dns xxx.yyy.zzz.ddd qqq.www.eee.rrr — dns сервера, отдаваемые клиенту

set ccp yes mppc — включаем MPPC субпротокол сжатия/шифрования

set mppc yes e40 — включаем 40-bit MPPE шифрование

set mppc yes e56 — включаем 56-bit MPPE шифрование

set mppc yes e128 — включаем 128-bit MPPE шифрование

set mppc yes stateless — настройка, полезная при пакетлоссах (потерях)

log -echo -ipv6cp -radius -rep — уровни логгирования

load common — загрузка другого блока с именем common

Переходим к блоку common:

create link template PPPoE pppoe — создаем линк, он же будет выступать в качестве шаблона

set link enable no-orig-auth — Обычно при использовании PAP или CHAP авторизация происходит в начале соединения. Эта опция временно выключает данное требование в случае если наш сервер является единственным в сети, а клиенту вдруг не нравится запрос от сервера на авторизацию.

set link max-children 300 — максимальное количество соединений для этого шаблона

load pppoe — подгружаем следующий блок

set link action bundle B — накладываем на линк настройки бандла

set link enable multilink — опция позволяет создавать множественное подключение PPP. Но в данном случае опция позволяет пропускать большие пакеты (больше MTU) фрагментами. Что-то вроде фрагментации пакетов.

set link yes acfcomp protocomp — сжатие адресного поля, поля заголовков и поля протокола. Для экономии нескольких байтов во фрейме.

set link disable chap pap eap — запрещаем данные протоколы проверки пароля

set link enable chap-msv1 chap-msv2 chap-md5 — разрешаем протоколы проверки пароля (необходимы для возможности включения шифрования (Microsoft)).

set link keep-alive 10 60 — разрешает LCP пакеты. По умолчанию 5 40. Можно отказаться от этой опции, поставив первое значение в «0».

create link template bge1_0 PPPoE — создаем линк bge1_0 и накладываем настройки шаблона PPPoE

set pppoe iface bge1 — задаем интерфейс, где будет поднят наш сервис. Может быть как физическим интерфейсом, так и вланом (vlan).

set link enable incoming — разрешаем входящие соединения

set pppoe service service_name0 — поднимаем сервис-нейм (service-name) на заданном интерфейсе

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

Заключение

Из плюсов использования MPD в качестве PPPoE сервера хочу отметить меньшую загрузку CPU, особенно в сочетании с использованием поллинга (polling).

Для этого нужно собрать ядро с поддержкой поллинга:

options DEVICE_POLLING
options HZ=1000


После этого можно включить поллинг через /etc/sysctl.conf:

kern.polling.enable=1
kern.polling.user_frac=10

Последнее означает что система будет делить ресурсы CPU в соотношении userland/kernel как 10/90. По умолчанию это значение 50/50.

Конфиг работает на версиях порта mpd-5.0, mpd-5.1. С версией mpd-5.1_1 наблюдались проблемы на серверной стороне. При невыясненных обстоятельствах запускался второй процесс mpd5, который грузил CPU в 100%, а пользователи не могли подключиться. Пришлось откатываться на 5.1.

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Folio
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

В продолжение статьи Настраиваем vlan на FreeBSD, но теперь немного усложним задачу.

Задача:

Есть два свича Cisco Catalyst 3560 к которым подключены два сегмента сети в разных vlan.

Необходимо, что бы пользователи подключенные к Cisco Catalyst 3560 видели IP-адреса FreeBSD сервера и Cisco Catalyst 3560 свичи находились во vlan`е управления.

Схема

Схема

Данная схема будет работать и на любых других свичах (других моделях Cisco Catalyst (тот же Catalyst 2950 или Catalyst 3550) или например свичах Dlink или Planet), главное чтобы в свиче была поддержка vlan (802.1Q).

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

Switch 01
Создадим vlan`ы:

Switch01#configure terminal
Switch01(config)#vlan 5
Switch01(config-vlan)#name management
Switch01(config-vlan)#vlan 10
Switch01(config-vlan)#name segment_10
Switch01(config-vlan)#vlan 20
Switch01(config-vlan)#name segment_20
Switch01(config-vlan)#exit

Настроим IP-адрес свича во влане управления:

Switch01(config)#int vlan 5
Switch01(config-if)#ip address 10.0.0.2 255.255.255.248
Switch01(config-if)#exit

Поместим пользовательские порты свича в эти vlan`ы:

Switch01(config)#int gi 0/2
Switch01(config-if)#switchport mode access
Switch01(config-if)#switchport access vlan 10
Switch01(config-if)#int gi 0/3
Switch01(config-if)#switchport mode access
Switch01(config-if)#switchport access vlan 20

Настроим trunk на порту смотрящий в сторону Switch02, но разрешим только vlan 5,10 и 20:

Switch01(config-if)#int gi 0/1
Switch01(config-if)#switchport trunk encapsulation dot1q
Switch01(config-if)#switchport trunk allowed vlan 5,10,20
Switch01(config-if)#switchport mode trunk

Будьте внимательны: чтобы в последующем добавлять новые vlan в наш trunk вам необходимо использовать ту же команду, но с ключевым add:

Switch01(config-if)#switchport trunk allowed vlan add VLAN_ID

Если вы не будете использовать add, то свич выставит в разрешенные vlan`ы на trunk порту только те что будут вами перечисленны и удалит старые значения.

Например, команда:

Switch01(config-if)#switchport trunk allowed vlan add 25,30

добавит в trunk vlan`ы 25 и 30 при этом сохранив старые значения 5,10 и 20 и получится, что в данном tunk`е разрешены vlan`ы 5,10,20,25,30

Вернемся к нашей схеме и настроим Switch02.

Switch 02
Создадим vlan`ы:

Switch02#configure terminal
Switch02(config)#vlan 5
Switch02(config-vlan)#name management
Switch02(config-vlan)#vlan 10
Switch02(config-vlan)#name segment_10
Switch02(config-vlan)#vlan 20
Switch02(config-vlan)#name segment_20
Switch02(config-vlan)#exit

Настроим IP-адрес свича во влане управления:

Switch02(config)#int vlan 5
Switch02(config-if)#ip address 10.0.0.3 255.255.255.248
Switch02(config-if)#exit

Поместим пользовательские порты свича в эти vlan`ы:

Switch02(config)#int gi 0/11
Switch02(config-if)#switchport mode access
Switch02(config-if)#switchport access vlan 20
Switch02(config-if)#int gi 0/10
Switch02(config-if)#switchport mode access
Switch02(config-if)#switchport access vlan 10
Switch02(config-if)#exit

Настроим trunk на порту смотрящий в сторону Switch01 и разрешим только vlan 5,10 и 20:

Switch02(config)#int gi 0/2
Switch02(config-if)#switchport trunk encapsulation dot1q
Switch02(config-if)#switchport trunk allowed vlan 5,10,20
Switch02(config-if)#switchport mode trunk
Switch02(config-if)#exit

Также настроим trunk порт смотрящий в сторону FreeBSD:

Switch02(config)#int gi 0/24
Switch02(config-if)#switchport trunk encapsulation dot1q
Switch02(config-if)#switchport trunk allowed vlan 5,10,20
Switch02(config-if)#switchport mode trunk
Switch02(config-if)#exit

Настроим сервер FreeBSD

Создадим vlan управления:

/sbin/ifconfig vlan1 create
/sbin/ifconfig vlan1 vlan 5 vlandev em0
/sbin/ifconfig vlan1 add 10.0.0.1/29
/sbin/ifconfig vlan1 up

Создадим vlan 10:

/sbin/ifconfig vlan2 create
/sbin/ifconfig vlan2 vlan 10 vlandev em0
/sbin/ifconfig vlan2 add 192.168.10.1/24
/sbin/ifconfig vlan2 up

Создадим vlan 20:

/sbin/ifconfig vlan3 create
/sbin/ifconfig vlan3 vlan 20 vlandev em0
/sbin/ifconfig vlan3 add 192.168.20.1/24
/sbin/ifconfig vlan3 up

На этом с настройками покончено, настало время проверки. Если вы все сделали правильно, то:

  1. С FreeBSD сервера во влане управления (vlan 5) вы будете видеть и управлять (например по telnet) cisco catalyst)
  2. Пользователи во вланах 10,20 будут видеть IP интерфейсы сервера FreeBSD. Вы можете использовать этот сервер как шлюз в сеть Интернет для данных пользователей.

Посмотрим на cisco catalyst:

show vlan brief — просмотр существующих vlan`ов на свиче
show ip interface brief — просмотр существующих IP интерфейсов на свиче
show interfaces trunk — просмотр существующих trunk интерфейсов на свиче
show interfaces switchport — просмотр коммутации на интерфейсах свича

На FreeBSD интерфейсы смотрим командой ifconfig

Проверьте наличие пинга (ping) с FreeBSD сервера до пользователей и свичей.

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 6, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

В нашем примере мы рассмотрим мониторинг бесперебойников APC путём использования serial-кабеля и утилиты apcupsd.

Начинаем.

Подключаем кабель к com-порту машины и ups. (Сразу обращу внимание, что стандартный COM кабель не подходит. Сама APC не дает схему распайки кабеля. Будьте внимательны. Если кого-то отпугнёт цена подобного кабеля у дилера, можно попробовать самостоятельно спаять его, воспользовавшись схемой).

На машине с FreeBSD устанавливаем порт apcupsd

cd /usr/ports/sysutils/apdupsd
make install clean

В окне конфигурации достаточно оставить одну галку напротив «Compile APC SmartUPS serial driver»

После процесса установки идём в /etc/rc.conf и добавляем туда строку:

apcupsd_enabled=»YES»

для разрешения автоматического запуска при буте из /usr/local/etc/rc.d/apcupsd

Скрипты и конфиги из диры /usr/local/etc/apcupsd

changeme, commfailure, commok, offbattery, onbattery — скрипты оповещения по мылу о состояниях UPS

соответственно — требуется замена батарей, потеря связи с бесперебойником, восстановление связи с бесперебойником, появление напряжения в сети, пропадание напряжения в сети и начало работы от аккумуляторов.

В каждом из этих скриптов следует поменять адрес (или адреса) mail на нужные.

Скрипт apccontrol используется для получения информации от ups, информирования в консоль об изменении состояния ups, выключения или перезагрузки обслуживаемых компьютеров (в данном случае — подключенного к ups по COM кабелю). Исполняется исключительно демоном apcupsd. Единственное что можно в нём поправить при надобности — закоментить строку с переменной перезагрузки

#SHUTDOWN=/sbin/shutdown

для предотвращения перезагрузок при частом пропадании питания (например часто мигает свет, и ups постоянно даёт ведомому компьютеру команду перезагрузиться).

Рассмотрим основные параметры конфига программы — apcupsd.conf

UPSCABLE smart — наш тип кабеля в данном случае

UPSTYPE apcsmart — тип нашего ups

DEVICE /dev/cuad0 — com-порт нашего компьютера (возможно, будет отличаться, например /dev/cuaa0)

POLLTIME 60 — интервал опроса ups’а демоном apcupsd в секундах

SCRIPTDIR /usr/local/etc/apcupsd — путь к скриптам

ONBATTERYDELAY, BATTERYLEVEL, MINUTES, TIMEOUT — определяют поведение ведомого компьютера в случае пропадания напряжения в сети (реакция в минутах)

ANNOY, ANNOYDELAY, NOLOGON — определяют время на выход из системы пользователей в случае пропадания напряжения в сети, а также возможность/невозможность логина в систему в таком состоянии

KILLDELAY — при ненулевом значении этого параметра, система будет работать указанное время (в секундах) даже после того как получила сигнал на выключение, по истечении которого будет предпринята попытка выключить систему

EVENTSFILE /var/log/apcupsd.events — файл логов. сюда попадают все события полученные от ups

EVENTSFILEMAX — размер вышеуказанного файла (в килобайтах, например — 100)

Пример работающего конфига apcupsd.conf:

#———————————

## apcupsd.conf v1.1 ##
# for apcupsd release 3.14.4 (18 May 2008) — freebsd

# «apcupsd» POSIX config file
# ========= General configuration parameters ============

#
UPSCABLE smart
UPSTYPE apcsmart

DEVICE /dev/usv
#POLLTIME 60

LOCKFILE /var/spool/lock

SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run

NOLOGINDIR /var/run

ONBATTERYDELAY 6

BATTERYLEVEL 5

MINUTES 3

TIMEOUT 0

ANNOY 300

ANNOYDELAY 60

NOLOGON disable

KILLDELAY 0

NETSERVER on

NISIP 0.0.0.0

NISPORT 3551

EVENTSFILE /var/log/apcupsd.events

EVENTSFILEMAX 10

UPSCLASS standalone

UPSMODE disable

STATTIME 0

STATFILE /var/log/apcupsd.status

LOGSTATS off

DATATIME 0

#FACILITY DAEMON

#UPSNAME UPS_IDEN
#BATTDATE mm/dd/yy

#SENSITIVITY H

#WAKEUP 60

#SLEEP 180

#LOTRANSFER 208

#HITRANSFER 253

#RETURNCHARGE 15

#BEEPSTATE T

#LOWBATT 2

#OUTPUTVOLTS 230

SELFTEST 336
#———————————

Запускаем apcupsd

/usr/local/etc/rc.d/apcupsd start

Проверяем связь с ups

/usr/local/sbin/apcaccess status

Если всё настроено правильно, получаем примерно следующий вывод:

APC : 001,052,1285
DATE : Thu Jul 24 15:00:46 MSD 2008
HOSTNAME : test-server
RELEASE : 3.14.0
VERSION : 3.14.0 (9 February 2007) freebsd
UPSNAME : UPS_IDEN
CABLE : Custom Cable Smart
MODEL : Smart-UPS 3000 RM
UPSMODE : Stand Alone
STARTTIME: Thu Jul 17 10:16:47 MSD 2008
STATUS : BOOST ONLINE
LINEV : 203.0 Volts
LOADPCT : 31.8 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 20.0 Minutes
MBATTCHG : 10 Percent
MINTIMEL : 100 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 216.0 Volts
MINLINEV : 177.1 Volts
OUTPUTV : 233.2 Volts
SENSE : High
DWAKE : 000 Seconds
DSHUTD : 090 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ITEMP : 25.2 C Internal
ALARMDEL : 5 seconds
BATTV : 55.1 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Line voltage notch or spike
NUMXFERS : 551
XONBATT : Thu Jul 24 14:39:19 MSD 2008
TONBATT : 0 seconds
CUMONBATT: 808 seconds
XOFFBATT : Thu Jul 24 14:39:20 MSD 2008
SELFTEST : NO
STESTI : 336
STATFLAG : 0x0720000C Status Flag
REG1 : 0x00 Register 1
REG2 : 0x00 Register 2
REG3 : 0x00 Register 3
MANDATE : 02/21/07
SERIALNO : JS0708009520
BATTDATE : 02/21/07
NOMOUTV : 230
NOMBATTV : 48.0
EXTBATTS : 0
FIRMWARE : 666.6.I
APCMODEL : FWI
END APC : Thu Jul 24 15:01:17 MSD 2008

Более подробно можно прочесть в мане /usr/local/share/doc/apcupsd/apcupsd.pdf

Или скачать его ТУТ

С помощью небольшого скрипта на PERL можно парсить вывод и получать основные, нужные параметры, которые, например, отдавать для построения графиков в MRTG о загрузке, заряда батарей, температуре и т.п.

#!/usr/bin/perl

use Time::Local;

sub curr_date_unix{
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();
$date_unix=timelocal ($sec,$min,$hour,$mday,$mon,$year+1900);
return $date_unix;
}
$cur_date=curr_date_unix();

%month_num=(‘Jan’ => ‘0’,
‘Feb’ => ‘1’,
‘Mar’ => ‘2’,
‘Apr’ => ‘3’,
‘May’ => ‘4’,
‘Jun’ => ‘5’,
‘Jul’ => ‘6’,
‘Aug’ => ‘7’,
‘Sep’ => ‘8’,
‘Oct’ => ‘9’,
‘Nov’ => ’10’,
‘Dec’ => ’11’,
);

@status=`/usr/local/sbin/apcaccess status`;

@ups_day=qw (01 02 03 04 05 06 07 08 09);

for ($i=0; $i<=$#status; $i++){
@spl=split(‘ ‘,$status[$i]);
chomp ($spl[0]);
chomp ($spl[2]);
chomp ($spl[3]);
chomp ($spl[4]);
chomp ($spl[6]);
if ($spl[0] eq LOADPCT){
$load=$spl[2];
}elsif ($spl[0] eq BCHARGE){
$charge=$spl[2];
}elsif ($spl[0] eq MAXLINEV){
$maxv=$spl[2];
}elsif ($spl[0] eq MINLINEV){
$minv=$spl[2];
}elsif ($spl[0] eq OUTPUTV){
$outv=$spl[2];
}elsif ($spl[0] eq ITEMP){
$temp=$spl[2];
}elsif ($spl[0] eq MODEL){
$model1=$spl[2];
$model2=$spl[3];
$model3=$spl[4];
}elsif ($spl[0] eq «STARTTIME:»){
$month=$spl[2];
$day=$spl[3];
$year=$spl[6];
@time_spl=split(‘:’,$spl[4]);
for ($j=1; $j<10; $j++){
if ($day eq $ups_day[$j-1]){
$day=$j;
}
}
}elsif ($spl[0] eq STATUS){
$st=$spl[2];
$st1=$spl[3];
}
}
$time=timelocal ($time_spl[2],$time_spl[1],$time_spl[0],$day,$month_num{$month},$year);
$delta= $cur_date — $time;

$min = $delta / 60;
$hours = $min / 60;
$days = sprintf(«%d»,($hours / 24));
$hours = sprintf(«%02d»,($hours — ($days * 24)));
$min = sprintf(«%02d»,($min — ($days * 60 * 24) — ($hours * 60)));
$sec = sprintf(«%02d»,($delta — ($min * 60) — ($days * 60 * 60 * 24) — ($hours * 60 * 60)));
if ( $days ne «0» ) {
$uptime = «$days days, «;
}
if ( $hours ne «0» ) {
$uptime .= «$hours:»;
}
$uptime .= «$min:$sec»;

open(UPS, «>/usr/ups.txt») || die «$!»;

printf UPS («%.0f\n»,$load);
printf UPS («LOAD\n»);

printf UPS («%.0f\n»,$charge);
printf UPS («CHARGE\n»);

printf UPS («%.0f\n»,$maxv);
printf UPS («MAXLINEV\n»);

printf UPS («%.0f\n»,$minv);
printf UPS («MINLINEV\n»);

printf UPS («%.0f\n»,$outv);
printf UPS («OUTPUTV\n»);

printf UPS («%.0f\n»,$temp);
printf UPS («ITEMP\n»);

printf UPS («%s %s\n»,$st,$st1);
printf UPS («STATUS\n»);

printf UPS («%s %s %s\n»,$model1,$model2,$model3);
printf UPS («MODEL\n»);

close(UPS);

Вывод результатов данного скрипта можно видеть в файле /usr/ups.txt:

32
LOAD
99
CHARGE
217
MAXLINEV
210
MINLINEV
213
OUTPUTV
25
ITEMP
ONLINE
STATUS
Smart-UPS 3000 RM
MODEL

И данные из этого файла уже можно скармливать MRTG для построения графиков.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: MadMax
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 9, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Начинающие часто спрашивают:

Как поднять vlan на FreeBSD ?

Как сделать trunk на FreeBSD ?

Отвечаем:

Это не просто, а очень просто.

Теория:

Что такое vlan ?
Что такое trunk ?

VLAN (от англ. Virtual Local Area Network), VLAN могут являться частью большего LAN, имея определенные правила взаимодействия с другими VLAN, либо быть полностью изолированными от них. Простейший механизм изоляции различных подсетей, работающих через общие свичи и роутеры, известен как 802.1Q.

Преимущества VLAN

  • увеличивает число широковещательных доменов, но уменьшает размер каждого широковещательного домена, которые в свою очередь уменьшают сетевой трафик и увеличивают безопасность сети (оба следствия связаны вместе из-за единого большого широковещательного домена);
  • уменьшает усилия администраторов на создание подсетей;
  • уменьшает количество оборудования, так как сети могут быть разделены логически, а не физически;
  • улучшает управление различными типами трафика.

Транк VLAN — это физический канал, по которому передается несколько VLAN каналов, которые различаются тегами (метками, добавляемыми в пакеты). Транки обычно создаются между «тегированными портами» VLAN-устройств: свитч-свитч или свитч-маршрутизатор. (В документах Cisco термином «транк» также называют объединение нескольких физических каналов в один логический: Link Aggregation, Port Trunking). Маршрутизатор (свитч третьего уровня) выступает в роли магистрального ядра сети (backbone) для сетевого трафика разных VLAN.

На устройствах Cisco, протокол VTP (VLAN Trunking Protocol) предусматривает VLAN-домены для упрощения администрирования. VTP также выполняет «чистку» трафика, направляя VLAN трафик только на те коммутаторы, которые имеют целевые VLAN-порты.
Native VLAN — каждый порт имеет параметр, названный постоянный виртуальный идентификацией (Native VLAN), который определяет VLAN, назначенный получить нетеговые кадры.

Сказав проще, vlan — это логический канал внутри физического канала (кабеля), а trunk это множество логических каналов (vlan`ов) внутри одного физического канала (кабеля).

Итак более-менее с теорией разобрались, теперь подумаем зачем нам это может понадобиться.

Данная технология может пригодиться например если на сервер нужно «подать» несколько физических линков, а сетевая карта всего одна и вставить ещё одну нет возможности.

Возьмем подобную ситуацию как пример и попробуем настроить следущее:

  • У нас сервер только с одной сетевой картой, а
  • необходимо подключить два канала от двух провайдеров
  • Провайдер А выдал IP-адрес 192.168.1.15 маска 255.255.255.0
  • Провайдер Б выдал IP-адрес 172.16.10.48 маска 255.255.255.192

Для того чтобы разрулить данную ситуацию нам понадобится switch который понимает Vlan (802.1Q), уже почти все управляемые свичи идут с этой функцией. В нашем примере рассмотрим два типа свичей:

  1. cisco catalyst (например 2950 или 3560)
  2. dlink DES-3526
Два провайдера и сервер FreeBSD с одной сет.картой

Два провайдера и сервер FreeBSD с одной сет.картой

Начинаем

Воткнем физические связи в наш свич, получим три кабеля и три занятых порта

  1. порт 1 — Провайдер А
  2. порт 2 — Провайдер Б
  3. порт 3 — наш сервер

Настроим cisco catalyst:

configure terminal
vlan 100
name provider_a
vlan 101
name provider_b
int gi0/1
switchport access vlan 100
int gi0/2
switchport access vlan 101
exit
exit

Этими командами мы создали два vlan с номерами 100 и 101 для линков от двух провайдеров и назначили два порта каталиста в эти vlan.

по команде show vlan вы должны видеть созданные vlan

Теперь перейдем к конфигурированию 3-го порта каталиста куда воткнут наш сервер. Т.к. нам придется в этот порт посылать оба vlan (100,101) нам необходимо сделать trunk на этом порту:

configure terminal
int gi 0/3
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 100,101
exit
exit

Этими командами мы на третьем порту каталиста подняли trunk и разрешили в этом trunk`е два vlan 100,101

В терминах Cisco:

  • порт в аксес/аксес порт (access port) — порт принимающий не тегированные пакеты (пакеты в которых нет тега (номера) vlan которому они принадлежат)
  • порт в транке/транк порт (trunk port) — порт принимающий тегированные пакеты в которых указан тег (номер) vlan

Сделаем тоже самое, но для Dlink:

create vlan provider_a tag 100
create vlan provider_b tag 101
config vlan provider_a add untagged 1
config vlan provider_b add untagged 2
config vlan provider_a add tagged 3
config vlan provider_b add tagged 3

Так же по команде show vlan убеждаемся что все на месте.

В терминах Dlink:

  • антагет порт (untagged port) — порт в аксес режиме принимающий не тегированные пакеты
  • тагет порт (tagged port) — порт в транке принимающий тегерованные пакеты

Переходим к FreeBSD. В качестве примера используется сет. карта 82545EM Gigabit Ethernet Controller интерфейс em0

Для начала удалим все IP-адреса с интерфейса em0 (если они есть):

/sbin/ifconfig em0 delete

Создадим vlan для провайдера А:

/sbin/ifconfig vlan100 create
/sbin/ifconfig vlan100 vlan 100 vlandev em0

Вот и все, vlan создан, проверяем есть ли он в списке интерфейсов:

запускаем команду /sbin/ifconfig vlan100

vlan100: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:02:a5:4e:92:48
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 100 parent interface: em0

Итерфейс на месте.

Создадим vlan для провайдера Б:

/sbin/ifconfig vlan101 create
/sbin/ifconfig vlan101 vlan 101 vlandev em0

Проверяем есть ли он в списке интерфейсов:

запускаем команду /sbin/ifconfig vlan101

vlan101: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:02:a5:4e:92:48
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 101 parent interface: em0

Итерфейс на месте.

После того как интерфейсы vlan`ов созданы мы обращаемся с ними как с обычными интерфейсами обычных сетевых карт.

Добавим IP-адреса на созданные vlan`ы:

/sbin/ifconfig vlan100 add 192.168.1.15/24
/sbin/ifconfig vlan101 add 172.16.10.48/26

Вот и все, если вы все сделали правильно, то при выводе команды ifconfig получите:

vlan100: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:02:a5:4e:92:48
inet 192.168.1.15 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 100 parent interface: em0

vlan101: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:02:a5:4e:92:48
inet 172.16.10.48 netmask 0xffffffc0 broadcast 172.16.10.63
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
vlan: 101 parent interface: em0

Можете проверять наличие связи с двумя провайдерами 🙂

Уничтожить/удалить vlan можно командой (например удалим vlan100):

/sbin/ifconfig vlan100 destroy

Осталось последнее дело, чтобы после reboot конфигурация vlan`ов сохранялась.

Для этого добавим в файл /etc/rc.conf следующие строчки:

ifconfig_vlan100=»inet 192.168.1.15 netmask 255.255.255.0 vlan 100 vlandev em0″
ifconfig_vlan101=»inet 172.16.10.48 netmask 255.255.255.192 vlan 101 vlandev em0″

cloned_interfaces=»vlan100 vlan101″

Есть и второй способ сделать тоже самое. Создайте файл /etc/rc.local и в него вставте все команды которые вы вводили для создания vlan`ов и присваевание им IP-адресов. Файл /etc/rc.local так же отрабатывается при загрузке сервера и будут исполнены все команды в нем перечисленные.

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 7, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

SNMP (Simple Network Management Protocol) — простой протокол управления сетью.

Это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами, располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления. В настоящее время SNMP является базовым протоколом управления сети Internet. SNMP определяет сеть как совокупность сетевых управляющих станций и элементов сети (главные машины, шлюзы и маршрутизаторы, терминальные серверы), которые совместно обеспечивают административные связи между сетевыми управляющими станциями и сетевыми агентами.

MRTG (Multi Router Traffic Grapher) — утилита позволяющая осуществлять мониторинг сетевых линков (да и не только их). MRTG на выходе генерирует HTML страницы с графиками в PNG.

Пример:

mrtg graph example

Итак вы решили, что пора следить за нагрузкой на сетевых линках в вашей сети.

Что для этого нужно ?

Вам понадобятся две вещи:

  • /usr/ports/net-mgmt/mrtg
  • /usr/ports/net-mgmt/net-snmp

Сначала установим MRTG:

[root@work ~]# cd /usr/ports/net-mgmt/mrtg
[root@work /usr/ports/net-mgmt/mrtg]# make install clean

после инсталляции появится: /usr/local/bin/mrtg

Затем snmp:

[root@work ~]# cd /usr/ports/net-mgmt/net-snmp
[root@virus /usr/ports/net-mgmt/net-snmp]# make install clean

после инсталляции появится: /usr/local/sbin/snmpd

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

SNMP

Если вам необходимо мониторить что либо на другом компьютере/сервере (он будет являться «клиентом»), то после установки на нем snmp выполняем команду:

snmpconf -i -f

Запустится утилита которая поможет создать конфигурационный файл для snmp, который должен располагаться в /usr/local/share/snmp/ и называться snmpd.conf.

После запуска выбираем пункт 1 (1: snmpd.conf), затем пункт 2 (2: Access Control Setup), а затем пункт 3 (3: a SNMPv1/SNMPv2c read-only access community name).

На вопрос «The community name to add read-only access for:» отвечаем именем community на которое будет отзываться наш сервер, например pub.

На вопрос «The hostname or network address to accept this community name from [RETURN for all]:» у нас два варианта:

  1. нажать ENTER, но тогда любой хост в сети сможет «снимать» показания по SNMP с этого сервера используя community pub.
  2. четко указать IP-адрес хоста с которого будут приходить запросы. (это может быть и сам хост 127.0.0.1)

На последний вопрос об ограничениях просто жмем ENTER.

На этом конфигурирование для нас закончено, печатаем букву f, жмем ENTER, печатаем f жмем ENTER, печатаем q, жмем ENTER и программа конфигуратор завершает свою работу сообщая:

The following files were created:
snmpd.conf installed in /usr/local/share/snmp

Посмотрим как выглядит /usr/local/share/snmp/snmpd.conf

rocommunity pub 127.0.0.1

Это означает что, хост с IP-адресом 127.0.0.1 может только «читать» используя community pub (помним, что по snmp можно и «писать» (управлять)).

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

snmpd_enable=»YES»

Запускаем командой:

/usr/local/etc/rc.d/snmpd start

Смотрим на месте ли процесс snmp:

[root@work ~]# ps -ax | grep snmp
927 ?? S 0:23.01 /usr/local/sbin/snmpd -p /var/run/snmpd.pid
76815 p0 S+ 0:00.00 grep snmp
[root@work ~]# sockstat | grep :161
root snmpd 927 13 udp4 *:161 *:*

Все в порядке, процесс на месте и «слушает» порт udp 161.

Проверить доступность «чтения» данных по SNMP c любого устройства можно командой:

snmpwalk -v2c -c pub 127.0.0.1

Где pub это community, а 127.0.0.1 IP-адрес хоста с которого мы хотим получить данные.

Если после запуска snmpwalk вы не получили в ответ:

Timeout: No Response from 127.0.0.1

а «поехали» данные то все ОК, если timeout, то проверьте, что процесс запущен и слушает порт udp 161, а также что IP-адрес хоста, с которого вы пытаетесь получить эти данные, присутвует в /usr/local/share/snmp/snmpd.conf с запрашиваемым вами community.

Если вам необходимо снимать данные по SNMP с сетевого устройства (коммутатор (свич), маршрутизатор, etc.), который так же будет являться «клиентом», то настройте SNMP на нем, также указав хосты и community на RO (Read Only).

Пример настройки SNMP на Cisco Catalyst:

snmp-server community pub RO
snmp-server location server-farm
snmp-server contact my-cool-provider
snmp-server host 10.3.1.1 pub
snmp-server host 10.3.1.2 pub

Пример настройки SNMP на D-link DES 3526:

create snmp group pub v2c read_view CommunityView notify_view CommunityView
create snmp community pub view CommunityView read_only
create snmp host 10.3.1.1 v2c pub
create snmp host 10.3.1.2 v2c pub

MRTG

Конфигурационные файлы MRTG по умолчанию находятся в /usr/local/etc/mrtg/.

Файл mrtg.conf:

Language: russian1251

WorkDir: /usr/local/www/mrtg
background[_]: #FBEDD0
Options[_]: Bits
Forks: 4

#Пример получения графика по порту №1 cisco catalyst 3560G

Title[cat_1]: Traffic for Cisco 3560 (Port 1)
PageTop[cat_1]: <h1><B>Cisco 3560: Port 1 </B></h1>
Target[cat_1]: 10101:pub@10.3.1.10:::::2
RouterUptime[cat_1]: pub@10.3.1.10
MaxBytes[cat_1]: 250000000

Где 10.3.1.10 — IP адрес утсройства, pub — community, 10101 — номер первого порта в дереве SNMP.

Как я узнал, что 10101 это первй порт ? Запускаем:

snmpwalk -v2c -c pub 10.3.1.10

Видим:

…………………………

IF-MIB::ifDescr.10101 = STRING: GigabitEthernet0/1
IF-MIB::ifDescr.10102 = STRING: GigabitEthernet0/2
IF-MIB::ifDescr.10103 = STRING: GigabitEthernet0/3
IF-MIB::ifDescr.10104 = STRING: GigabitEthernet0/4

…………………………

IF-MIB::ifDescr.10127 = STRING: GigabitEthernet0/27
IF-MIB::ifDescr.10128 = STRING: GigabitEthernet0/28
………………………….

Таким же образом можно описать в /usr/local/etc/mrtg/mrtg.conf и остальные порты catalyst`а.

Пример получение загрузки CPU cisco catalyst по snmp.

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Title[cpu3560]: Cisco 3550 CPU Usage
Target[cpu3560]: 1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:pub@10.3.1.10:::::2
LegendI[cpu3560]: Load CPU
LegendO[cpu3560]:
YLegend[cpu3560]: CPU load, %
MaxBytes[cpu3560]: 100
AbsMax[cpu3560]: 100
ShortLegend[cpu3560]: %
PageTop[cpu3560]: <h1><B>Средняя загрузка процессора Cisco 3560</B></h1>
Options[cpu3560]: Absolute, nopercent, gauge
Legend1[cpu3560]: Средняя загрузка процессора

Пример получение использование памяти cisco catalyst по snmp.

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Title[mem3560]: Memory Usage
MaxBytes[mem3560]: 256000000
AbsMax[mem3560]: 256000000
Target[mem3560]: 1.3.6.1.4.1.9.9.48.1.1.1.5.1&1.3.6.1.4.1.9.9.48.1.1.1.6.1:pub@10.3.1.10:::::2
LegendI[mem3560]: Used mem
LegendO[mem3560]: Free mem
YLegend[mem3560]: Mem usage, Mb
ShortLegend[mem3560]: b
PageTop[mem3560]: <h1><B>Среднее использование памяти Cisco 3560</B></h1>
Options[mem3560]: Absolute, nopercent, gauge, nobanner
Legend1[mem3560]: Used mem
Legend2[mem3560]: Free mem

Пример получение загрузки CPU с сервера.

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Pagetop[srv01_cpu]: <h1><B>CPU Сервер-01</B></h1>
Title[srv01_cpu]: CPU Сервер-01
PNGTitle[srv01_cpu]: CPU Сервер-01
MaxBytes[srv01_cpu]: 100
AbsMax[srv01_cpu]: 100
Target[srv01_cpu]: .1.3.6.1.4.1.2021.11.9.0&.1.3.6.1.4.1.2021.11.9.0:pub@10.3.1.11 + .1.3.6.1.4.1.2021.11.10.0&.1.3.6.1.4.1.2021.11.10.0:pub@10.3.1.11
RouterUptime[srv01_cpu]: pub@10.3.1.11
LegendI[srv01_cpu]: CPU
LegendO[srv01_cpu]: CPU
YLegend[srv01_cpu]: Usage CPU, %
ShortLegend[srv01_cpu]: %
Legend1[srv01_cpu]: CPU
Legend2[srv01_cpu]: CPU

Пример получение загрузки сетевой карты сервера с IP-адресом 10.10.10.1.

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Pagetop[srv01_net1]: <h1><B>Сетевая карта с IP 10.10.10.1</B></h1>
Title[srv01_net1]: Сетевая карта с IP 10.10.10.1
PNGTitle[srv01_net1]: Сетевая карта с IP 10.10.10.1
MaxBytes[srv01_net1]: 250000000
Target[srv01_net1]: -/10.10.10.1:pub@10.3.1.12
RouterUptime[
srv01_net1]: pub@10.3.1.12

Будем считать что файл /usr/local/etc/mrtg/mrtg.conf вы подготовили.

Проверяем конфиг

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

/usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.conf

Если строчек «ERROR: CFG Error in» нет, то все ОК, если есть исправляем ошибки.

Запускаемся

Добавляем в файл /etc/crontab:

*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.conf

Теперь ждем 5-ть минут и смотрим в папку /usr/local/www/mrtg, которая обозначена в нашем конфиге как WorkDir, куда и будут складываться HTML страницы с графиками. Не пугайтесь если графики по началу пусты, подождите хотябы 30-ть минут, что бы появилось достаточно данных для того, чтобы вы увидели рабочий график.

Благодаря crontab`у график будет обновляться каждые 5-ть минут и вы будете видеть графики отображающие среднее за 5-ть минут значение. Делать меньше 5-ти минут не рекомендую.

С помощью MRTG можно строить графики на любых данных. Главное всегда придоставлять для MRTG 4-ре строки. Пример:

В /usr/local/etc/mrtg/mrtg.conf дописываем:

Pagetop[srv01_hdd]: HDD Сервер-01<br>
Title[srv01_hdd]: HDD Сервер-01
PNGTitle[srv01_hdd]: HDD use
MaxBytes[srv01_hdd]: 1250000
AbsMax[srv01_hdd]: 1250000
Target[srv01_hdd]: `/bin/cat /usr/monitor/SRV-01.log`
LegendI[srv01_hdd]: /usr
LegendO[srv01_hdd]: /var
YLegend[srv01_hdd]: Used space, Mb
ShortLegend[srv01_hdd]: Mb
Legend1[srv01_hdd]: /usr
Legend2[srv01_hdd]: /var

При этом в файле /usr/monitor/SRV-01.log (который, например, может формировать perl скрипт):

HDD: /usr and /var
1713067
686879
14 days, 06:33:17

Где 1-ая строка — описание, 2-ая — кол-во занято в разделе /usr, 3-я -кол-во занято в разделе /var, 4-ая время uptime данного сервера.

Используя этот пример можно «налепить» любых графиков 😉

Вам в помощь может пригодится программа cfgmaker, которая устанавливается вместе с mrtg (идет вместе с mrtg), обычно находится тут: /usr/local/bin/cfgmaker

Пример запуска:

cfgmaker pub@127.0.0.1 > myrouter.conf

После завершения выполнения в файле myrouter.conf будет конфиг mrtg для хоста 127.0.0.1

Отдельные файлы конфигов (как например myrouter.conf) можно «включать» в глобальный конфиг /usr/local/etc/mrtg/mrtg.conf с помощью include, дописав в файле mrtg.conf строчку:

include: /usr/local/etc/mrtg/myrouter.conf

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

  • man snmpwalk
  • man smnpget
  • man snmpset
  • man snmpconf
  • man cfgmaker

(P.S. команда man выполняется в консоле сервера)

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 10, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту