
- •Раздел 1.
- •1.1 Анализ программных решений для создания Интернет-шлюзов
- •1.3 Анализ виртуальных локальных сетей vlan
- •1.4 Vlan на базе меток - стандарт ieee 802.1q
- •1.5 Выводы по результатам анализа существующих решений
- •1.7 Анализ сети с привязкой к плану-схеме здания
- •Раздел 2.
- •2.1 Настройка vlan на коммутаторе Dlink des-1210-52
- •2.2 Программирование коммутатора
- •2.3 Установка ос Russian Fedora Linux
- •2.5 Конфигурирование сети
- •2.6 Создание vlan
- •2.7 Установка dhcp и dns серверов
- •2.8 Разработка специального программного обеспечения
- •2.9 Установка биллинговой системы TraffPro
- •2.10 Конфигурация TraffPro
- •2.11 Результаты работы после построения сети и ввода ее в эксплуатацию
- •Раздел 4.
- •Раздел 5.
- •5.1 Оценка стоимости оборудования для построения сети
- •3.2 Сравнение стоимости оборудования сети со стоимостью прототипа
2.8 Разработка специального программного обеспечения
Два vlan субинтерфейса создать не сложно, а вот если нужно создать 42, то на помощь приходит командная оболочка BASH, позволяющая автоматизировать рутинные операции. Напишем небольшую интерактивную программу, которая будет создавать конфигурационные скрипты для выбранного диапазона субинтерфейсов.
Первым делом, нам необходимы параметры, которые будут присваиваться переменным скрипта.
Весь скрипт с описанием:
#!/bin/bash
cd /etc/sysconfig/network-scripts
lsmod | grep 8021q > /dev/nul l
i f [ $? -eq 1 ] 8021q
echo “Сколько VLAN интерфейсов необходимо создать”
read answer =$(($answer+1))i in $(seq 2 $num) -a | grep vlan$i > /dev/null [ $? -eq 1 ] add eth1 $i > /dev/null vlan$i 192.168.$i.1 netmask 255.255.255.0 up ifcfg-vlan$i "Интерфейс vlan$i был создан как новый!" -e "\rVLAN=yes
\rVLAN_NAME_TYPE=VLAN_PLUS_VID_NO_PAD
\rPHYSDEV=eth1
\rDEVICE=vlan$i
\rNAME=”vlan$i”
\rBOOTPROTO=none
\rNETMASK=255.255.255.0
\rTYPE=Ethernet
\rIPADDR=192.168.$i.1
\rONBOOT=yes
\rIPV6INIT=no
\rUSERCTL=no
\rPREFIX=24" > ifcfg-vlan$i (14)
else "Интерфейс VLAN vlan$i был создан ранее!"
fi
done
Выполним переход в директорию, где будут создаваться конфигурационные файлы.
Проверка загруженности модуля 8021q, если модуль не загружен, то VLAN интерфейсы не будут созданы. Если модуль не загружен, то команда lsmod | grep 8021q > /dev/null передаст значение 1 если загружен 0.
Рекурсионная обработка предыдущей команды. При полученном значении 1 выполнит подгрузку модуля, при 0 пропустит выполнение скрипта.
Информационное сообщение о количестве создаваемых интерфейсах будет напечатано на экране.
Команда read позволяет передать значение переменной answer не посредственно с клавиатуры (интерактивный режим).
Приращение на 1 к введённому значению. Так как VLAN отсчитываются с 2, соответственно при создании 10 VLAN, последний VLAN будет иметь имя vlan11.
Цикл, позволяющий по очереди перебирать диапазон полученных значений.
С помощью цикла скрипт проверит на существование VLAN интерфейсов начиная с vlan2 до vlanN. 1 - не существует, 0 - существует.
- Рекурсионная обработка предыдущей команды, при 1 - создаст VLAN интерфейс.
, 11, - Команды создания субинтерфейса и присвоения этому интерфейсу IP адреса.
- Создание пустого конфигурационного файла.
- Вывод информационного сообщения о создании интерфейса.
- Помещение конфигурации в пустой файл.
- Рекурсивный переход, при условии, что интерфейс существовал перед созданием(защита от дублирования субинтерфейса).
- Информационное сообщение, о том что интерфейс с указанным номером не нуждается в создании, так как он был создан ранее.
В результате выполнения скрипта создадутся vlan интерфейсы в количестве указанных в параметре $answer, создадутся конфигурационные файлы для этих интерфейсов.
Для добавления модуля 8021q в автозагрузку системы создадим управляющий скрипт следующего содержания:
lsmod | grep 8021q > /dev/null
if [ $? -eq 1 ]8021q0
И поместим эту запись в конец тектового файла /etc/rc.d/rc.local отвечающего за автозагрузку. Данный скрипт проверит таблицу загруженных модулей, сопоставит с входящим условием фильтрации по имени, если совпадение будет найдено, программа передаст рекурсионной обработке IF значение 0, если нет, то значение 1. При значении 1 произойдёт подгрузка модуля в ядро, при значении 0 выход.