null

Автоматическое конфигурирование vlan интерфейсов в Arch Linux

С удивлением обнаружил, что в Arch Linux отсутствует штатное средство для автоматического конфигурирования vlan интерфейсов во время запуска системы.
Для поддержки Vlan необходимо:
- загрузить модуль 8021q (# modprobe 8021q)
- установить пакет vconfig (pacman -S vconfig)
- создать необходимые vlan интерфейсы
# vconfig add ethX vlan
# vconfig add ethX vlan
Где ethX физический интерфейс, vlan - номер vlan интерфейса
- Настроить необходимые параметры созданного интерфейса
# ifconfig ethX.vlan 192.168.0.1 netmask 255.255.248.0

Для автоматического конфигурирования vlan интерфейсов можно воспользоваться решением:
- в /etc/rc.conf в раздел MODULES добавить модуль 8021q
- создать резервную копию стартового скрипта /etc/rc.d/network
- перейти в директорию /etc/rc.d и применить патч #patch -p0 < network.patch
- отредактировать /etc/rc.conf, например:
eth0="eth0 up"
eth0_40="eth1.20 192.168.40.2 netmask 255.255.255.0"
eth0_50="eth1.80 192.168.50.2 netmask 255.255.255.0"
VLAN_INTERFACES=(eth0_40 eth0_50)
INTERFACES=(eth0)

 

--- network.orig	2009-07-20 02:56:37.000000000 +0000
+++ network	2010-04-14 13:00:30.000000000 +0000
@@ -12,6 +12,31 @@
 # dhcpcd settings
 [ -f /etc/conf.d/dhcpcd ] && . /etc/conf.d/dhcpcd
 
+vlan_up()
+{
+       for ifline in ${VLAN_INTERFACES[@]}; do
+               if [ "$ifline" = "${ifline#!}" ]; then
+                       eval ifcfg="\$${ifline}"
+                       vlan=${ifcfg#*.}
+                       vlan=${vlan%% *}
+                       /usr/sbin/vconfig add ${ifcfg%%.*} $vlan >/dev/null || error=1
+                       ifup $ifline || error=1
+               fi
+       done
+			 return $?
+}
+
+vlan_down()
+{
+       for ifline in ${VLAN_INTERFACES[@]}; do
+               if [ "$ifline" = "${ifline#!}" ]; then
+                       eval ifcfg="\$${ifline}"
+			/usr/sbin/vconfig rem ${ifcfg%% *} >/dev/null || error=1
+               fi
+       done
+			 return $?
+}
+
 ifup()
 {
 	if [ "$1" = "" ]; then
@@ -33,6 +58,7 @@
 	return $?
 }
 
+
 wi_up()
 {
 	eval iwcfg="\$wlan_${1}"
@@ -182,6 +208,9 @@
 		done
 		# bring up bond interfaces
 		bond_up
+		# bring up vlan interfaces
+		vlan_up
+
 		# bring up routes
 		for rtline in "${ROUTES[@]}"; do
 		if [ "$rtline" = "${rtline#!}" ]; then
@@ -221,6 +250,14 @@
 		else
 			stat_fail
 		fi
+   # bring down vlan interfaces
+	  vlan_down
+		if [ $error -eq 0 ]; then
+		   stat_done
+		else
+		   stat_fail
+		fi
+
 		;;
 	restart)
 		$0 stop

 

Работаю в компании Tune-IT. Круг профессиональных интересов:
* Администрирование Solaris/FreeBSD/Linux
* CISCO
* Удаленная диагностика неисправностей в системах SUN
* Предотвращение сетевых атак
* Обеспечение безопасности UNIX-систем
* Обеспечение безопасности беспроводных сетей

Ничего не найдено. n is 0