Новичкам NetBSD 4.0.1. Нужен vlan (+сборка ядра системы)

tzar аватар

Для сервера мне дали внешний белый ip адрес, подключили к коммутатору, но доступ наружу дали только по vlan. Информации нашёл уйму всякой разной, но заставить работать vlan сразу ни по одной найденной рекомендации не смог. Поэтому в этой статье опишу рабочий вариант настройки vlan'а попутно описав момент сборки ядра.

Как выяснилось, по умолчанию, ядро системы поддерживает 0 интерфейсов vlan и чтобы добавить новые нужно сначала пересобрать ядро добавив поддержку необходимого количества vlan'ов

Сборка ядра.

Для сборки ядра нам нужны исходники самого ядра, и если не установлена программа config (а на моей девственной системе она не установлена), то и её исходники.

1. Качаем файл http://ftp.ru.netbsd.org/pub/NetBSD/NetBSD-4.0.1/source/sets/syssrc.tgz программой wget или через ftp
Файл содержит исходники ядра, программы config и некоторые дополнительные файла. Поклонникам последних ядер качать http://ftp.chg.ru/pub/NetBSD/NetBSD-current/tar_files/src/sys.tar.gz, но желательно, в данном случае,чтобы программа config была уже установлена, но если честно, с новым ядром не пробовал, поэтому далее буду считать что исходники ядра, родные для системы.

2. Распакуем архив в /
#tar zvxf syssrc.tgz -C /

3. Соберём и установим config
#cd /usr/src/usr.bin/config
#make
#make install

4. Сделаем копию настроечного файла ядра GENERIC которуюи будем править
#cd /usr/src/sys/arch/ARCHITECTURE/conf
где ARCHITECTURE - архитектура процессора, у меня Intel Pentium II, поэтому под ARCHITECTURE понимается i386
#cp GENERIC vlan
Отредактировать копию vlan следующим образом:
а) Найти строку типа
pseudo-device vlan #....
б) Прописать количество необходимых в системе vlan'ов, например, нужно их 2:
pseudo-device vlan 2 #....
Если нужно сделать ещё изменения - делаем.

Далее конфигурируем наше будущее ядро:
#config vlan
Процесс длятся на моём Р2-360 около часа, следим за сообщениями, процесс должен окончиться без ошибок

Дальше собираем ядро:
#cd ../compile/vlan
#make depend
#make
На моей машине 3-3.5 часа

Если всё прошло без ошибок, устанавливаем новое ядро, одним из двух способов:
Способ 1:
#make install
Способ 2:
#mv /netbsd /netbsd.0
#cp ./netbsd /netbsd
Я предпочитаю второй, при котором я ТОЧНО уверен, что старое ядро системы сохранено и я всегда смогу с него загрузиться и вернуть его обратно, если новое ядро не заработает.

Перезагружаемся. После перезагрузки, после входа сиистемы будет сообщение типа:
NetBSD 4.0.1 (vlan) #0: - радуемся своему ядру)))

После установки нового ядра, система не загружается

1. Загружаемся с сохранённого ядра netbsd.0 в режиме single-user. Для этого на начальном этапе загрузки (когда идёт отсчёт) жмём и выполняем:
boot netbsd.0 -s
2. После загрузки возвращаем ядро:
#fsck /
#mount /
#cp netbsd.0 netbsd
#exit

Конфигурируем vlan

В мануалах пишут, что выполнив конфигурироваие ядра (возможно для FreeBSD это правда, но подобного описания для нетки я не нашёл) команда ifconfig -a сразу покажет созданные vlan'ы - это не так!!! Их нужно создать вручную или прописать в скриптах инициализации. Условимся, что на коммутаторе мне сконфигурировали vlan 103, а сетевой интерфейс у меня ex0 и он настрое и работает Вариант "вручную"
1. Создаём интерфейс для vlan:
#ifconfig vlan0 create
2. Конфигурируем его как vlan:
#ifconfig vlan0 vlan 103 vlanif ex0
где vlan0 - обозначение интерфейса vlan, 103 vlan-порт на коммутаторе, ex0 - сетевой интерфейс на котором vlan будет работать, далее:
#ifconfig vlan0 kkk.xxx.yyy.zzz netmask 255.255.255.252
где kkk.xxx.yyy.zzz - ip-адрес vlan'а на интерфейсе карты (его мы будем наблюдать снаружи коммутатора для машины), 255.255.255.252 - заданная маска компьютера
Для проверки бросам пинги на kkk.xxx.yyy.zzz, ip-адрес порта на коммутаторе, выступающего в качестве шлюза и внешний ip

Вариант для автоматической инициализации vlan'а при загрузке
Думаю, не лишним будет сказать, что, прежде чем реализовывать этот вариант, нужно проверить работоспособность предыдущим вариантом,вручную)))
Итак, настраиваем vlan аналогично обычному интерфейсу файлом /etc/ifconfig.vlan0, добавив вначале несколько новых строчек,для создания и конфигурирования интерфейса. Листинг файла:
create
vlan 103 vlanif ex0
inet kkk.xxx.yyy.zzz netmask 255.255.255.252

Можно перезагружаться. У меня после этих манипуляций всё заработало.

Источники информации и дополнительные материалы:
1. ядро:
http://www.opennet.ru/base/faq/netbsd_kernel.txt.html

2. виланы:
http://www.opennet.ru/base/net/vlan_freebsd.txt.html
http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=6&theme=vlan%20freebsd

3. маны:
http://gehenna.as.wakwak.ne.jp/man/ifconfig.8.html
http://gehenna.as.wakwak.ne.jp/man/vlan.4.html