Архив автора: provoip

Об авторе provoip

Кролики - это не только ценный мех, но и полтора-два килограмма диетического, легкоусвояемого мяса (с)

Dlink: Dlink DGS-1100-10/ME — базовая настройка


Дефолтные настройки Dlink DGS-1100-10/ME:

  • логин/пароль — admin/пустой пароль
  • management vlan default (vlan-id 1)
  • ip-address 10.90.90.90/8

1. Настройка Ethernet-интерфейсов

По умолчанию все порты подняты, посмотреть административное состояние (первая колонка — Enable/Disable) и текущее состояние портов:

sw01:5# sh ports
Command: show ports

Port        State/          Settings                                 Connection                          Address
                MDI       Speed/Duplex/FlowCtrl   Speed/Duplex/FlowCtrl        Learning
——      ———         ———————              ———————                   ———
1           Enabled         Auto/Disabled                      Link Down                          Enabled
Auto

10(C)   Enabled         Auto/Disabled                      Link Down                          Enabled
Auto
10(F)   Enabled         Auto/Disabled                      Link Down                          Enabled
Auto

9 и 10 порты в этом коммутаторе — комбо — можно использовать или медь (C), или оптику (F)

посмотреть описания портов (description):

sw01:5# sh ports descr
Command: show ports description

поднять порт 1:

sw01:5# config ports 1 medium_type copper state enable
Command: config ports 1 medium_type copper state enable

Success!

потушить порт 1:

sw01:5# config ports 1 medium_type copper state disable
Command: config ports 1 medium_type copper state disable

Success!

Установить description порта:

sw01:5# config ports 1 medium_type copper description CUSTOMER1
Command: config ports 1 medium_type copper description CUSTOMER1

Success!

Убрать description порта:

sw01:5# config ports 1 medium_type copper clear_description
Command: config ports 1 medium_type copper clear_description

Success!

Если медному (copper) порту, коим и является порт 1, сказать, что он оптический (fiber), он в это не поверит:

sw01:5# config ports 1 medium_type fiber description CUSTOMER1
Command: config ports 1 medium_type fiber description CUSTOMER1

Port 1 can not set with fiber medium .

Failure!

2. Настройка vlan 802.1q

Посмотреть конфигурацию вланов:

sw01:5# sh vlan
Command: show vlan

VID                  : 1           VLAN NAME       : default
VLAN Type            : Static
Member Ports         : 1-10
Untagged Ports       : 1-10

По умолчанию все порты находятся в влане с именем default с vlan-id 1

При манипуляции с вланами, оперируем именно именем влана, что не всегда удобно. Я в таком случае, чтобы не путаться, в качестве vlan-name задаю номер этого влана (vlan-name=vlan-id) — это не руководство к действию, вы можете поступать иначе; например, если у вас в другом месте есть база/табличка с указанием, какому имени влану соответствует какой vlan-id, то держать такую табличку на длинке не имеет смысла.

Создание нового влана:

sw01:5# create vlan 1258 tag 1258
Command: create vlan 1258 tag 1258

Добавление созданного влана на порты:

тегированным:

sw01:5# conf vlan 1258 add tag 8
Command: config vlan 1258 add tagged 8

Success!

нетегированным:

sw01:5# conf vlan 1258 add untag 1
Command: config vlan 1258 add untagged 1

One untag port can only belong to one VLAN.

Failure!

Сначала нужно удалить дефолтный влан с первого порта, прежде чем назначать ему новый (помним, что дефолтный влан назван как default, это имя и используем):

sw01:5# conf vlan default del 1
Command: config vlan default delete 1

Success!

sw01:5# conf vlan 1258 add untag 1
Command: config vlan 1258 add untagged 1

Success!

Посмотреть конфигурацию определенного влана по имени:

sw01:5# show vlan default
Command: show vlan default

VID                  : 1           VLAN NAME       : default
VLAN Type            : Static
Member Ports         : 2-8,10
Untagged Ports       : 2-8,10

по vlan-id:

sw01:5# show vlan vlanid 1
Command: show vlan vlanid 1

VID                  : 1           VLAN NAME       : default
VLAN Type            : Static
Member Ports         : 2-8,10
Untagged Ports       : 2-8,10

Посмотреть, какой влан/вланы сконфигурированы на определенном порту:

sw01:5# show vlan ports 8
Command: show vlan ports 8

Port 8
VLAN ID   Untagged   Tagged
——-          ———         ——
   1                     X                 —
   1258              —                  X
   1259              —                  X

3. Настройка доступа

3.1 Management интерфейс

L3-интерфейс для управления коммутатором называется System, установка/изменение ip-адреса на менеджмент-интерфейсе выглядит следующим образом:

config ipif System ipaddress 192.168.5.2/255.255.255.0 gateway 192.168.5.1

Менеджмент влан:

sw01:5# enable management vlan
Command: enable management vlan

Success!

sw01:5# config management vlanid 100
Command: config management vlanid 100

Success!

не забудьте перед этим создать сам влан и назначить на необходимые порты.

3.2 Добавление пользователя

Сначала табличка пустая, что для меня странно, ведь мы под admin’ом же как-то попадаем на коммутатор, хоть и без пароля:

sw01:5# show account
Command: show account

Username             Access Level
——————   ————

Account is empty!

Создание пользователя:

можно создать пользователя с уровнем доступа admin, operator, или user

sw01:5# create account admin <username 15>

sw01:5# create account admin admin
Command: create account admin admin

Enter a case-sensitive new password:*****
Enter the new password again for confirmation:*****
Connection closed by foreign host.

Выкинуло с коммутатора, нужно перелогиниться с уже установленным паролем.

Чтобы пароль не светился  plain-текстом в конфиге, включаем  password encryption:

sw01:5# enable password encryption
Command: enable password encryption

Success!

4. Настройка времени

Включить sntp:

sw01:5# enable sntp
Command: enable sntp

Please set server first then change state to sntp

-просит сначала задать sntp сервер, задаем и включаем sntp:

sw01:5# config sntp primary 192.168.5.1
Command: config sntp primary 192.168.5.1

Success!
sw01:5# enable sntp
Command: enable sntp

Success!

Посмотреть время:

sw01:5# show time
Command: show time

Time information
——————————————
Current Time Source           : Sntp
Current Time                  : 10 Feb 2017 11:05:12
GMT Time Zone offset          : GMT +00:00
Daylight Saving Time Status   : Disabled
Offset in Minutes             : 60
Annual From                   : 01 Jan 0:0
To                            : 01 Jan 0:0

-переход на летнее время не настроен.

Переход на летнее время обычно настраивается как указание старт_даты (последнее воскресенье марта) и стоп_даты (последнее воскресенье октября). Но на длинке никак не сказать «последнее воскресенье», разве что можно установить примерную дату, например 22-е число. Следите за форматом записи:

sw01:5# config dst annual s_date 22 s_mth 3 s_time 2
Command: config dst annual s_date 22 s_mth 3 s_time 2

Invalid day setting
sw01:5# config dst annual s_date 22 s_mth 03 s_time 2
Command: config dst annual s_date 22 s_mth 03 s_time 2

Invalid day setting

-выше в неправильном формате указано время, нужно задавать часы и минуты через двоеточие. Вот как правильно указываем старт-дату:

sw01:5# config dst annual s_date 22 s_mth 03 s_time 2:0
Command: config dst annual s_date 22 s_mth 03 s_time 2:0

Success!

-стоп-дату:

Success!
sw01:5# config dst annual e_date 22 e_mth 10 e_time 3:0
Command: config dst annual e_date 22 e_mth 10 e_time 3:0

Success!

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

sw01:5# config dst annual e_date 22 e_mth 10 e_time 3:0
Command: config dst annual e_date 22 e_mth 10 e_time 3:0
sw01:5# config dst annual s_date 22 s_mth 03 s_time 2:0 e_date 22 e_mth 10 e_time 3:0d_time>
Command: config dst annual s_date 22 s_mth 03 s_time 2:0 e_date 22 e_mth 10 e_time 3:0
me 3:0d_time>ig dst annual s_date 22 s_mth 03 s_time 2:0 e_date 22 e_mth 10 e_time <end_time>

SNMP Error Wrong Length.

Можно эту же строку напечатать в текстовом редакторе, а потом скопировать и вставить — тогда кушает:

sw01:5# config dst annual s_date 22 s_mth 03 s_time 2:0 e_date 22 e_mth 10 e_time 3:0

Также необходимо указать временную зону (у нас +2):

sw01:5# config time_zone operator + hour 2 minute 0

Смотрим время еще раз:

sw01:5# show time
Command: show time

Time information
——————————————
Current Time Source           : Sntp
Current Time                  : 10 Feb 2017 13:19:12
GMT Time Zone offset          : GMT +02:00
Daylight Saving Time Status   : Annual
Offset in Minutes             : 60
Annual From                   : 22 Mar 2:0
To                            : 22 Oct 3:0

5. Hostname (строка приглашения) и banner

Настроить строку приглашения:

switch:5# config command_prompt sw01
Command: config command_prompt sw01

Success!

Баннер:

sw01:5# config greeting_message
Command: config greeting_message

Greeting Messages Editor
================================================================================
Hello world!

================================================================================
Array Up     : Cursor up                Ctrl+X       : Erase all
Array Down   : Cursor down              Ctrl+L       : Relaod original data
Array Left   : Cursor left              Ctrl+C       : Quit without save
Array Right  : Cursor right             Ctrl+W       : Save and quit
Ctrl+D       : Erase current line
Success!

Проверяем баннер, перелогиниваемся:

root@srv:/home/user1 # telnet sw01
Trying 192.168.5.2…
Connected to sw01.company.net.
Escape character is ‘^]’.

Hello world!

DGS-1100-10/ME login:

6. Другое

config sysname «sw01»
config syslocation «Kozurina,8»
config syscontact «admin@company.net»

Включить jumbo-frame (джамбо-фреймы):

enable jumbo_frame

Сохранить конфигурацию:

sw01:5# save config
Command: save config

Success!

 

Cisco ME 3400: Почему не ходит трафик между двумя портами

Кратко суть:

В цискосвитчах МЕ-серии (metro-ethernet) есть три типа портов: uni, nni и eni.

  • uni — user-network interface — для подключения конечных устройств (ПК, IP-телефоны)
  • nni — network node interface — для подключения роутеров и коммутаторов
  • eni — enhanced network interface — тоже для подключения роутеров и коммутаторов, но с дополнительными возможностями, такими, как: CDP, STP, LACP и т.д.

Так вот, по умолчанию, в 10/100-мегабитных портах установлен режим uni, а в аплинковых портах (SFP-шных 1G, например) — режим nni. И главная соль здесь вот где:

— uni порты могут передавать трафик только в nni.

Т.е. два устройства, включены в соседние 100М-порты одного коммутатора, находящиеся в одном влане не видят друг друга! и не могут обмениваться между собой информацией.

Решение проблемы:

установить два порта в режим nni (или комбинация uni+nni тоже будет работать)

switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
switch(config)#int Fa0/1
switch(config-if)#port-type nni

Тут также стоит заметить, что если у вас на циске образ «metro base» или «metro access», то сконфигурить в качестве nni можно только 4 порта, для «metro IP access» таких ограничений нет.

Не судите строго, возможно, для кого-то такие заковырки в настройке (типа так реализовывается секьюрность) являются очевидными, но я с Метро-эзернет свичами сталкиваюсь впервые.

Cisco 7940: мелкие неприятные грабли при работе c SIP

Все ниже написанное касается прошивки P0S3-8-12-00.

Вроде все правильно, но не регистрируется.

Грабля номер раз

Формат записи адреса Proxy-сервера, на котором телефон будет регистрироваться: если указываем доменное имя — заключаем в кавычки, если ip-адрес — кавычки убираем!

Правильно:

# Proxy Server
proxy1_address: "sip.pro-voip.com.ua"

Правильно:

# Proxy Server
proxy1_address:  10.10.10.111

Неправильно:

# Proxy Server
proxy1_address:  "10.10.10.111"

Симптомы — у меня телефон так не смог зарегистрироваться, хотя посылал запросы REGISTER на первый взгляд с правильными заголовками и на правильный ip-адрес сервера…

Грабля номер два

Это NAT. Чтобы телефон зарегистрировался за NAT’ом мне потребовалось:

  1. Отредактировать SIPDefault.cnf:
# NAT/Firewall Traversal
nat_enable: 1;                 0-Disabled (default), 1-Enabled
nat_address: "";               WAN IP address of NAT box (dotted IP or DNS A record only)
voip_control_port: 5060;       UDP port used for SIP messages (default - 5060)
start_media_port: 16384;       Start RTP range for media (default - 16384)
end_media_port: 16391;         End RTP range for media (default - 32766)
nat_received_processing: 1;    0-Disabled (default), 1-Enabled

2. На роутере выполнить проброс UDP-портов 5060 (sip) и 16384-16391 (rtp)

3. На роутере отключить SIP ALG (не везде он есть). На джунипере это делается командой:

set security alg sip disable

Cisco 7940: Файл диалплана dialplan.xml

Поскольку логику обработки вызовов проще организовать на ip-pbx, файл dialplan.xml является необязательным, но может внести некоторые полезные дополнительные функции, такие как автоматический набор и вторичный тоновый сигнал.

Файл dialplan.xml имеет следующую стркутуру:

где:

pattern может содержать: . (точка) для замены любого символа, * (звездочка) для замены одного или более символов, , (запятая) для генерации вторичного сигнала.
sec – время в секундах, после которого начинается набор.
type – может быть IP или Phone. Тэг, добавляемый к номеру, регистронезависим.
xxx – номер, который будет набираться вместо введенного пользователем при совпадении с pattern.
route – адрес прокси-сервера SIP, на который перенаправляется звонок, значение может быть default, emergency или имя прокси-сервера.
tone – если не задан, используется вторичный гудок по умолчанию, если стоит запятая и затем имя гудка, то проигрывает этот звук; без запятой гудок игнорируется.

Также можно указать решетку (#) и звездочку (*) как набираемые символы. По умолчанию # означает «набрать сейчас», не дожидаясь совпадения с шаблоном из номерного плана. * по умолчанию означает * или . в шаблоне (wildcard-символ).

В качестве вторичного гудка можно использовать следующие значения (после запятой): Bellcore-Alerting, Bellcore-dr5, Bellcore-Reorder, Bellcore-Busy, Bellcore-dr6, Bellcore-Stutter, Bellcore-BusyVerify, Bellcore-Hold, CallWaiting-2, Bellcore-CallWaiting, Bellcore-Inside, CallWaiting-3, Bellcore-Confirmation, Bellcore-None, CallWaiting-4, Bellcore-dr1, Bellcore-Outside (default), Cisco-BeepBonk, Bellcore-dr2, Bellcore-Permanent, Cisco-Zip, Bellcore-dr3, Bellcore-Reminder, Cisco-ZipZip, Bellcore-dr4.

К каждому правилу можно добавить <!— комментарий —> в конце каждой строки.

TIMEOUT=»0″ при совпадении паттерна, указывает сразу же отправить вызов на обработку — так реализуется вышеупомянутый автоматический набор.

<TEMPLATE MATCH=»1..» TIMEOUT=»0″ /> <!— Local Extensions —>

Например, набираем номер 110, подпадаем под первое правило и сразу идет вызов без дополнительных действий с нашей стороны, не нужно нажимать Dial или #.

Для звонков в другие страны будем использовать правило с паттерном 9,00* — пользователь поднимает трубку, слышит длинный гудок, набирает 9 — слышыт другой длинный  гудок (вторичный тоновый сигнал, это нам дает запятая в паттерне), затем номер, начинающийся с двух нулей (в Украине это код выхода на международную линию). Таймаут здесь уже не ставим 0, поскольку не указано точное колличество цифер, которые будут набраны.

<TEMPLATE MATCH=»9,00*» TIMEOUT=»10″ />

Номер в канал передается польностью — вместе в первой цифрой 9 — учитывайте это в диалплане на ip-pbx.

Cisco 7940: Обновление прошивки. Из SCCP в SIP

Особенности Cisco 7940

Питание: работает через POE. Если хотите отдельное питание на 220V, нужно докупить блок питания и шнур питания дополнительно.
Протокол: заточен под работу с Cisco Call Manager, дефолтная прошивка идет с SCCP протоколом, если нужен SIP — нужно заливать прошивку с SIP. Также есть прошивки с MGCP протоколом, если кто-то его использует.
Апгрейд и конфигурирование: производится через tftp — в корень tftp-сервера заливаем файл прошивки и конфигурационные файлы, а циске сообщаем адрес этого tftp-сервера

 

Получение файлов

Для начала файлы SIP-прошивки нужно получить. На сайте cisco.com они есть, но они залочены для обычного зарегистрированного пользователя, нужно либо иметь контракты на обслуживание компании, или связывать аккаунт с серийными номерами ваших цисковских продуктов, в общем нужно показать, что вы у циски что-либо приобрели и имеете право на поддержку.

 

Подготовка телефона

Обновление прошивки производится посредством TFTP-сервера. Сам циско-фон нужно сбросить, настроить сетевые параметры (ip/маска/шлюз) и указать адрес TFTP-сервера. Это можно сделать с помощью DHCP-сервера или прописать вручную через меню телефона.

 

Сброс и подготовительная настройка параметров телефона

Сначала разблокировать конфиг:

Settings — > Unlock config
пароль cisco (это пароль по умолчанию, но его могли поменять)

Сброс:

Settings -> Network Setup -> Erase Configuration:YES

уйдет в ребут.

После этого телефон пробует получить сетевые настройки и адрес TFTP от DHCP-сервера. Если DHCP-сервер не используется, настраиваем вручную.

 

Настройка DHCP-сервера

Пример настройки isc-dhcp на FreeBSD

/usr/local/etc/dhcpd.conf

# phones
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.149;
option routers 192.168.1.1;
option tftp-server-name «192.168.1.2»;
}

Значение опции tftp-server-name указываем в кавычках (потому что это строка), иначе вернет ошибку:

/usr/local/etc/dhcpd.conf line 29: expecting string.
option tftp-server-name 192.

 

Ручная настройка параметров телефона

Используем, если нет DHCP-сервера. Сначала снова разблокируем конфиг:

Settings — > Unlock config

Отключаем DHCP:

Settings — > Network Setup ->DHCP Enabled: NO

затем можно редактировать настройки ip/mask/gw и адрес tftp-сервера

 

Файлы прошивки и конфигурационные файлы на TFTP

В директории tftp должны оказаться следующие файлы:

  • OS79XX.TXT (необязательно с 8-й версии)
  • XMLDefault.cnf.xml (если есть SEP<mac>.cnf.xml, вроде как необязательно его создавать)
  • SEP<mac>.cnf.xml
  • P0S3-8-12-00.loads
  • P0S3-8-12-00.sb2
  • P003-8-12-00.bin
  • P003-8-12-00.sbn
  • SIPDefault.cnf
  • SIP<mac>.cnf
  • dialplan.xml (необязательно)
  • RINGLIST.DAT (необязательно)

 

OS79XX.TXT

это файл Dual-boot, в нем указывается, какую версию прошивки загрузить (имеется в виду не релиз, а выбор протокола — SCCP, SIP или MGCP). С 8-й версии прошивки он уже не нужен.

Имя файла OS79XX.TXT чувствительно к регистру и может содержать только имя загружаемого файла без расширения .bin. К примеру, при загрузке ПО SIP версии 2.3 в его имени должна присутствовать только строка P0S30203. Если нужно загрузить ПО версий 3.0 и позднее, имя файла должно находиться в формате P0S3-xx-y-zz. К примеру, при загрузке ПО SIP версии 7.4 в имени файла OS79XX.TXT должна присутствовать строка P0S3-07-4-00.
(c) cisco.com

 

XMLDefault.cnf.xml

файл для определения версии прошивки, которую нужно загрузить

 

SEP<mac>.cnf.xml

файл для определения версии прошивки, которую нужно загрузить. Если версия, указанная в этом файле отличается от версии на флеше телефона, телефон загружает новую прошивку.

 

SIPDefault.cnf

конфигурационный файл для SIP, в нем указываются общие настройки

 

SIP<mac>.cnf

конфигурационный файл для SIP, в котором указываются настройки, специфичные для конкретного телефона. Параметры, указанные здесь, перезаписывают параметры, указанные в SIPDefault.xml. Здесь можно указывать не только логин/екстеншен/пароль для подключения, а любые значения, которые присутствуют в SIPDefault.

 

dialplan.xml (необязательно)

файл диалплана.

 

RINGLIST.DAT (необязательно)

Листинг аудио-файлов, которые могут использоваться как мелодии звонков. Эти аудио-файлы также должны находиться на tftp

 

Ну и необходимые бинарники, без них «кина не будет»:

P0S3-8-12-00.loads
P0S3-8-12-00.sb2
P003-8-12-00.bin
P003-8-12-00.sbn

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

 

Полезные ссылки

http://www.voip-info.org/wiki/view/Asterisk+phone+cisco+79xx

Cisco 7940: Конфигурацианные файлы SIPDefault.cnf и SIPXXXXYYYYZZZZ.cnf

tftp-сервер нам жизненно необходим только при обновлении прошивки. Для конфигурирования телефонов tftp — удобная, но не обязательная вещь.

Т.е. можно единожды настроить телефон вручную или через tftp и убрать tftp (или убрать cnf-файлы с tftp, или закрыть доступ к tftp), и перенести телефон в сеть к пользователю, где tftp не будет.

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

С tftp телефон загружает  следующие файлы:
сначала:
SIPDefault.cnf — дефолтный конфигурационный файл
затем:
SIPXXXXYYYYZZZZ.cnf — phone-specific конфигурационный файл — для конкретного телефона с MAC-адресом SIPXXXXYYYYZZZZ. MAC-адрес записывается в верхнем регистре, расширение .cnf — в нижнем.

 

Параметры, указанные в SIPXXXXYYYYZZZZ.cnf, перезаписывают параметры, указанные в SIPDefault.xml. В SIPXXXXYYYYZZZZ.cnf можно указывать не только логин/екстеншен/пароль для подключения, а любые значения, которые присутствуют в SIPDefault.cnf.

 

Правила записи переменных

Переменные в конфигурационных файлах имеют следующий формат:

variable-name : value ; optional comments

  • одна переменная — одно значение;
  • разделяем переменные и значения двоеточием;
  • на одну строку одна пара переменная:значение, пару не разрываем (не переносим «значение» в следующую строку);
  • можно ставить пробелы перед/после переменных и значений. Если нужен пробел в значении, заключаем значение в кавычки одинарные или двойные. Открывающие и закрывающие кавычки должны быть одинаковыми — либо одинарными, либо двойными;
  • для комментариев используются ; или #
  • строки могут быть пустыми, или с комментариями;
  • названия переменных — регистроНЕзависимые.

Примеры файлов конфигурации для настройки SIP-протокола на телефонах Cisco 7940 (взяты с сайта cisco):

SIPDefault.cnf — файл с общими параметрами SIP, применяемый ко всем телефонам (скачать)
SIPXXXXYYYYZZZZ.cnf — файл в настройками конкретного телефона (скачать)

 

SIPDefault.cnf


 

SIPXXXXYYYYZZZZ.cnf


 

 

Debian: Установка и настройка NET-SNMP

http://pro-voip.com.ua net-snmpЗдесь все манипуляции проводятся на Debian Wheezy.

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

root@deb# apt-get install snmp snmpd

snmp — SNMP (Simple Network Management Protocol) applications
snmpd — SNMP (Simple Network Management Protocol) agents

snmpd.conf — конфигурационный файл для Net-SNMP SNMP агента.

Редактируем файл /etc/snmp/snmpd.conf:

root@deb# nano /etc/snmp/snmpd.conf

Рестартуем демон snmpd:

root@deb# service snmpd restart

Проверяем (например):

root@deb# snmpwalk -v2c -c public localhost

Контроль доступа к snmpd можно организовать двумя способами:

  • Traditional Access Control — традиционный контроль доступа
  • VACM Configuration — View-Based Access Control Model

 

SNMPv1 и SNMPv2c

 

Традиционный контроль доступа

Создание read-only и read-write community:

rocommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]
rwcommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]

Создать read-only комьюнити с именем public, дать доступ ко всему дереву OID’ов, не ограничивая доступ к snmpd:

rocommunity public

Создать read-only комьюнити с именем public, дать доступ ко всему дереву OID’ов, разрешив доступ к snmpd только localhost:

rocommunity public localhost

Создать read-only комьюнити public, разрешить доступ с localhost’а к ветке .1.3.6.1.2.1.1:

rocommunity public localhost .1.3.6.1.2.1.1

Если нам нужно объединить несколько разных веток дерева OID’ов для одного community, используем именованые «view»:

view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2

rocommunity public localhost -V systemview

Если нужна более гибкое управление доступом к SNMP, следует использовать другую модель управления — VACM.

 

Контроль доступа VACM

Для того, чтобы настроить доступ к snmpd по модели VACM, необходимо определить 4 директивы:

  • com2sec
  • group
  • view
  • access

com2sec определяет некое имя (security name), к нему привязываются ip-адрес и комьюнити, с которыми можно получить доступ к snmpd:

com2sec  [-Cn CONTEXT] SECNAME SOURCE COMMUNITY

SECNAME — security name;
SOURCE — имя хоста, ip-адрес хоста, или подсеть в формате ip/mask, с которого разрешен доступ к snmpd;
COMMUNITY — строка community;
CONTEXT — используется в SNMPv3

group определяет группу, к которой привязываются ранее созданные secname:

group GROUP {v1|v2c|usm|tsm|ksm} SECNAME

view определяет ветки дерева MIB, к которым будем давать доступ:

view VNAME TYPE OID [MASK]

VNAME — произвольное имя вьюшки. Имена могут повторятся, таким образом создается вьюшка в набором «веток» дерева OID’ов;
TYPE — included или excluded — действие: включить или исключить ветку с view;
OID — определенный OID или ветка;

access даем ранее созданной группе права на доступ к просмотру/записи определенной вьюшки — связка group — view:

access GROUP CONTEXT {any|v1|v2c|usm|tsm|ksm} LEVEL PREFX READ WRITE NOTIFY

GROUP — имя группы, определенное в шаге 2;
CONTEXT — default context —  «»

Пример:

«Пользователь» local — это пользователь локалхоста с комьюнити secret33, который входит в группу rwgroup. Пользователи группы rwgroup имеют read-write права на view с названием all. Вьюшке all соответствует дерево .1.

«Пользователь» rouser1 может получить доступ с сети 10.10.10.0/24, а «пользователь» rouser2 — с ip-адреса 11.11.11.11/32. Комьюнити — public. «Пользователи» rouser1 и rouser2 входят в группу rogroup. Группа rogroup имеет read-only права на view с названием systemview, в которую входят такие ветки дерева — 1.3.6.1.2.1.1, 1.3.6.1.2.1.2, 1.3.6.1.2.1.25:

###############################################################################
# Access Control - VACM
###############################################################################

####
# First, map the "community name" into a "security name"
#          sec.name    source            community
com2sec    local       localhost         secret33
com2sec    rouser1     10.10.10.0/24     public
com2sec    rouser2     11.11.11.11/32    public

####
# Second, map the "security name" into a "group name":
#        groupName    securityModel    securityName
group    rwgroup      v2c              local
group    rogroup      v2c              rouser1
group    rogroup      v2c              rouser2

####
# Third, create a view for us to let the group have rights to:
#       name          incl/excl   subtree             mask(optional)
view    all           included    .1
view    systemview    included    .1.3.6.1.2.1.1
view    systemview    included    .1.3.6.1.2.1.2
view    systemview    included    .1.3.6.1.2.1.25

####
# Finally, grant the groups access to the view:
#         group        context    sec.model    sec.level    prefix    read            write    notif
access    rwgroup      ""         any          noauth       exact     all             all      none
access    rogroup      ""         any          noauth       exact     systemview      none     none

# -----------------------------------------------------------------------------

 

SNMPv3

 

В SNMPv3 главным действующим «лицом» выступает не community, а user. Поэтому перед манипуляциями с контролем доступа, нужно сначала создать пользователя. При создании пользователя, мы также определяем уровень безопасности.

В SNMPv3 предусмотрено три уровня безопасности:

  • noAuthNoPriv — без аутентификации, без шифрования
  • authNoPriv — с аутентификацией (SHA|MD5), без шифрования
  • authPriv — с аутентификацией (SHA|MD5),с шифрованием (DES|AES)

Тип аутентификации — MD5 или SHA; Алгоритм шифрования — DES или AES;
SHA-аутентификация и DES/AES-шифрование используют OpenSSL — OpenSSL должен быть установлен, snmpd должен иметь поддержку OpenSSL.

Узнать, с какими опциями был собран net-snmp можно с помощью следующей команды:

root@deb# net-snmp-config --configure-options

Если —with-openssl в выводе есть, значит net-snmp собран с поддержкой openssl, если кто не догадался.

MD5 не использует OpenSSL.

 

Создание пользователя snmpv3

Для этого используется следующая команда:

net-snmp-config  —create-snmpv3-user [-ro] [-A authpass] [-X privpass] [-a MD5|SHA] [-x DES|AES] [username]

Минимальная длина authpass и privpass — 8 символов.

Сначала останавливаем демон snmpd:

root@deb# service snmpd stop

Затем создаем пользователя, например, rouserv3:

root@deb# net-snmp-config --create-snmpv3-user -ro -A testtest -X testtest -a MD5 -x DES rouserv3
adding the following line to /var/lib/snmp/snmpd.conf:
   createUser rouserv3 MD5 "testtest" DES testtest
adding the following line to /usr/share/snmp/snmpd.conf:
   rouser rouserv3

При этом создается 2 записи в двух дефолтных конфигурационных файлах, о чем и пишет net-snmp-config в своем выводе. Если вы, не запуская snmpd, посмотрите на файл /var/lib/snmp/snmpd.conf, то в конце файла вы действительно увидите там строку «createUser rouserv3 MD5 «testtest» DES testtest». При запуске демона snmpd эта строка удаляется, появляется вместо нее ключ.

Запись «rouser rouserv3» в файле /usr/share/snmp/snmpd.conf — это настройка контроля доступа. Мало ведь создать пользователя, нужно дать ему какие-то права. Запись «rouser rouserv3» можно перенести в /etc/snmp/snmpd.conf (что я и делаю), а дальше использовать либо традиционный контроль доступа (оставив эту строку «rouser rouserv3»), либо VACM (по аналогии, как это настраивалось выше с SNMPv2c, только там были rocommunity и rwcommunity, а здесь rouser и rwuser).

 

Традиционный контроль доступа

Создание read-only и read-write-пользователя:

rouser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
rwuser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]

noauth, auth, priv — помним про три уровня безопасности? было описано выше. Как по мне, так тут не хватает опции SOURCE, как в варианте в SNMP v1 и v2c с комьюнити. Для ограничения доступа с определенных ip-адресов нужно будет использовать фаервол. Ну и дальше примеры.

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, без аутентификации и без шифрования:

rouser    rouser1    noauth    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l noAuthNoPriv localhost

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, с аутентификацией, но без шифрования:

rouser    rouser1    auth    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l authNoPriv -a MD5 -A testtest localhost

Дать пользователю rouser1 read-only права на ветку .1.3.6.1.2.1.1, с аутентификацией и с шифрованием:

rouser    rouser1    priv    .1.3.6.1.2.1.1

Проверка:

root@deb# snmpwalk -v3 -u rouser1 -l authPriv -a MD5 -A testtest -x DES -X testtest localhost

 

Контроль доступа VACM

В варианте с SNMP v1 и v2c для настройки VACM нужно было использовать 4 директивы: com2sec, group, view и access. В варианте с SNMP v3 — только три, com2sec использовать не нужно, у нас уже создан snmpv3-пользователь (он уже и есть «security name»), которого можно добавить в группу.

###############################################################################
# Access Control - VACM for SNMPv3
###############################################################################

####
# First, создаем snmpv3-пользователей, как было описано выше.

####
# Second, map the "security name" into a "group name":
#        groupName    securityModel    securityName
group    rwgroup      usm              rwuser1
group    rogroup      usm              rouser1

####
# Third, create a view for us to let the group have rights to:
#       name          incl/excl   subtree             mask(optional)
view    all           included    .1
view    systemview    included    .1.3.6.1.2.1.1
view    systemview    included    .1.3.6.1.2.1.2
view    systemview    included    .1.3.6.1.2.1.25

####
# Finally, grant the groups access to the view:
#         group        context    sec.model    sec.level    prefix    read            write    notif
access    rwgroup      ""         any          noauth       exact     all             all      none
access    rogroup      ""         any          priv         exact     systemview      none     none

Отличие от настройки VACM в SNMP v1 и v2c — это указание securityModel — usm в директве group и указани sec.level в директиве access (sec.level может быть noauth, auth или priv)

snmpwalk

Опрос оборудования с помощью утилиты snmpwalk для SNMPv3:

# snmpwalk -v3 -l authPriv -u username-SNMPv3 -a SHA -A authpassword -x AES -X encryptionpassword 10.10.10.10

Debian: Как узнать температуру процессора?

http://pro-voip.com.ua debianlm-sensors — набор утилит для считывания значений датчиков температуры, вольтажа и оборотов куллеров. С помощью этих утилит можно ответить себе на вопрос «Какая сейчас температура у моего процессора?» Итак, что мы делаем…

1.Устанавливаем lm-sensors:

apt-get install lm-sensors

2. Определяем наличие датчиков в системе:

sensors-detect

3. Догружаем недостающие драйвера:

modprobe <недостающие модули>

4. И все, смотрим значения датчиков:

sensors

 

Установка lm-sensors на Debian Wheezy

root@deb# apt-cache search lm-sensors
...
lm-sensors - utilities to read temperature/voltage/fan sensors
...
root@deb# apt-get install lm-sensors

 

Определение датчиков в системе

Перед запуском команды sensors для считывания показаный с датчиков, нужно сначала определить, какие есть датчики в системе, и указать, показания каких из датчиков мы хотим увидеть в выводе команды sensors. С этим нам поможет утилита sensors-detect. Это интерактивная программа, запускаем ее на выполнение, читаем и отвечаем на вопросы. Рекомендуется оставить ответы по умолчанию (по умолчанию ответ Yes, просто нажимаем Enter)

root@deb# sensors-detect
# sensors-detect revision 6031 (2012-03-07 17:14:01 +0100)
# System: Supermicro X8SIL [0123456789]

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no): yes
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 15h power sensors...                             No
Intel digital thermal sensor...                             Success!
(driver `coretemp')
Intel AMB FB-DIMM thermal sensor...                         No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No
...

Вывод дальнейший опущен, но, думаю, и так все понятно. Например, здесь был найден «Intel digital thermal sensor«, для которого необходимо будет догрузить драйвер coretemp.

...
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
jc42
w83627ehf
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)Y
Successful!

В конце своей работы sensors-detect укажет, какие драйвера необходимы и предложит их добавить в /etc/modules, чтобы они автоматически подгружались при загрузке/перезагрузке системы. Соглашаемся. Но нужно проверить, есть ли у вас эти модули вообще.

Подгружаем недостающие модули

root@deb# modprobe coretemp
root@deb# modprobe jc42
FATAL: Module jc42 not found.
root@deb# modprobe w83627ehf

jc42 — не найден, скорее всего, нужно обновить ядро… jc42 нужен для считывания данных темературного сенсора ST STTS2002 DIMM. Обновиться я сейчас не могу, а какая температура памяти как-то не особо важно, поэтому просто уберу его с /etc/modules

Просмотр значений

Вывод всех значений:

root@deb# sensors

Посмотреть значения датчиков в сыром неотформатированном виде:

root@deb# sensors -u

 

Viel Spaß!

Freeswitch: Аутентификация по ip-адресу с использованием ACL

http://pro-voip.com.ua freeswitchДанный пост посвящен вопросам аутентификации пользователей c использованием acl при регистрации и совершении исходящих вызовов.

Хочу обратить внимание на 3 параметра в sip-профиле

<param name=»auth-calls» value=»true»/>
<param name=»apply-register-acl» value=»customers»/>
<param name=»apply-inbound-acl» value=»customers»/>

apply-register-acl — разрешать регистрацию пользователям, которые прошли проверку acl customers
apply-inbound-acl — разрешать совершать вызовы пользователям, которые прошли проверку acl customers
auth-calls — вкл/выкл аутентифицикацию c использованием acl

если auth-calls=true — apply-register-acl и apply-inbound-acl проверяются
если auth-calls=false — apply-register-acl и apply-inbound-acl игнорируются

Далее разные варианты настройки данных параметров и действия FS и клиента при разных комбинациях и исходах проверки acl

 

На что влияет auth-calls без apply-register-acl и apply-inbound-acl

auth-calls=true/false
apply-register-acl — не указан
apply-inbound-acl — не указан

Здесь аутенфицикация по логину-паролю действует! auth-calls на это никак не влияет.

Процесс регистрации пользователя (Client <-> FS):

REGISTER ->
<- SIP/2.0 401 Unauthorized
REGISTER ->
<- SIP/2.0 200 OK

… как и на входящие инвайты

Процесс совершения исходящего вызова (Client <-> FS):

INVITE ->
<- SIP/2.0 100 Trying
<- SIP/2.0 407 Proxy Authentication Required
ACK ->
INVITE ->
Proxy-Authorization: Digest username=»11″,realm=»10.10.10.10″,nonce=»8898………
<- SIP/2.0 100 Trying

 

На что влияет apply-register-acl

auth-calls=true
apply-register-acl — указан в sip-профиле
apply-inbound-acl — не указан

 

acl: allow

Если ip-пользователя проходит проверку acl (allow):

REGISTER ->
<- SIP/2.0 200 OK

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

acl: deny

Если ip-пользователя не проходит acl (deny):

REGISTER ->
<- SIP/2.0 403 Forbidden

в регистрации отказано

fs_cli

2015-12-03 16:20:00.908959 [WARNING] sofia_reg.c:2005 IP 10.10.10.10 Rejected by register acl "customers"

 

На что влияет apply-inbound-acl

auth-calls=true/false
apply-register-acl = не указан
apply-inbound-acl — указан в sip-профиле

 

apply-inbound-acl на регистрацию никак не влияет, пользователь проходит проверку логин-пароль, как положено:

REGISTER ->
<- SIP/2.0 401 Unauthorized
REGISTER ->
<- SIP/2.0 200 OK

 

А вот здесь с исходящими вызовами интересная история:

acl: allow

Если при совершении исходящего вызова ip пользователя проходит apply-inbound-acl(allow):
пользователь попадает в контекст public (указаный в sip-профиле)

INVITE ->
<- SIP/2.0 100 Trying
<- SIP/2.0 480 Temporarily Unavailable

acl: deny

Если при совершении исходящего вызова ip пользователя не проходит apply-inbound-acl (deny):
попадает в контекст company1 (указаный в домене)

INVITE ->
<- SIP/2.0 100 Trying
<- IP/2.0 407 Proxy Authentication Required
ACK ->

INVITE->
Proxy-Authorization: Digest username=»11″,realm=»10.10.10.10.»,nonce=»c52788bc………..
<- SIP/2.0 100 Trying

 

Что же за беда с этими контекстами? Пользователь проверку то прошел. Тут вопрос в «месте проведения» этой самой проверки. Поскольку проверка на айпи прошла успешно в sip-профиле! , то к пользователю применились все параметры sip-профиля! , а не домена, к которому подключается клиент.

Когда пользователь не прошел проверку по ip-адресу, FS запросил digest-аутентификацию, которая перекинула его в его домен и в его нужный контекст.

 

Выводы

Будьте аккуратны в использовании аутентификации по acl, особенно если у вас мультидоменная система. Если все же нуждаетесь в apply-register-acl и apply-inbound-acl, то лучше их ставить как можно ближе к клиенту (например, в настройке домена).

И еще… acl в FS не призван защищать, пользуйтесь для защиты фаерволом.

CentOS: Полезные заметки

http://pro-voip.com.ua centos

Man

# yum install man.i686 man-pages.noarch
man.i686: A set of documentation tools: man, apropos and whatis
man-pages.noarch: Man (manual) pages from the Linux Documentation Project

Пользователи

Добавление пользователя:
# useradd <login name>
Пользователь создается с параметрами, описанными в /etc/default/useradd. Для изменения дефолтных параметров можно использовать опции команды useradd. Есть еще команда adduser, но это всего-навсего символическая ссылка на useradd.

Установка пароля новосозданного пользователя:
# passwd <login name>

По умолчанию пользователь не может выполнять команды с правами root’a, используя команду sudo -s:

[user1@srv]$ sudo -s
[sudo] password for user1:
user1 is not in the sudoers file.  This incident will be reported.

Править /etc/sudoers:
# visudo

В файле /etc/sudoers видим, что пользователи, которые входят в группу wheel, могут выполнять все команды:

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

Как вариант, можно добавить пользователя в группу wheel.

Добавить пользователя в дополнительную группу:
# usermod -a -G <group name> <login name>

-a — добавить пользователя в дополнительную группу (не меняя initial-группы пользователя), используется только совместно с опцией -G
-G — указывает, в какую именно группу (или группы) добавить пользователя. Группа должна быть создана ранее.

Добавить пользователя в группу wheel:
# usermod -a -G wheel user1

# cat /etc/group
...
wheel:x:10:root,user1

Проверка:

[user1@srv]$ sudo -s
[sudo] password for user1:
[root@srv]#

Добавить пользователя еще в несколько групп:
# usermod -a -G support,sales,management user1

 

Система

Посмотреть версию установленной OS Centos:

# cat /etc/centos-release
CentOS release 6.7 (Final)

lrwxrwxrwx. 1 root root 14 Nov 17 12:52 /etc/redhat-release -> centos-release
lrwxrwxrwx. 1 root root 14 Nov 17 12:52 /etc/system-release -> centos-release

/etc/redhat-release и /etc/system-release — это ссылки на centos-release

Посмотреть список возможных обновлений:
# yum list updates

Upgrage системы (например, с 6.0 до 6.7)
# yum update

 

Ядро и модули

Какие модули загружены:
# lsmod

Информация о модуле
# modinfo <module name>

Загрузить модуль на лету:
# modprobe <module name>

Выгрузить модуль на лету:
# modprobe -r <module name>

 

Автозагрузка модуля при старте системы

Для этого создаем скрипт и размещаем его в /etc/sysconfig/modules
Обязательные условия:
— имя скрипта должно иметь вид <some_words>.modules, например 8021q.modules
— скрипт, само собой, делаем исполняемым — chmod +x 8021q.modules
— сам скрипт запускает все тот же modprobe <имя модуля>

#!/bin/sh
/sbin/modprobe 8021q

не забываем про первую строку #!/bin/sh и путь к modprobe лучше указать полностью

 

Добавление своего скрипта в автозагрузку

Скрипт должен быть исполняемым

# ls -al /etc/iptables/iptables-start.sh
-rwxr—r—. 1 root wheel 83 Nov 28  2013 /etc/iptables/iptables-start.sh

Добавляем его в /etc/rc.local

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

/etc/iptables/iptables-start.sh

Скрипт выполняется после загрузки системы.

 

Сеть

DNS Настройка резолвера:

/etc/resolv.conf

seacrh provoip.in.ua
nameserver 8.8.8.8
nameserver 8.8.4.4

Настройка сетевых параметров:

/etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=srv.provoip.in.ua
GATEWAY=192.168.100.1

NETWORKING=yes (yes — сеть будет настраиваться автоматически из скриптов /etc/sysconfig/network-scripts, no — вручную)

 

Настройка сетевых интерфейсов:

/etc/sysconfig/network-scripts/ifcfg-*

В /etc/sysconfig/network-scripts есть файлы вида ifcfg-*, например ifcfg-eth0, ifcfg-eth1, ifcfg-lo — в них описываем необходимые настройки сетевых карт. Эти файлы передаются в качетсве аргумента в скрипты ifup, ifdown и т.п. Каждая сетевая карта имеет свой файл ifcfg-. Например, есть в системе сетевая карта, которая определяется как eth0. Для ее автонастройки после перезагрузки системы необходим соответствующий файл ifcfg-eth0.

 

Конфигурация сетевой карты (фиксированный ip-адрес):

DEVICE=eth0
BOOTPROTO=none
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
ONBOOT=yes — включать интерфейс при загрузке или нет
NAME=eth0

Конфигурация сетевой карты (получение ip-адреса по dhcp):

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

BOOTPROTO=<protocol>, значения — none, dhcp, bootp — какой протокол использовать для получения настроек
BROADCAST=<address> — необязательно указывать, высчитывается автоматически
NETWORK=<address> — необязательно указывать, высчитывается автоматически
DEVICE=<name> — имя физического устройства

HWADDR=<MAC-address> — используется в серверах с несколькими сетевыми картами для того, чтобы убедиться интерфейсы получат свои правильные device-name. Т.е., например, настройки, прописанные для девайса eth0 всегда будут применяться к карте с вот таким вот HWADDR (Другими словами, сетевая карта с этим вот HWADDR всегда будет иметь имя eth0 и на при каких обстоятельствах не поменяет его на eth1). Директива не используется совместно с MACADDR.
MACADDR=<MAC-address> — можно перезаписать MAC-адрес физической сетевой карты (в форме AA:BB:CC:DD:EE:FF). Директива не используется совместно с HWADDR.

ETHTOOL_OPTS=<options> — указать опции утилиты ethtool, например, прибить жестко скорость и т.д
ETHTOOL_OPTS=»autoneg off speed 100 duplex full»

DNS1=<address>
DNS2=<address>
PEER_DNS=yes — изменять /etc/resolv.conf. При ONBOOT=dhcp PEER_DNS=yes — это дефолтное значение

SRCADDR=<address> — ip-адрес, котрый навешивается на исходящие пакеты (полезно если на интерфейсе прибито alias’ом несколько адресов)
USERCTL=<yes,no> — Не-root пользователи могут (или нет) управлять сетевой картой

 

Алиас на интерфейс:

Алиас — несколько ip-адресов на одном физическом интерфейсе

Файл для алиаса — ifcfg-<if-name>:<alias-value>

DEVICE=<ifname>:<alias-value>

!Алиас-интерфейсы не поддерживают DHCP

Пример

Физический интерфейс — файл ifcfg-eth0 (DEVICE=eth0)
Алиас на физический интерфейс — файл ifcfg-eth0:0 (DEVICE=eth0:0)
Еще один алиас на физический интерфейс — файл ifcfg-eth0:1 (DEVICE=eth0:2)
и т.д.

 

Файл-клон интерфейса:

Файл-клон используется для добавления каких-либо опций для одного и того же физического интерфейса.
Файл ifcfg-<if-name>-<clone-name>

Пример

Физический интерфейс — файл ifcfg-eth0 (DEVICE=eth0)
Клон физического интерфейса — файл ifcfg-eth0-custom (DEVICE=eth0)
Параметры, указанные в ifcfg-eth0 и ifcfg-eth0-custom комбинируются

 

802.1q в Centos

Должен быть загружен модуль 8021q
Проверяем:
# lsmod | grep 8021q

Если не загружен, загружаем:
# modprobe 8021q

Добавим автозагрузку модуля при старте системы (как это делается, смотрим выше)

! Для каждого влана создаем свой файл ifcfg-ethX.<vlan number> в /etc/sysconfig/network-scripts/. 

VLAN=yes
DEVICE=ethX.<vlan number>
IPADDR=192.168.100.2
NETMASK=255.255.255.0
ONBOOT=yes

Не лишним будет создать ifcfg- файл физического устройства перед этим.

Пример

Нужно создать vlan 222 на интерфейсе eth0. Создаем 2 файлав /etc/sysconfig/network-scripts/:

ifcfg-eth0

DEVICE=eth0
ONBOOT=yes

ifcfg-eth0.222

VLAN=yes
DEVICE=eth0.222
IPADDR=192.168.100.2
NETMASK=255.255.255.0
ONBOOT=yes