Версия 1.0.0, 6 януари 2009
Веселин Колев, Софийски Университет "Св. Климент Охридски"
Адрес за кореспонденция: vesso AT vesselin.org
Първоизточник: http://www.vesselin.org
Лиценз на документа: CC Attribution-ShareAlike
Съдържание:
Съгласно официалната документация на Red Hat Enterprise Linux 5 и дериватите му (CentOS 5, ScintificLinux 5), 802.1q (VLAN) базиран интерфейс следва да се именова с т.нар. "DEV_PLUS_VID" конвенция на инструмента vconfig
, която може да се илюстрира с примера:
eth0.100
в който eth0 е името на физическия интерфейс, членуващ в съответния VLAN, а 100 е номера на виртуалния LAN (VLAN ID идентификатор). Конкретно, тази конвенция за именоване е посочена като единствено възможна в документацията към пакета initscripts. Във файла
/usr/share/doc/initscripts-<version>/sysconfig.txt
е записано следното:
Ethernet 802.1q VLAN items: DEVICE=eth0.42 Initscripts use DEV_PLUS_VID_NO_PAD naming mode for VLAN devices. Example: eth0.42 for vlan 42 on device eth0. Valid VLAN ID range is 0-4095. Most ethernet switches reserve VLAN ID 1 to be used as management VLAN; starting from VLAN ID 2 is recommended.
Ако се разгледа обаче по-внимателно съдържанието на самите инициращи скриптове, става ясно, че няма никакви проблеми да се използва и конвенция за наименоване на 802.1q интерфейси, а именно VLAN_PLUS_VID или VLAN_PLUS_VID_NO_PAD. По-долу в статията е описано как да стане това без да се излиза от добрата практика на администриране на системи базирани на Red Hat Enterprise Linux 5 и дериватите му.
Конвенцията VLAN_PLUS_VID изисква 802.1q интерфейсите да се наименоват по шаблона:
vlan0005
т.е. с използване на четирицифрен идентификатор на виртуалния LAN, реализиран чрез интерфейса. От друга страна конвенцията VLAN_PLUS_VID_NO_PAD изисква 802.1q интерфейсите да се наименоват по шаблона:
vlan5
и не е нужно числовия идентификатор на VLAN да се задава задължително като четирицифрено число и да се използват водещи нули, когато е необходимо.
Не е допустимо използването на различни конвенции по именоване на 802.1q интерфейсите в една система. Трябва да бъде избрана задължително едната от конвенциите, да се зададе в конфигурациите и да се спазва в хода на изграждането на VLAN интерфейси. Указването й става във файла
/etc/sysconfig/network
като преди това задължително в него се указва VLAN=yes
:
при използване на конвенцията VLAN_PLUS_VID:
VLAN_NAME_TYPE=VLAN_PLUS_VID
при използване на конвенцията VLAN_PLUS_VID_NO_PAD:
VLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
а стойността й се чете автоматично от набора скриптове за управление на мрежовите интерфейси при следните действия:
при стартиране/рестартиране на услугата "network":
# service network {start|restart}
при изграждане на единичен интерфейс при стартирана услуга "network", например:
# ifup vlan0500
Шаблонът, по който се изгражда конфигурационен файл за 802.1q интефейс, има следната примерна минимална структура:
DEVICE=vlan0100 PHYSDEV=eth0 IPADDR=10.0.0.2 NETMASK=255.255.255.0
В случая ще се изгради VLAN интерфейс с име vlan0100, който ще бъде реализиран на базата на физическия интерфейс eth0, а за участие във виртуалния LAN с ID 100 ще се използва IP адрес 10.0.0.2 с мрежова маска 255.255.255.0 (или /24). Наименоването на интерфейса следва да се съобрази с указаната във файла /etc/sysconfig/network
конвенция. Ако е избрана конвенцията VLAN_PLUS_VID, всеки VLAN ID се представя като четирицифрено число, а когато е необходимо се прибавят водещи нули. Ако избраната конвенция е VLAN_PLUS_VID_NO_PAD, то VLAN ID не е задължително да бъде четирицифрено число (не е нужно да се използват водещи нули при необходимост). При конвенция VLAN_PLUS_VID_NO_PAD в горния пример би следвало DEVICE=vlan100
, вместо DEVICE=vlan0100
и обратно.
След като конфигурационния файл на VLAN интерфейса бъде изграден, той трябва да се запише в директорията
/etc/sysconfig/network-scripts
с подходящо име. Каквото и име да бъде използвано, то трябва задължително да започва с ifcfg-
, например ifcfg-vlan0100
или ifcfg-vlan0100
. Добре е в името на файла да бъде отразена конвенцията и VLAN ID идентификатора.
Един 802.1q интерфейс може да бъде активиран ръчно и автоматично. При ръчната активация се използва скрипта ifup
, а при автоматичната се стартира/рестартира услугата "network" (обикновено при зареждане на системата се извършва втория тип активация). Тук ще бъдат показани и двата начина:
чрез скрипта ifup
:
# ifup vlan0100
където името на интерфейса трябва да съвпада със стойността на променливата DEVICE
в интерфейсния конфигурационен файл;
чрез стартиране/рестартиране на услугата "network":
# service network {start|restart}
По втория начин се активират всички интерфейси, указани като активни. Този начин не е подходящ за активиране на новоизграден интерфейс за системи в продукция! Той се използва при активиране на интерфейсите в условия на зареждане на системата и работи само, ако физическия интерфейс (напр. eth0), който ще участва в съответния VLAN, има зададено ONBOOT=yes
в конфигурационния си файл.
Дезактивирането на VLAN интерфейс също може да стане по два начина:
чрез скрипта ifdown
:
# ifdown vlan0100
където името на интерфейса трябва да съвпада със стойността на променливата DEVICE
в интерфейсния конфигурационен файл;
чрез спиране на услугата "network":
# service network stop
По втория начин се дезактивират всички интерфейси и мрежови функции, активни до момента. Поради това този начин не е подходящ за дезактивиране на единичен интерфейс за системи в продукция!
Ако един VLAN интерфейс не бива да се активира автоматично при зареждане на системата, в конфигурационния му файл трябва да се зададе:
ONBOOT=no
Съществуват няколко начина за преглед на изградените VLAN интерфейси в системата. Тук вниманието ще бъде фокусирано върху инструмента ip
от пакета iproute2 и директния преглед на записите за интерфейсите в /proc
. Внимание! Използването на ifconfig
не се препоръчва и не е добра практика за диагностика и управление на интерфейси. Този инструмент е оставен в системата заради обратна съвместимост и следва да бъде заменен напълно като функционалност от ip
.
След като един VLAN интерфейс бъде изграден и активиран, неговата IP конфигурация ще се вижда от инструмента ip
по начин подобен на този:
# ip addr show dev vlan0100
3: vlan0100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue link/ether 00:50:04:35:64:fd brd ff:ff:ff:ff:ff:ff inet 10.0.0.2/24 brd 10.0.0.255 scope global vlan0100
Ясно се вижда физическия интерфейс, чрез който системата участва в съответния VLAN. Ако се налага преглед на всички интерфейси (без значение от характера им), може да се използва:
# ip addr
За да се провери "link" състоянието на интерфейса, може да се използва команден ред от типа:
# ip link show dev vlan0100
а подробна статистика за преминалия през интерфейса трафик и др. показатели, може да се получи така:
# ip -s link show dev vlan0100
Прегледът на състоянието на даден VLAN интерфейс на база информацията в /proc
, става чрез директен прочит на съответния интерфейсен файл, например:
# cat /proc/net/vlan/vlan0100
vlan0100 VID: 100 REORDER_HDR: 1 dev->priv_flags: 1 total frames received 0 total bytes received 0 Broadcast/Multicast Rcvd 0 total frames transmitted 0 total bytes transmitted 0 total headroom inc 0 total encap on xmit 0 Device: eth0 INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0 EGRESSS priority Mappings:
И в двата случая извикването на информацията за интерфейса, става на база на името му, указано в интерфейсния конфигурационен файл, като стойност на променливата DEVICE
.
Този документ е с OpenPGP подписано съдържание
[информация] [електронен подпис][TimeStamp]