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

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

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

Участились вопросы по сабжу.

Случается, что сетевая карта в серваке на FreeBSD ну никак не хочет подниматься и вязаться со свичем. Или случаются ситуации когда на порту свича full-duplex, а на сетевой карте FreeBSD его нет и соответственно работает half-duplex, что приводит к ошибкам и потерям. Для исправления ситуации можно попробовать жестко задать скорость и дуплекс.

Рассмотрим метод ручного задания режимов, что приведет к отключению autoselect режима.

Все выполняется командой ifconfig с использованием опций:

  • media — задает скорость
  • mediaopt — задает дуплекс

Посмотрим состояние сетевой карты em0 ДО изменений:

/sbin/ifconfig em0

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:02:a5:4e:92:48
inet 172.16.10.14 netmask 0xffffff00 broadcast 172.16.10.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active

Видим что на карте, по умолчанию, работает autoselect.

Принудительно поставим 100baseTX и full-duplex на сетевой карте с именем em0:

/sbin/ifconfig em0 media 100baseTX mediaopt full-duplex

Посмотрим что получилось:

/sbin/ifconfig em0

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:02:a5:4e:92:48
inet 172.16.10.14 netmask 0xffffff00 broadcast 172.16.10.255
media:  Ethernet 100baseTX <full-duplex>
status: active

Видим, что теперь жестко выставлено 100baseTX и full-duplex.

В случае с гигабитными линками команда ессно та же, но скорость другая:

/sbin/ifconfig em0 media 1000baseTX mediaopt full-duplex

Для того, чтобы после ребута выставленная руками скорость и дуплекс оставались, необходимо внести это в /etc/rc.conf:

ifconfig_em0=»inet 172.16.10.14 netmask 255.255.255.0 media 100baseTX mediaopt full-duplex»

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

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

Введение

Есть такая удобная штука как CDP ( Cisco Discovery Protocol ) — проприетарный протокол второго уровня модели OSI, разработанный компанией Сisco Systems, позволяющий обнаруживать подключенное (напрямую или через устройства первого уровня) сетевое оборудование Сisco, его название, версию IOS и IP-адреса.

Устройство посылает мультикаст анонс на MAC адрес 0100.0ccc.cccc. В конфигурации по-умолчанию анонсы рассылаются каждые 60 секунд на порты Ethernet, Frame Relay и ATM. Каждое устройство, понимающее протокол, сохраняет полученную информацию в таблице и позволяет посмотреть её по команде show cdp neighbours. Если устройство трижды не прислало анонс (при значениях по-умолчанию — 3 минуты), оно удаляется из таблицы. Возникло желание на оборудовании Cisco видеть, какие сервера FreeBSD и через какие сетевые карты подключены.

Практическая реализация

В ответ на желаемое google.ru выдал ссылку на net/ladvd в дереве портов FreeBSD. Этот порт занимается тем, что рассылает анонсы по протоколам CDP и LLDP. Нам как раз подходит первый из них.

Устанавливаем, как обычно:

cd /usr/ports/net/ladvd
make install clean

Добавляем строки в /etc/rc.conf для автозапуска демона при старте системы:

ladvd_enable=»YES»
ladvd_flags=»-c»

флаг -c означает, что сервер будет рассылать анонсы по протоколу CDP.

запускаем демона вручную

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

смотрим на Cisco результат:

Switch> show cdp neighbors

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone

Device ID                 Local Intrfce    Holdtme   Capability    Platform      Port ID
server01.mydomain.ru      Gig 0/19         165            R        FreeBSD       bge0
Switch-14                 Gig 0/9          125          R S I      WS-C3560G     Gig 0/8

Смотрим внимательнее:

Switch>sh cdp neighbors detail

Device ID: server01.mydomain.ru
Entry address(es):
IP address: 192.168.32.23
Platform: FreeBSD,  Capabilities: Router
Interface: GigabitEthernet0/19,  Port ID (outgoing port): bge0
Holdtime : 156 sec

Version :
FreeBSD 7.0-RELEASE FreeBSD 7.0-RELEASE #2: Wed Sep 24 19:33:17 MSD 2008     root@server01.mydomain.ru :/usr/src/sys/i386/compile/SERVER01 i386

advertisement version: 2
Duplex: full
Management address(es):

В случае возникновения проблем запускаем демона ladvd в «недемоническом» 🙂 режиме, запустите его с ключами:

ladvd -f -c -vvv

Вывод будет, примерно, таким:

found ethernet interface bge0
adding interface bge0
found ethernet interface bge1
skipping interface bge1 (down)
skipping interface pflog0
skipping interface pfsync0
skipping interface lo0
fetching addresses for all interfaces
ladvd 0.6.1 running
fetching all interfaces
found ethernet interface bge0
adding interface bge0
found ethernet interface bge1
skipping interface bge1 (down)
skipping interface pflog0
skipping interface pfsync0
skipping interface lo0
fetching addresses for all interfaces
starting loop with interface bge0
fetching bge0 media details
autoneg supported on bge0
autoneg enabled on bge0
full-duplex enabled on interface bge0
building cdp packet for bge0
sending cdp packet (262 bytes) on bge0
sleeping for 30 seconds

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

P.S. И два слова о безопасности:

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

Глобально, на всем девайсе, выключение CDP производится командой:

Switch(config)# no cdp run

или для конкретного интерфейса:

Switch(config-if)# no cdp enable

P.P.S. О настройке CDP на оборудовании Cisco Systems будет рассказано дополнительно в отдельной статье.

P.P.P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Панфилов Алексей (lehis (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 4,75 из 5)
Загрузка...
Отправить на почту Отправить на почту

В ряде задач администрирования требуется получать сообщения по какому-либо событию. Например, в мониторинге при падении/поднятии сервера/сервиса, канала и т.п.
Получать письма на e-mail неактуально, т.к. по себе знаю, хоть почта и проверяется раз в 5 минут, но заглядываю туда гораздо реже. Хотелось бы получить, чтото вроде всплывающих сообщений на экран/мобильник, тогда они точно не останутся без внимания, а также, чтоб эти сообщения приходили без задержки (ну или с минимальной задержкой). Таким условиям удовлетворяют 2 способа доставки сообщений:

Способ 1.

SMS и GSM-модем. Плюсы: сообщение получишь, даже если сидишь в сортире)). Недостатки: покупка/выбор мопеда. Не каждый мопед поедет под FreeBSD. Стоимость от 100 вечнозеленых буказоидов, да и за сами смс-ки придется платить. Тут уж как никак а раскошелиться придется.

Способ 2.

Сервис ICQ и ему подобные. Плюсы: минимум затрат, а в случае подключения мобильника — получаешь плюсы от первого способа. Недостатки: для получения смс на мобилу — нужна соответствующая мобила, которая это поддерживает.

Второй способ более привлекательный, как менее затратный. Самый простой в использовании протокол, как оказалось Jabber, вот его то мы и заюзаем.

Практика:

Первое, что необходимо сделать это создать аккаунт в джабере. В моем примере аккаунт регистрируем на jabber.ru

Второе:

Собираем порт /usr/ports/net-im/p5-Net-XMPP

cd /usr/ports/net-im/p5-Net-XMPP
make install clean

Существуют и другие порты для jabber, но будем использовать этот.

Третье:

Собственно сам крипт, отсылающий сообщение:

#! /usr/bin/perl

use Net::XMPP;
my $con=new Net::XMPP::Client();
$con->Connect(hostname=>"jabber.ru");
$con->AuthSend(username=>"user",
                        password=>"password",
                        resource=>"ALARM!");
my $msg=new Net::XMPP::Message();
$msg->SetMessage(to=>"reciver\@jabber.ru",
                 from=>"user\@jabber.ru",
                 body=>"My First Jabber Message From FreeBSD");
$con->Send($msg);
$con->Disconnect();

Логика скрипта проста. Коннектимся к серверу, отсылаем сообщение и дисконнект:

  1. user@jabber.ru — авторизуется на jabber.ru
  2. user (user@jabber.ru) — отсылает сообщение («My First Jabber Message From FreeBSD«) для reciver (reciver@jabber.ru)
  3. user@jabber.ru — отключается от jabber.ru

Для того, чтобы рассылать сообщение нескольким абонентам, можно создать чат-группу, тогда сообщение посланное кому-то одному, будет переслано всем остальным в группе.

Можно прикрутить русский язык, но об этом позже 🙂 если дойдут руки.

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: folio
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

CARP — Common Address Redundancy Protocol

Другими словами это протокол избыточности, который позволяет двум или более компьютерам в одной подсети иметь одновременно один и тот же IP адрес, при этом возможна настройка этой группы компьютеров как взаимозаменяемые (главный компьютер отключился/сломался — вместо него сразу же принимается за работу другой, у которого приоритет выше) и так по кругу. Максимально количество компьютеров в группе — 256, в сети между ними не должно быть роутеров.

Также возможна конфигурация данной группы как некий кластер, который будет обрабатывать приходящие пакеты по кругу( 1-2-3-4-5…..256-1-2-3-4), то есть распределяя нагрузку на сервис.

Вариант первый. Резервирование.

1) Необходимо на всех компьютерах группы включить в ядро опцию

device carp

Пересобрать его и установить.

cd /usr/src
make buildkernel KERNCONF=PARANOID #PARANOID — мое название конфигурации ядра.
make installkernel KERNCONF=PARANOID

2) Выставить на каждом компьютере группы опцию sysctl

sysctl net.inet.carp.preempt=1

и добавить в /etc/sysctl.conf # Чтоб при следующей загрузке данный параметр автоматически выставился в 1.

net.inet.carp.preempt=1

Данная опция включает в CARP функцию резервирования.

3) Настроить сетевые карты каждого из группы компьютеров на ОТДЕЛЬНЫЙ ip адрес из одной подсети. ВАЖНО ! Так как можно запутаться и писать на интерфейс сразу у всей группы один и тот-же адрес, что вызовет конфликт адресов.

Например:

PC1 — 10.100.0.1/24
PC2 — 10.100.0.2/24
PC3 — 10.100.0.3/24

4) Создать интерфейс carp, прописать ему ip (именно на этом IP будет висеть ваш сервис), VHID (Идентификатор CRAP группы), и выдать каждому CARP интефейсу на каждом из компьютеров группы свой УНИКАЛЬНЫЙ advskew (приоритет сервера) чем он ниже — тем раньше, в случае сбоя, этот сервер присвоит себе IP и будет обрабатывать запросы, и пароль группы pass (Также должен быть одинаковый в одной группе)

PC1

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 0

PC2

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 1

PC3

ifconfig carp0 create

ifconfig carp0 vhid 1 pass VeRySeCrEtPaSsWoRd 10.100.0.4/24 advskew 2

Таким образом получается что если ломается PC1, то тут-же за него начинает работать PC2, если и он ломается, и при этом PC1 все еще не восстановлен, то в работу включается PC3.

Синхронизировать сервера можно по физическим интерфейсам с IP 10.100.0.1-3, но своими силами.

Вариант второй. Распределение нагрузки.

Ядро так-же собираем с поддержкой CARP но в sysctl выставляем значение уже arpbalance в 1

sysctl net.inet.carp.arpbalance=1

и соотвественно в /etc/sysctl.conf

net.inet.carp.arpbalance=1

Как видно из названия обьекта, балансировка происходит на основании MAC-адреса клиентского компьютера, соответственно, роутеров между сервером и клиентом не должно быть.

Затем на каждом из серверов группы надо настроить 2 CARP интерфейса и 1 физический (vlan-ы тоже поддерживаются) с разными vhid (Если на одном РС у этого VHID advskew=100, то на другом РС на этом-же VHID должен быть advskew=0).

PC1

ifconfig em0 10.100.0.1/24

ifconfig carp0 create

ifconfig carp0 vhid 1 pass SeCrEt 10.100.0.2/24 advskew 0

ifconfig carp1 create

ifconfig carp1 vhid 2 pass AnoTheRSeCrEt 10.100.0.2/24 advskew 100

PC2

ifconfig em0 10.100.0.3/24

ifconfig carp0 create

ifconfig carp0 vhid 1 pass SeCrEt 10.100.0.2/24 advskew 100

ifconfig carp1 create

ifconfig carp1 vhid 2 pass AnoTheRSeCrEt 10.100.0.2/24 advskew 0

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

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

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

Jabber ( болтовня, трёп) — система для быстрого обмена сообщениями и информацией о присутствии (в контакт-листе) между любыми двумя пользователями Интернета на основе открытого протокола XMPP.
В наше время, стал очень распространён протокол обмена сообщениями — Jabber. Сейчас я расскажу, как установить собственный Jabber-сервер на FreeBSD при помощи OpenFire.

Итак, поехали…

1. Для начала устанавливаем из портов сервер OpenFire:

cd /usr/ports/net-im/openfire
make install clean

Если в процессе инсталляции программа установки попросит Вас загрузить дополнительное ПО — загрузите, иначе, программа может начать работать неправильно или не будет работать вообще.

2. Подготовка:

Если инсталляция прошла успешно (а она должна пройти успешно), смело приступайте к запуску сервера:
Для начала нужно добавить следующую строку в /etc/rc.conf:

openfire_enable=”YES”

3. Запускаем:

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

Затем проверяем, загрузился ли он:

/usr/local/etc/rc.d/wildfire status
The daemon is running.

Если всё нормально, открывайте браузер и соединяйтесь с сервером (если он не локальный, на его внешний IP-адрес) на порт 9090, или подключаемся 127.0.0.1:9090 (если он локальный).
Находим строку «Domain» и вводим имя домена, на котором будет располагаться Jabber-сервер (можно ввести IP-адрес вашего сервера)
В качестве СУБД выбираем «Embedded DataBase» (хотя можно установить и выбрать другую СУБД)
Раз всё закончено жмём «Continue» и вводим пароль администратора Jabber-сервера.

4. Добавляем пользователей:

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

Для начала переходим по ссылке «Registration & Login», тут нужно выбрать могут или нет пользователи самостоятельно создавать аккаунты. Для добавления пользователей переходим в раздел «Users/Group». Для создания нового пользователя щёлкаем по «Create New User». Для создания новой группы щёлкаем по «Create New Group».

Ну думаю всё основное уже ясно. Удачи.

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

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