Архив рубрики: Полезное по FreeBSD

Красноярский сайт о FreeBSD. Все, что связанно с FreeBSD, мои личные записки и опыт. А так как я проживаю в Красноярске, очень многие FreeBSD статьи имеют прямое отношение к этому городу.

Список номеров ip протоколов

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

Номер Ключевое Протокол
слово
======= ======= ==============
0 HOPOPT IPv6 Hop-by-Hop Option
1 ICMP Internet Control Message
2 IGMP Internet Group Management
3 GGP Gateway-to-Gateway
4 IP IP in IP (инкапсуляция)
5 ST Stream
6 TCP Transmission Control
7 CBT CBT
8 EGP Exterior Gateway Protocol
9 IGP любой частный внутренний шлюз
(используется компанией Cisco для протокола IGRP)
10 BBN-RCC-MON BBN RCC Monitoring
11 NVP-II Network Voice Protocol
12 PUP PUP
13 ARGUS ARGUS
14 EMCON EMCON
15 XNET Cross Net Debugger
16 CHAOS Chaos
17 UDP User Datagram
18 MUX Multiplexing
19 DCN-MEAS DCN Measurement Subsystems
20 HMP Host Monitoring
21 PRM Packet Radio Measurement
22 XNS-IDP XEROX NS IDP
23 TRUNK-1 Trunk-1
24 TRUNK-2 Trunk-2
25 LEAF-1 Leaf-1
26 LEAF-2 Leaf-2
27 RDP Reliable Data Protocol
28 IRTP Internet Reliable Transaction
29 ISO-TP4 ISO Transport Protocol Class 4
30 NETBLT Bulk Data Transfer Protocol
31 MFE-NSP MFE Network Services Protocol
32 MERIT-INP MERIT Internodal Protocol
33 SEP Sequential Exchange Protocol
34 3PC Third Party Connect Protocol
35 IDPR Inter-Domain Policy Routing Protocol
36 XTP XTP
37 DDP Datagram Delivery Protocol
38 IDPR-CMTP IDPR Control Message Transport Proto
39 TP++ TP++ Transport Protocol
40 IL IL Transport Protocol
41 IPv6 Ipv6
42 SDRP Source Demand Routing Protocol
43 IPv6-Route Routing Header for IPv6
44 IPv6-Frag Fragment Header for IPv6
45 IDRP Inter-Domain Routing Protocol
46 RSVP Reservation Protocol
47 GRE General Routing Encapsulation
48 MHRP Mobile Host Routing Protocol
49 BNA BNA
50 ESP Encap Security Payload for IPv6
51 AH Authentication Header for IPv6
52 I-NLSP Integrated Net Layer Security TUBA
53 SWIPE IP with Encryption
54 NARP NBMA Address Resolution Protocol
55 MOBILE IP Mobility
56 TLSP Transport Layer Security Protocol
с использованием обработки ключей Kryptonet
57 SKIP SKIP
58 IPv6-ICMP ICMP for IPv6
59 IPv6-NoNxt No Next Header for IPv6
60 IPv6-Opts Destination Options for IPv6
61 любой внутренний протокол узла
62 CFTP CFTP
63 любая локальная сеть
64 SAT-EXPAK SATNET и Backroom EXPAK
65 KRYPTOLAN Kryptolan
66 RVD MIT Remote Virtual Disk Protocol
67 IPPC Internet Pluribus Packet Core
68 любая распределенная файловая система
69 SAT-MON SATNET Monitoring
70 VISA VISA Protocol
71 IPCV Internet Packet Core Utility
72 CPNX Computer Protocol Network Executive
73 CPHB Computer Protocol Heart Beat
74 WSN Wang Span Network
75 PVP Packet Video Protocol
76 BR-SAT-MON Backroom SATNET Monitoring
77 SUN-ND SUN ND PROTOCOL-Temporary
78 WB-MON WIDEBAND Monitoring
79 WB-EXPAK WIDEBAND EXPAK
80 ISO-IP ISO Internet Protocol
81 VMTP VMTP
82 SECURE-VMTP SECURE-VMTP
83 VINES VINES
84 TTP TTP
85 NSFNET-IGP NSFNET-IGP
86 DGP Dissimilar Gateway Protocol
87 TCF TCF
88 EIGRP EIGRP
89 OSPFIGP OSPFIGP
90 Sprite-RPC Sprite RPC Protocol
91 LARP Locus Address Resolution Protocol
92 MTP Multicast Transport Protocol
93 AX.25 AX.25 Frames
94 IPIP IP-within-IP Encapsulation Protocol
95 MICP Mobile Internetworking Control Pro.
96 SCC-SP Semaphore Communications Sec. Pro.
97 ETHERIP Ethernet-within-IP Encapsulation
98 ENCAP Encapsulation Header
99 любая частная схема шифрования
100 GMTP GMTP
101 IFMP Ipsilon Flow Management Protocol
102 PNNI PNNI over IP
103 PIM Protocol Independent Multicast
104 ARIS ARIS
105 SCPS SCPS
106 QNX QNX
107 A/N Active Networks
108 IPComp IP Payload Compression Protocol
109 SNP Sitara Networks Protocol
110 Compaq-Peer Compaq Peer Protocol
111 IPX-in-IP IPX in IP
112 VRRP Virtual Router Redundancy Protocol
113 PGM PGM Reliable Transport Protocol
114 любой протокол 0-hop
115 L2TP Layer Two Tunneling Protocol
116 DDX D-II Data Exchange (DDX)
117 IATP Interactive Agent Transfer Protocol
118 STP Schedule Transfer Protocol
119 SRP SpectraLink Radio Protocol
120 UTI UTI
121 SMP Simple Message Protocol
122 SM SM
123 PTP Performance Transparency Protocol
124 ISIS over IPv4
125 FIRE
126 CRTP Combat Radio Transport Protocol
127 CRUDP Combat Radio User Datagram
128 SSCOPMCE
129 IPLT
130 SPS Secure Packet Shield
131 PIPE Private IP Encapsulation within IP
132 SCTP Stream Control Transmission Protocol
133 FC Fibre Channel
134-254 свободные номера
255 зарезервированный номер

Настройка NUT сервера на базе pfsense + Powercom Vanguard

nutВ серверной стойке имелся бесперебойник Powercom Vanguard VGD-3000 и шлюз работающий под pfsense. В связи с начавшимися и при этом достаточно частыми отключениями электричества встал вопрос о сохранности серверов не подключенных к программе управления упсом. Самым логичным решением стал NUT, тем более его пакет есть в pfsense. Но не все так просто, этот пакет собран и настроен для простого локального мониторинга упса, настроить NUT в качестве сервера для Windows машин через Web интерфейс нельзя. Но так как это хоть сильно порезанный, но все же FreeBSD 8.1, все легко настраивается через консоль. Поехали!

1. Ставим пакет, но ничего в нем не настраиваем через Web морду (это важно! любые изменения в веб морде перетирают конфиги).

2. Идем на сайт NUT и смотрим какой драйвер использовать для этого упса.

3. Настраиваем все лежащие тут конфиги /usr/local/etc/nut

ups.conf

# Название бесперебойника в конфигурации.
[UPS]
# Драйвер бесперебойника.
driver=blazer_ser
# Порт к которому он подключен.
port=/dev/cuau0
# Описание. Но виндовые клиенты его не видят.
desc = "Powercom Vanguard VGD-3000"
# Переопределение максимального и минимального вольтажа батарейного блока.
default.battery.voltage.high = 84.96 default.battery.voltage.low = 71.84

О последних двух параметрах хотелось бы сказать отдельно. Эти параметры переопределяют максимальный и минимальный вольтаж батарейного блока, ибо драйвер делает это неверно, так же он совершенно не учитывает возможность подключения нескольких батарейных блоков. На основание этих величин NUT высчитывает заряд батареи в процентах. Если не выставить правильно, батарея будет выглядеть разряженной, и соответственно счетчики на выключение будут обрабатываться не должным образом. Как видно на скриншоте:

Коррекция заряда батареи в NUT

 

 

 

 

 

 

 

 

При полном заряде, мой батарейный блок показывает 84.96 V, но при этом заряд батареи 73%. После внесения поправок в конфигурации заряд батарее отображается верно.

Минимальный же заряд можно посмотреть на выводе команды  upsc UPS@localhost

battery.charge: 100
battery.voltage: 84.96
battery.voltage.high: 84.96
battery.voltage.low: 71.84
battery.voltage.nominal: 82.9
device.mfr: UPS
device.model: Model 3000
device.type: ups
driver.name: blazer_ser
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/cuau0
driver.version: 2.6.4
driver.version.internal: 1.55
input.current.nominal: 14.0
input.frequency: 50.0
input.frequency.nominal: 50
input.voltage: 219.5
input.voltage.fault: 0.0
input.voltage.nominal: 220
output.voltage: 220.0
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.firmware: Ver R1.4B
ups.load: 13
ups.mfr: UPS
ups.model: Model 3000
ups.status: OL
ups.temperature: 28.0
ups.type: online

upsd.conf

# Интерфейсы через которые возможно подключение к NUT.
LISTEN 127.0.0.1
LISTEN ::1
LISTEN 192.168.0.1

upsd.users

# Учетная запись которая может управлять NUT.
[monuser]
password = nut510b5e0f983bc
upsmon master

# Учетная запись которая только подчиняется, без возможности управления.
[monslave]
password = win upsmon slave

upsmon.conf

# Не буду повторятся. Все настройки этой секции, и более
# подробное объяснение секций выше
# можно и нужно смотреть в этой статье.

MONITOR UPS@localhost 1 monuser nut510b5e0f983bc master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -p +0"
POWERDOWNFLAG /etc/killpower
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

4. Закрепляем результат:

Как оказалось pfsense довольно специфически устроен. Его настройки хранятся в xml файлах, эти файлы формируются на основе веб морды, а уже на основание этих xml переформируются все конфиги. Так как я ничего не делал через веб морду, все конфиги после перезагрузки затерлись. Я потратил некоторое время что бы сделать 2 вывода.

Первый, это то, что подобная система интересна, но очень хрупка и как показал эксперимент, если убить основной xml, система перестает работать на все 100% (не советую трогать эти файлы на рабочей машине).

Второй вывод, это то, что пытаться разобраться в устройстве этой схемы, или пытаться конфигурировать pfsense через xml не имеет вообще никакого смысла.

Выход из ситуации прост и костылеобразен ))) После настройки копируем папку с конфигами NUT в надежное место (home, root, var, в общем, куда угодно) и после перезагрузки и переформирования конфиговх погаными xml, заменяем получившиеся конфиги своими и перезапускаем сервер. Это костыль, но это надежно и это работает.

Я сохранил конфиги в /root Создал в /usr/local/etc/rc.d (Каталог с пользовательскими скриптами, которые стартуют после загрузки системы.) sh скрипт с таким содержимым:

#!/bin/sh
# Выжидаем 15 сек, что бы не переписать конфиги раньше, чем они переформируются.
sleep 15
# Копируем свои конфиги на место и перегружаем NUT
cp -R /root/nut /usr/local/etc && /usr/local/etc/rc.d/nut onerestart

Существует еще один вариант сохранить свои конфиги. Все конфиги создаются по нужным папкам и файлам руководствуясь этим файлом настройки /usr/local/pkg/nut.inc

Можно сменить в нем целевую папку с /usr/local/etc/nut на какую то другую, и тогда пере заливка не будет портить наши конфиги. Просто меняем строчку NUT_DIR’,’/usr/local/etc/nut например на такую NUT_DIR’,’/usr/local/etc/nut_pfsense только надо предварительно создать папку nut_pfsense.

mkdir /usr/local/etc/nut_pfsense

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

На этом настройка серверной части закончена, осталось настроить машины под Windows.

5. Настройка Windows машина на работу с нашим сервером.

Есть 2 программы под Windows способные работать с NUT, первая это WinNutClient — скриншот из которой представлен у меня выше, а вторая WinNutUpsMonV2.0.0b. Так как первая программа больше подходит для мониторинга и может быть выключения рабочих станций, для серверов она не подходит совсем, т.к. не может стартовать в качестве службы и имеет достаточно ограниченный функционал. WinNutUpsMonV2.0.0b не имеет интерфейса вообще и стартует только как служба, но зато имеет почти те же настройки что и сам нут, а это то, что надо на серверах.

Лирическое отступление о моем применение WinNutClient. У меня в сетки используются перемещаемые профили, при этом, почти все программы работают с сервера (ну и документы там всякие запускаются оттуда же), при подобном подходе к организации работы, без серверов пользователям вообще нечего делать, и было бы неплохо погасить все компьютеры в организации раньше серверов. Именно для этого я и использовал WinNutClient, поставил его на все компы в автозагрузку, после работы обесточил офис, и замерил время работы самого слабого звена (той машины, которая выключилась первая), затем посчитал на сколько процентов разрядился серверный упс за это время и выставил процент разряда на всех компах.
По итогу я получил тот эффект, который был мне нужен. После отключения питания, через 20 минут гаснут рабочие машины (И не надо заморачиваться с разношерстным софтом от разных производителей упсов, и настройкой каждого компьютера в отдельности. Эта утилита настраивается один раз, а затем просто копируется на компа пользователей через групповые политики, или еще как то.), еще через какое то время гаснут сервера. По итогу все счастливы, данные не потерялись, с машинами и серверами все в порядке, профили выгрузились на сервер, и готовы к перемещению в любое другое место (как вариант, ведь электричества может не быть очень долго).

winnut

 

 

 

 

 

 

 

 

 

Скачав установочный пакет WinNUT распакуем и инсталлируем его выбрав вариант Full instalation. В главном окне программы отметим флажок Install As Service, чтобы задействовать службу как сервис Windows, и флажок Automatic Startup, чтобы сервис стартовал после загрузки Windows.

Правим файл upsmon.conf расположенный в каталоге с программой.

MONITOR ups@enconas 1 root freenas slave

Здесь после @ идет сетевое имя компьютера на котором работает NUT сервер. По умолчанию для связи используется порт 3493, но его можно переопределить, задав явное значение через двоеточие (например hostname:5678). Значение 1 указывает на количество батарей UPS. Далее идут логин и пароль на доступ к серверу.

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

SHUTDOWNCMD «shutdown -s»

Перед отключением Windows желательно об этом сообщить пользователю (хотя это актуально только на терминальных серверах). И еще, надо обратить внимание на путь до alertPopup, ибо он почему то часто «левый».

NOTIFYCMD «c:\\Program Files\\WinNUT\\alertPopup.exe»

Пожалуй самый важный параметр, он указывает остаток заряда батарее в процентах, при котором начинается завершение работы (ну или что вы там себе зададите параметром SHUTDOWNCMD).

Хочется обговорить один момент, который ИМХО достаточно важен, но нигде я не встретил упоминания о такой ситуации. Представим себе следующее: Сервер с NUT и сервер с виндой подключены к одной розетке упса, при этом наступает момент разрядки ниже установленной нами границы в 5%, сервер с виндой гаснет в штатном режиме. И как только он гаснет, включают электричество, розетка не была обесточена (ведь сервер с NUT продолжает рабоать), поэтому сам запустится по настройке BIOS сервер не сможет, и будет оставаться выключен до ручного включения. Поэтому разумным решение будет выставление одинакового процента отключения на сервере и на клиентах (но при этом надо выставлять параметры POLLFREQ и POLLFREQALERT на более частое время опроса, дабы клиент не пропустил сигнал выключения от сервера, ведь повтора не будет. У меня выставлено по 1 секунде). Или как вариант, выставить процент с минимальным отличием, к примеру, на сервере 5%, на клиентах 6%, но подобный поход будет не состоятельным при мощном батарейном блоке и низкой нагрузке на упс, ибо даже один процент разряда может означать и 10 и 20 минут работы.

FINALDELAY 5

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

POLLFREQ 1

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

POLLFREQALERT 1

Обычно тут все копируют строчку про зашумление сети, я вам хочу сказать, что это уже очень давно не актуально, ибо эта рекомендация писалась еще во времена каоксиала и любая езернетовская сеть, пусть даже 10BASE-T, не почувствует «шума» от сотни NUT серверов.

Закончив этап настройки можно запустить сервис на исполнение. Для этого жмем кнопку «Apply and Start WinNUT«. Состояние строки Status: должно измениться с Not Running на Running as Service, а в логе не должно быть ошибок!

Проверить работу всей системы можно командой:

upsmon -c fsd

на NUT сервере (выполняющего в режиме master`а).

FreeBSD

Решил познакомится с этой системой. Сколько я занимаюсь Linux, до FreeBSD руки не доходили, а интерес зреет давно, особенно после просмотров вакансий, где Linux и FreeBSD ставят в одно требование. Хотя лично я не могу понять зачем их использовать вместе, если они фактически идентичны и взаимозаменяемы. В общем в этом разделе буду писать свои заметки.