Inferno OS Wiki
Advertisement

Сетевая база данных[]

Plan 9 использует единую базу данный для хранения всей информации о сети в системе. База данных загружает конфигурацию для машин, специально идентифицируемых при локальной установке: по умолчанию, — это конфигурация машин в конкретных подсетях, информация разрешения доменных имен и распределениях между сервисами имен TCP и номерами портов. Она состоит из набора текстовых файлов, которые составляют структуру записей.

По умолчанию, ядром базы данных является текстовый файл /lib/ndb/local. Наиболее значимой в файле является запись database=, определяющая список других включаемых файлов. Например,

database=
	file=/lib/ndb/local
	file=/lib/ndb/local-cs
	file=/lib/ndb/common

Это и есть содержимое файла, сама база данных состоит из этих файлов.

Файл /lib/ndb/common содержит стандартные определения порта и тому подобные вещи; другие же файлы содержат фактическую конфигурацию системы.

Структура записей[]

Лексически, записью является строка без отступа, сопровождающаяся набором строк с отступами. Таким образом, строка без отступа, пустая строка, или линия комментариев (начинается с #) — заканчивают текущую запись.

Семантически же, записью является набор кортежей key=значение. Кортежи одной строки связываются плотнее, чем кортежи других строк, но обычно это не имеет никакого значения.

Вот пример записи:

ip=10.247.62.235 ip=10.247.60.200 sys=lusitania ether=0060088bc416
	proto=il
	dom=lusitania.domain.dom

эта запись описывает систему под названием «lusitania» со специальным ethernet адресом, двумя ip адресами и пригодным доменным именем. Кортежproto=il указывает на то, что система работает с протоколом IL, транспортным Internet протоколом Plan 9. По умолчанию, система работает только с TCP.

Другими полезными атрибутами являются:

auth         сервер аутентификации Plan 9 по умолчанию;
cpu          CPU сервер Plan 9 по умолчанию;
dns          DNS сервер по умолчанию (может быть больше чем один);
dnsdomain    доменный суффикс DNS по умолчанию (может быть больше чем один);
fs           файловый сервер Plan 9 по умолчанию;
ipgw         IP шлюз;
ipmask       IP сетевая маска;
ipsubmask    IP подсетевая маска;
ntp          NTP сервер по умолчанию;
nntp         NNTP сервер по умолчанию;
smtp         SMTP сервер по умолчанию.

Прохождение иерархии IP[]

Большая часть информации базы данных находится в записях других систем. Взамен, функция запроса базы данных ndbipinfo (см. ndb(2)) и простой интерфейс командной строки ndb/ipquery (см. ndb(8)) знакомы с иерархией IP сетей.

Когда существует какой-нибудь атрибут, скажем fs, который необходим системе, то программа запросов запускает поиск этой системной сетевой записи в базе данных. Если она нашла запись fs=, тогда ndbipinfo возвращает ее значение. В противном же случае, ndbipinfo отмечает IP адрес системы и проходит вниз по иерархии IP через базу данных, начиная с IP адреса сети по умолчанию.

В особенности, начиная с адреса IP маски по умолчанию, и заканчивая IP адресом сети по умолчанию. Полагается, что наш адрес — 10.247.62.235 является наивысшим. IP адрес шлюза по умолчанию — 255.0.0.0, значит адрес IP сети по умолчанию — 10.0.0.0.

Ndbipinfo выполняет поиск записи ip=10.0.0.0 и ipmask=255.0.0.0. Полагается, что мы должны найти следующие строки:

ipnet=ten-net ip=10.0.0.0 ipmask=255.0.0.0
	ipsubmask=255.255.255.0
	smtp=mailserver.domain.dom
	ntp=ntpserver.domain.dom
	fs=myfs

Эти строки сообщают, что сеть сформирована из малых подсетей с маской 255.255.255.0, так что мы просматриваем запись для IP сети 10.247.62.0 с подходящей маской. Полагается, что мы должны найти также:

ipnet=my-net ip=10.247.62.0 ipmask=255.255.255.0
	fs=my-other-fs
	ipgw=10.247.62.1

Здесь отсутствует запись ipsubmask, мы останавливаем поиск, возвращая my-other-fs, так как запись fs= является самой малой найденной нами подсетью. Значение my-net важнее значения ten-net в записи, подобно тому как значение fs= в записи lusitania будет важнее их обоих. Если мы не найдем значение fs=в my-net, тогда нам придется использовать значение ten-net.

Программа ndb/ipquery (см. ndb(8)) хороша для тестирования того, правильно ли вы сконфигурировали сеть и иерархия IP вышла как этого следовало ожидать.

По умолчанию, IP подмаски определяются первым числом в адресе:

0-127       255.0.0.0
128-191     255.255.0.0
192-223     255.255.255.0
224-239     зарезервированы для групповых адресов
240-255     зарезервированы для использования в будущем

(Это Internet стандарт, не только в системе Plan 9.)

Конфигурация[]

Прочитав предыдущие секции документа, вы можете определить формат вашей сети. Пример конфигурации находится в файле /lib/ndb/local.complicated. Минимальная конфигурация представлена ниже:

database=
	file=/lib/ndb/local
	file=/lib/ndb/common

ipnet=mynetwork ip=192.168.0.0 ipmask=255.255.255.0
	ipgw=192.168.0.1
	dns=1.2.3.4
	auth=mauretania
	proto=il

ip=192.168.0.2 sys=mauretania
ip=192.168.0.3 sys=aquitania

В этом примере мы установим машину под названием «mauretania» первой машиной Plan 9 и сделаем ее сервером аутентификации по умолчанию для подсети 192.168.0.x. Наша машина получит IP адрес 192.168.0.2.

Если вы не собираетесь устанавливать соединение с Internet, тогда вы можете опустить пункты ipgw и dns.

Ipconfig[]

Выше мы определили две системы, одна называется — «mauretania», другая — «aquitania». Как Plan 9 определит, что наша машина — «mauretania»? Ответ — ip/ipconfig.

При загрузке машины Plan 9 запускается конфигурационный сценарий /rc/bin/termrc или /rc/bin/cpurc, в зависимости от того, терминал это или CPU сервер.

В /rc/bin/termrc вы должны увидеть строку:

ip/ipconfig >/dev/null >[2=1]

Эта строка заставляет машину просмотреть DHCP сервер, чтобы обеспечить ее информацией о конфигурации. Вы можете установить Plan 9 CPU/аут сервер, чтобы запускать DHCP сервер. После того как вы сделаете это, сервер просмотрит свою сетевую базу данных и установит конфигурацию по умолчанию.

Тем не менее, там все еще не достаточно информации, чтобы присвоить специфической машине фиксированный IP адрес. Одним из путей как сделать это является связь специфической конфигурации со специфическим MAC-адресом сетевой адаптера (например, 11-А0-17-3D-BC-01). Этот адрес назначается производителем оборудования и является уникальным. Для всех существующих технологий локальных сетей МАС-адрес имеет формат 6 байт: старшие 3 байта — идентификатор фирмы производителя, младшие 3 байта назначаются уникальным образом самим производителем. Вы можете увидеть MAC адрес вашей карты, дав следующую команду:

cat /net/ether0/addr

(Если же каталог /net/ether0 не существует, тогда Plan 9 не сможет найти ethernet карту в системе.) Теперь вы можете добавить MAC-адрес как атрибут в строку конфигурации ndb, примерно так:

ip=192.168.0.2 sys=mauretania ether=abc12345def

где «abc12345def» — это и есть MAC-адрес. Конечно, если сервер DHCP отсутствует, то этот способ не сработает. При установке первой машины Plan 9 вы можете модифицировать строку ip/ipconfig, чтобы определить специфический мост, ip адрес и ip-маску.

ip/ipconfig -g 192.168.0.1 ether /net/ether0 192.168.0.2 255.255.255.0

Итак, сейчас вы владеете достаточным объемом информации, чтобы следовать инструкциям документа Настройка автономного CPU сервера, который поможет вам настроить систему таким образом, чтобы она могла работать как CPU сервер, аутентификационный сервер, DHCP сервер, и легковесный файловый сервер kfs. О файловом сервере читайте соответствующий документ: Установка файлового сервера Plan 9.

Диагностика и устранение проблем[]

Если ipconfig выводит сообщение ошибки такого вида

ip/ipconfig: binding device: '/net/ether0' cs: file does not exist

это означает, что ядро не может обнаружить вашу сетевую карту. Для платформы PC, убедитесь, что ваш plan9.ini(8) определяет соответствующий сетевой драйвер. Если и это не помогает, то есть вероятность, что сетевой драйвер просто не был скомпилирован в используемом вами ядре. За информацией по сборке нового ядра читайте документ Компиляция ядер.

Настройка Plan 9 машины как DNS сервера[]

Данные DNS также содержатся в файле /lib/ndb. Отредактируйте /lib/ndb/local с помощью ed, sam или acme, добавив следующие строки:

dom=вашедоменноеимя.net soa=
	refresh=3600 ttl=3600
	ns=ns.вашедоменноеимя.net
	ns=ns.где-то.net
	mb=вы@вашедоменноеимя.net
	mx=mx.вашедоменноеимя.net pref=10
dom=ns.вашедоменноеимя.net ip=10.1.1.1
cname=дополнительное.вашедоменноеимя.net dom=настоящее.вашедоменноеимя.net

Copyright © 2003 Перевод Андрей С. Кухар. Последняя модификация 22.08.2003

Advertisement