Страница:
используется ли маршрут, который Вы ввели, посмотрите на поле Use,
которое находится между двум сообщениями ping.) To check whether a
route you have entered is used at all, check if the Use field in the
second to last column increases between two invocations of ping.
6.7.3. Маршрутизация через Gateway
В предыдущей секции, Я охватил только случай введения хоста с
единственным Ethernet. Достаточно часто, однако, мы сталкивается с
сетями, соединенными с помощью gateway. Этот gateway может просто
связывать два или больше Ethernet, а может обеспечить связь с внешним
миром, (например с Internet). Чтобы использовать gateway сервис, Вы
должны обеспечить сетевому уровню дополнительную информацию о
маршрутизации.
Например, Ethernet Виртуальной Пивоварни и Виртуальной Винодельни
связаны через такой gateway, а именно хост vlager. Предположим, что
vlager уже был отконфигурирован, и нам осталось только добавить новую
запись в таблицу маршрутизации vstout, которая сообщает его ядру что
он может достигнуть всех хостов на Сети Винодельни через vlager.
Соответствующее описание маршрута показывается ниже; gw ключевое
слово, которое сообщает что следующий аргумент обозначает gateway.
# route add wine-net gw vlager
Конечно, любой хост в сети Винодельни, с которым вы желаете
- 91 -
поговорить должен иметь соответствующую запись в таблице маршрутизации
для Сети Пивоварни, иначе Вы были бы способны только послать данные с
vstout на vbardolino, но ответа вы не получите.
Этот пример описывает только gateway который переключает пакеты
между двумя изолированными Ethernet. Теперь предположите что vlager
также имеет соединение с Internet ( работающее через дополнительную
SLIP связь). Тогда мы хотели бы чтобы дэйтаграмы для любой сети,
отличной от Пивоваренной, передавались vlager. Это может быть
выполнено с помощью установки gateway по умолчанию для vstout:
# route add default gw vlager
Сетевое имя default(по умолчанию) связано с адресом 0.0.0.0, что
обозначает маршрут установленный по умолчанию. Вы не должны добавлять
это имя к /etc/networks, потому что это построено в route.
Если, используя ping, Вы обнаружили большой процент потери
пакетов при их проходе через несколько gateway, это может говорить о
очень большой нагрузке на сеть. Потеря пакетов в основном происходит
не из-за техническим проблемам, а скорее благодаря временной
избыточной нагрузке на направляющие хосты, которые из-за этого
задерживают или даже выбрасывают поступающие дэйтаграмы.
6.7.4. Конфигурирование Gateway
Отконфигурировать машину для передачи пакетов между двумя
Ethernet довольно просто. Вернемся к vlager, который оборудован двумя
Ethernet платами, каждая из них связанна с одной из двух сетей. Все,
что Вы должны сделать отконфигурировать оба интерфейса отдельно, дав
им их соответствующий IP адрес, и это все.
Весьма полезно добавлять информацию относительно двух интерфейсов
к файлу хостов путем показанным ниже, так чтобы иметь удобные имена
для них:
- 92 -
191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.2.1 vlager-if2
Последовательность команд для создания двух интерфейсов:
# ifconfig eth0 vlager-if1
# ifconfig eth1 vlager-if2
# route add brew-net
# riute add wine-net
6.7.5. PLIP интерфейс
При использовании PLIP связи для соединения двух машин,
существуют лишь небольшие отличия от того, что Вы должны делать при
использовании Ethernet. Вышеупомянутая связь называется
point-to-point(точка с точкой) связь, потому что она соединяет только
два хоста ("точки"), в противоположность широковещательным сетям.
Как пример, мы рассматриваем laptop компьютер некоторого
служащего в Виртуальной Пивоварне, который связана с vlager через
PLIP. Laptop непосредственно назван vlite, и имеет только один
параллельный порт. В о время загрузки, этот порт будет
регистрироваться как plip1. Чтобы сформировать связь, Вы должны
отконфигурировать интерфейс plip1, используя следующие команды:
# ifconfig plip1 vlite pointopoint vlager
# route add default gw vlager
Первая команда конфигурирует интерфейс, сообщая ядру, что это
point-to-point связь, с удаленной машиной имеющей адрес vlager. Вторая
устанавливает маршрут по умолчанию, используя vlager как gateway. На
vlager, подобная команда ifconfig необходима чтобы сформировать связь
и на vlager:
- 93 -
# ifconfig plip1 vlager pointopoint vlite
Интересно, что интерфейс plip1 на vlager не должен иметь
отдельный IP адрес, но если хочется можете дать ему адрес 191.72.1.1.
Теперь, мы отконфигурировали маршрутизацию от laptop до Сети
Пивоварни; что но все еще отсутствует маршруту от любого из Хостов
Пивоварни к vlite. Особенно тяжелый путь состoит в том, чтобы
добавлять определенный маршрут к таблице маршрутизации каждого хоста,
который состоит в том чтобы объявить vlager как gateway к vlite:
# route add vlite gw vlager
Гораздо лучше иметь дело с временными маршрутами, используя
динамическую маршрутизацию. Один из способов сделать это состoит в
запуске gated демона, который Вы должны устанавливать на каждом хосте
в сети, чтобы он распространял информацию о маршрутах динамически.
Самый легкий путь, однако, состoит в том, чтобы использовать proxy
ARP. С proxy ARP, vlager будет отвечать на любой ARP pfпрос для vlite
посылая собственный Ethernet адрес. Результат этого то, что все пакеты
для vlite будут закачивать на vlager, который будет передавать их на
laptop. Мы будем возвращаться к proxy ARP в секции 6.10.
Будущие выпуски Net-3 будут содержать инструмент названный
plipconfig, который позволит Вам устанавливать IRQ порта принтера.
Позже, это может быть заменено более общей командой ifconfig.
6.7.6. SLIP и PPP Интерфейсы
Хотя SLIP и PPP соединения -- всего лишь простые point-to-point
связь подобно PLIP соединениям, о них также есть некая дополнительная
информация. Обычно, при установке SLIP соединение требуется дозвонится
до удаленного участка через ваш модем, и отрегулировать
последовательную линию для SLIP способа. PPP используется подобным
образом. Инструменты требуемые для создания SLIP или PPP связи будут
описаны в главах 8. и 9.
- 94 -
6.7.7. Dummy(фиктивный) интерфейс
Фиктивный интерфейс действительно немного экзотический, но
довольно полезен. Он наиболее полезен для автономных хостов, и машин,
которые связаны с сетью через модем. Фактически, последний большинство
времени также является автономным хостом.
Проблема автономных хостов в том, что они имеют только одно
активное сетевое устройство, loopback устройство, которому обычно
назначен адрес 127.0.0.1. На в некоторых случаях, Вы должны послать
данные к "официальному" IP адресу локального хоста. Например,
рассмотрите laptop vlite, который был отъединен от сети Приложение на
vlite может захотеть послать некоторые данные к другому приложению на
том же самом хосте. Поиск vlite в /etc/hosts выдает IP адрес
191.72.1.65, таким образом приложение пытается послать данные этому
адресу. Поскольку интерфейс loopback в настоящее время единственный
активный интерфейс на машине, ядро не имеет никакую идей относительно
этого адреса! Как следствие, ядро отказывается от дэйтаграмы, и
возвращает приложению ошибку.
В этот момент просто необходимо фиктивное устройство. Оно решает
эту проблему также как loopback. В случае vlite, Вы просто даете ему
адрес 191.72.1.65 и добавляете новый маршрут указывающий на него. И
каждая дэйтаграма для 191.72.1.65 будет рассматривается локально.
Требуемые действия:
# ifconfig dummy vlite
# route add vlite
6.8. Все о ifconfig
Имеются еще несколько параметров для ifconfig, о которых мы не
писали раньше. Вот полное описание:
ifconfig interface [[-net|-host] address [parameters]]
interface - название интерфейса, и address - IP адрес который
- 95 -
требуется назначить для интерфейса. Это может быть или IP адрес в
dotted quad формате , или имя, которое ifconfig будет искать в
/etc/hosts и /etc/networks. -net и -host опции вынуждают ifconfig
обращаться с адресом как сетевым номером или адресом хоста,
соответственно.
Если ifconfig используется только с именем интерфейса, он
показывает конфигурацию этого интерфейса. Когда он вызывается без
параметров, он показывает все интерфейсы, которые Вы
отконфигурировали; опция -a вынуждает его показать и бездействующие.
Образец вывода для Ethernet интерфейса eth0 может напоминать это:
# ifconfig eth0
eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0
MTU и Metric поля показывают текущее MTU и метрическое значение
для этого интерфейса. Метрическое значение традиционно используется
некоторыми операционными системами чтобы вычислить сложность маршрута.
Linux не использует это значение, но определяет его для совместимости.
RX и TX линии показывают сколько пакетов были получены или
переданы без ошибок, сколько произошло ошибок, сколько пакетов были
потеряны, вероятно из-за нехватки памяти, и сколько были потеряны
из-за переполнения. Переполнение приемника обычно случается когда
пакеты ходят быстрее чем ядро может их обслужить последнее прерывание.
Значения флагов, выводимые ifconfig, передают дополнительную
информацию о имени и опциях командной строки; они будут объяснены
ниже.
Следующий список параметров используется ifconfig с
соответствующими названиями флага, данными в скобках. Опция которая
просто включает некоторую особенность также позволяют выключать ее,
если названию опции предшествует (-).
- 96 -
up Эта опция делает интерфейс доступным для IP уровня. Эта опция
подразумевается, когда дается IP адрес.
( Эта опция соответствует UP RUNNING флагам)
down Она делает интерфейс недоступным IP уровню. Она эффективно
отключает любое IP движение через интерфейс. Обратите Внимание, что
она не удаляет все маршрутизационные записи, которые используют этот
интерфейс. Если Вы постоянно выключаете некий интерфейс, Вы должны
удалить эти записи предоставить, если возможно, альтернативные
маршруты.
netmask mask назначает маску подсети для использования интерфейсом.
здесь можно давать как любой шестнадцатиричнре число с 32 битами,
которому предшествует 0x, так и dotted quad десятичные номера.
Pointopoint adress Эта опция используется для point-to-point IP
соединений. Эта опция необходима чтобы отконфигурировать, например,
SLIP или PLIP интерфейсы.
(Если point-to-point адрес был установлен, ifconfig показывает POINTOPOINT
флаг.)
broadcast address широковещательный адрес обычно создается из сетевого
номера установкой всех битов части хоста. Некоторые IP используют
различную схему; эта опция помогает приспособиться к этим странным
средам.
(Если broadcast address был установлен, ifconfig показывает BROADCAST флаг.)
metric number Эта опция может использоваться для назначения метрического
значения записи таблицы маршрутизации созданной для интерфейса. Эта
метрика используется в RIP, для построения таблиц маршрутизации.
Установленным по умолчанию оно равно нулю. Если Вы не используете
RIP демона, Вы не нуждаетесь в этой опции вообще; если используете,
- 97 -
Вы редко должны будете изменять это значение.
mtu bytes Эта опция устанавливает Maximum Transmission Unit
(максимальную длину передаваемого пакета) Для Ethernets, MTU по
умолчанию 1500; для SLIP интерфейсов 296.
arp Это опция определенная для широковещательных сетей типа пакетного
радио или Ethernet. Она позволяет использовать ARP, протокола поиска
адреса, используемый для определения физического адреса хоста
включенного сеть. Для широковещательных сетей, включен по
умолчанию.
(Если ARP не включен, ifconfig показывает флаг NOARP. )
-arp запрещает использование ARP на этом интерфейсе.
promisc Помещает интерфейс в promiscuous состояние. В широковещательной
сети, это заставляет интерфейс получать все пакеты, независимо от
того были ли они предназначены для другого хоста или нет. Это
позволяет , используя фильтры пакетов, анализировать сетевой трафик.
Обычно, это хорошая техника охоты на сетевые проблемы которые должны
иначе интенсивно прибывать. С другой стороны, это позволяет врагам
исследовать движение паролей по вашей сети и делать другие черные
дела. Одна защита против этого типа нападения не позволять
присоединятся к вашей сети чужим компьютерам. Другая способ
использовать безопасные опознавательные протоколы, типа Kerberos,
или SRA login. (Эта опция соответствует флагу PROMISC.)
-promisc отказ от promiscuous способа.
allmulti Multicast адреса -- некоторый вид широковещательных адресов
позволяющих обращаться к группе хостов, которые не обязательно должны
- 98 -
быть на той же самой подсети. Multicast адреса еще не
поддерживаются ядром.
( Эта опция соответствует флагу ALLMULTI. )
-allmulti отключает Multicast адреса.
6.9. Проверка с помощью netstat
Дальше, Я рассмотрю полезный инструмент для проверки вашей
сетевой конфигурации и активности. Он назван netstat и ,фактически,
является набором из нескольких инструментов собранных вместе. Мы будем
обсуждать каждую из функций в следующих секциях.
6.9.1. Отображение таблицы маршрутизации
При вызове netstat с -r флагом, он показывает таблицу
маршрутизации. На vstout, он выдаст:
# netstat -nr
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.1 * 255.255.255.255 UH 1 0 50 lo
191.72.1.0 * 255.255.255.0 U 1 0 478 eth0
191.72.2.0 191.72.1.1 255.255.255.0 UGN 1 0 250 eth0
-n опция заставляет netstat печатать адреса как dotted quad IP
номера вместо символических имен хостов и сетей. Это особенно полезно
когда Вы хотите избежать поисков адреса по сети (например через DNS
или NIS сервер).
Вторая колонка вывода netstat показывает gateway
маршрутизационную запись. Если gateway не используется, печатается
звездочка. Третья колонка "общность" маршрута. Когда дается IP адрес,
чтобы найти подходящий маршрут для него, ядро просматривает все записи
таблицы маршрутизации, берет побитовое И адреса и genmask и лишь за
тем сравнивает результат с целью маршрута.
- 99 -
Четвертая колонка показывает различные флаги, которые описывают
маршрут:
G маршрут использует gateway.
U интерфейс, который нужно использовать, работает.
H Только отдельный хост может быть достигнут через данный маршрут.
Например, для loopback записи 127.0.0.1.
D устанавливается, если запись таблицы была произведена по приходу
ICMP перенаправляемое сообщение ( см. секцию 3.5 ).
M устанавливается, если запись таблицы была изменена ICMP
перенапавляемым сообщением.
Ref колонка показывает число ссылок на этот маршрут, то есть
сколько других маршрутов (например через gateways) полагаются на
присутствие этого маршрута. Последние две колонки показывают время, в
течении которого используется запись маршрутизации, и интерфейс, через
который посылаются дэйтаграмы.
6.9.2. Отображение статистики интерфейса
Когда вызывается с -i флагом, netstat показывает статистику для
сетевых интерфейсов. Если, кроме того, дается -a опция, он будет
печатать все интерфейсы представленные в ядре, а не только те, которые
были отконфигурированы в настоящее время. На vstaout, вывод от netstat
будет напоминать это:
$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 0 0 3185 0 0 0 3185 0 0 0 BLRU
eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU
MTU и Met поля показывают текущий MTU и метрическое значение для
этого интерфейса. RX и TX колонки показывают сколько пакетов были
- 100 -
получены или переданы без ошибок (RX-OK/TX-OK), повредились
(RX-ERR/TXERR), сколько было потеряно (RX-DRP/TX-DRP), и сколько было
потеряно из-за переполнения (RX-OVR/TX-OVR).
Последняя колонка показывает флаги, установленные для этого
интерфейса. Здесь используется односимвольная версия флагов, которые
печатает ifconfig.
B был установлен широковещательный адрес.
L Этот интерфейс -- loopback устройство
M интерфайс получает все пакеты ( promiscuous способ ).
N Трейлеры избегаются.
O ARP выключен для этого интерфейса.
P Это - point-to-point соединение.
R Интерфейс работает.
U Интерфейс активен.
6.9.3. Отображение соединений
Netstat поддерживает множество опции для отображения активных и
пассивных гнезда. Опция -t, -u, -w, и -x показывают активные TCP, UDP,
RAW , или UNIX гнезда. Если Вы зададите -a флаг, гнезда которые ждут
соединения (то есть слушают) также показываются. Это даст Вам список
всех серверов которые в настоящее время работают в вашей системе.
Вызов netstat -ta на vlager даст:
$ netstat -ta
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (State)
- 101 -
tcp 0 0 *:domain *:* LISTEN
tcp 0 0 *:time *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED
tcp 0 0 *:chargen *:* LISTEN
tcp 0 0 *:daytime *:* LISTEN
tcp 0 0 *:discard *:* LISTEN
tcp 0 0 *:echo *:* LISTEN
tcp 0 0 *:shell *:* LISTEN
tcp 0 0 *:login *:* LISTEN
Видно, что больше всего серверов просто ждут соединения. Однако,
четвертая строка говорит о SMTP соединение с vstout, а шестая линия
сообщает о telnet соединение с vbardolino.
При использовании -a флага будут отображаться все гнезда всех
семейств.
6.10. Проверка ARP Таблицы
В некоторых случаях, бывает полезно просмотреть или даже изменить
содержание ARP таблицы, например, когда Вы подозреваете, что двойной
адрес причина некоторой сетевой неустойчивости. аrp был сделан для
исправления подобных вещей.
Arp [-v] [ -t hwtype ] -a [hostname] arp [-v] [ -t hwtype ] -s hostname
hwaddr arp [-v] -d hostname [ hostname ... ]
hostname аргумент может быть как символическим именем, так и IP
адресом в dotted quad стандарте.
Первая строка отображает ARP запись для IP адреса или указанного
хоста или всех известный хостов, если hostname не дается. Например,
вызов arp на vlager может выдать
- 102 -
# arp -a
IP address HW type HW address
191.72.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1
191.72.1.2 10Mbps Ethernet 00:00:C0:90:B3:42
191.72.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
что показывает Ethernet адреса vlager, vstout и vale.
При использовании -t опции Вы увидите информацию только о том
типе аппаратных средств, который вы укажете. Это может быть ethernet,
ax25net, или pronet, стоящие за 10Mbps Ethernet, AMPR AX.25, и IEEE
802.5 token ring оборудование, соответственно.
-s опция используется чтобы добавить Ethernet адрес хоста к ARP
таблицам. hwaddr аргумент определяет адрес аппаратных средств, который
по умолчанию предполагается Ethernet адресом, указанным как шесть
шестнадцатиричных байт, разделяемых двоеточиями. Вы можете также
устанавливать адрес аппаратных средств для других типов аппаратных
средств, также, используя -t опцию.
Одна из проблем, которая может потребовать, чтобы Вы вручную
добавили IP адрес к ARP таблице, когда по некоторым причинам ARP
вопросы для удаленного хоста не доходят, например когда глючит ARP
драйвер или имеется другой хост в сети которая ошибочно опознает себя
с IP адресом того хоста. Твердая установка IP адреса в ARP таблице
также (очень решительно) является мерой защиты себя от хостов на вашем
Ethernet, которые прикидываются кем-то другим.
Вызов arp с использованием ключа -d удаляет все ARP записи
касающиеся данного хоста. Это может быть необходимо, чтобы вынудить
интерфейс повторно получить Ethernet адрес для данного IP. Это полезно
когда переконфигурированная система имеет неправильную ARP информацию.
-s опция может также использоваться чтобы создать proxy ARP. Это
специальная техника когда хост, скажем gate, действует как gateway для
другого хоста назовем его fnord, делая вид что оба адреса относят тому
же самому хосту, а именно gate. Это делается так: на gate создается
ARP запись о fnord, которая указывает на его собственный Ethernet
- 103 -
интерфейс. Теперь когда хост посылает ARP запрос о fnord, gate будут
возвращать ответ содержащий собственный Ethernet адрес. Спрашивающий
хост будет тогда посылать все дэйтаграмы gate, который перенаправит их
к fnord.
Эти схема может быть необходима, например, когда Вы хотите
работать с fnord из DOS машины с нестандартным TCP, которое плохо
работает с маршрутизацией. Когда Вы используете proxy ARP, DOS машине
как будет казаться, что fnord находится в локальной подсети, так что
ей не требуется что-либо знать относительно маршрутов и gateway.
Другое очень полезное приложение proxy ARP -- когда один из ваших
хостов действует как gateway к некоторому другой хост только временно,
например по телефону. В предыдущем примере, мы уже столкнулись с
laptop vlite, который был связан с vlager через PLIP связь только в
небольшом промежутке времени. Конечно, это будет работать только, если
адрес хоста для, которого Вы хотите обеспечить proxy ARP, находится на
той же самой IP подсети, что и ваш gateway. Например, vstout мог бы
быть proxy ARP для любого хоста из подсети Пивоварни (191.72.1.0), но
никогда для хоста из подсети Винодельни (191.72.2.0).
Требуемые действия для обеспечения proxy ARP для fnord дается
ниже; конечно, Ethernet адрес должен быть от gate.
# arp -s fnord 00:00:c0:a1:42:e0 pub
proxy ARP запись может быть удалена снова используя:
# arp -d fnord
6.11. Будущее
Linux все еще развивается. Главные изменения в ядре принесет
очень гибкую схему конфигурации, которая позволит Вам конфигурировать
сетевые устройства во время работы. Например, команда ifconfig будет
работать с аргументами, которые устанавливают IRQ линию и DMA канал.
Другое изменение -- дополнительный mtu флаг для команды route,
- 104 -
которая будет устанавливать Максимальный размер пакета для
определенного маршрута. Этот маршруто-определенный MTU заменит MTU для
интерфейса. Вы будете использовать эту опцию для маршрутов через
gateway, где связь между gateway и хостом места назначения требует
очень низкого MTU. Например, предположите что хост wanderer связан с
vlager через SLIP связь. При посылке данных от vstout до wanderer,
сетевой уровень на wanderer использовал бы пакеты до 1500 байтов,
потому что пакеты посылаются через Ethernet. SLIP связь, с другой
стороны, используется с MTU 296, так что сетевой уровень на vlager был
бы должен разбивать IP пакеты на меньшие фрагменты, которые
вписываются в 296 байтов. Если вместо этого, Вы конфигурировали бы
маршрут на vstout так, чтобы сразу использовать MTU 296, этого
относительно долгого разбиения можно избежать:
# route add wanderer gw vlager mtu 296
Обратите Внимание что mtu опция также позволяет Вам выборочно
отменить результаты "Подсети Локальны" политики (SNARL). Эта политика
-- это опция конфигурации ядра и описана в главе 4.
.
- 105 -
7. Названия сервиса и конфигурация решающего устройства.
Как уже обсуждалось в главе 3., TCP/IP сеть может полагаться на
различные схемы, чтобы преобразовать имена в адреса. Самый простой
способ, у которого еще нет никаких преимуществ над способом, где все
пространство имен было расщеплено на зоны, - таблица хостов, сохраненная
в /etc/hosts. Это полезно только для малых LAN, которые управляются
одним единственным администратором, и не имеющих никакого IP общения с
внешним миром. Формат хост файлов был уже описан в главе 6.
С другой стороны, Вы можете использовать BIND - Berkeley Internet
Name Domain Service - для перевода хостов в IP адреса. Конфигурация BIND
может быть настоящей хореей, но если только вы сделаете это, то
изменения в сетевой топологии могут быть легко измены. На Linux, как и на
многих других Unix-подобных cистемах, обслуживание обеспечивается через
программу, называемую named. При запуске, эта программа загружает множество
основных файлов в их собственный кэш, и ждет запрос от отдаленных или
локальных пользовательских процессов. Имеющиеся способы требуют, чтобы Вы
обязательно ввели имя сервера для каждого хоста.
Эта глава делает немного больше, чем просто дает приблизительный
эскиз того как работает сервер. Если Вы планируете использовать BIND в
операционной среде с более чем малыми LAN и возможно Internet
uplink, то Вы должны приобрести хорошую книгу по BIND, например Льюиса
Крикета "DNS and BIND" (см. [GETST "liu-dns"]). Возможно Вы захотите
проверить примечания, они содержатся в BIND источниках. Там также имеются
вопросы newsgroup для DNS называемые comp.protocols.tcp-ip.domains.
7.1 Библиотека решающих устройств.
Когда мы говорим о " решающем устройстве ", то мы не подрузамеваем
никакого специального применения, поэтому достаточно обратится к
библиотеке решающих устройств - системе функций, которая может быть
найдена в стандарной библиотеке C. Центральные программы являются
gethostbyname(2) и gethostbyaddr(2), которые ищут все IP адреса
принадлежащие хосту, и наоборот. Они могут быть сконфигурированы при
простом просмотре информации в хосте, при запросе ряда серверов, или при
использовании баз данных хоста NIS(а) (Network Information Service).
Другое применение, подобно smail, может включать различные драйверы для
- 106 -
любого из вышеперечисленного, и нуждается в особой осторожности.
7.1.1 Файл конфигурации хоста.
Центральный файл, который управляет вашей установкой -
host.conf. Он сообщает решающему устройству какой сервис использовать, и в
каком порядке.
Опции в host.conf должны быть на отдельных строках. Области могут
быть отделены пустым пространством (spaces или tabs). Знак (#) вводит
строку, которая простирается вплоть до следующей строки.
Доступны следующие опции:
Order: Эта опция определяет порядок в котором перебераются все
доступные услуги. Valid опция - связывает запроса сервера и
поиск хостов в /etc/hosts, и nis для NIS поисков. Любая
или все из них могут быть определены. Порядок, в которым
они появляются на строках определяет порядок в котором будут
перебираться определенные услуги.
Multi: Она может использоваться как опция. Эта опция определяет,
разрешено ли хосту в /etc/hosts иметь несколько IP адресов,
которое находится между двум сообщениями ping.) To check whether a
route you have entered is used at all, check if the Use field in the
second to last column increases between two invocations of ping.
6.7.3. Маршрутизация через Gateway
В предыдущей секции, Я охватил только случай введения хоста с
единственным Ethernet. Достаточно часто, однако, мы сталкивается с
сетями, соединенными с помощью gateway. Этот gateway может просто
связывать два или больше Ethernet, а может обеспечить связь с внешним
миром, (например с Internet). Чтобы использовать gateway сервис, Вы
должны обеспечить сетевому уровню дополнительную информацию о
маршрутизации.
Например, Ethernet Виртуальной Пивоварни и Виртуальной Винодельни
связаны через такой gateway, а именно хост vlager. Предположим, что
vlager уже был отконфигурирован, и нам осталось только добавить новую
запись в таблицу маршрутизации vstout, которая сообщает его ядру что
он может достигнуть всех хостов на Сети Винодельни через vlager.
Соответствующее описание маршрута показывается ниже; gw ключевое
слово, которое сообщает что следующий аргумент обозначает gateway.
# route add wine-net gw vlager
Конечно, любой хост в сети Винодельни, с которым вы желаете
- 91 -
поговорить должен иметь соответствующую запись в таблице маршрутизации
для Сети Пивоварни, иначе Вы были бы способны только послать данные с
vstout на vbardolino, но ответа вы не получите.
Этот пример описывает только gateway который переключает пакеты
между двумя изолированными Ethernet. Теперь предположите что vlager
также имеет соединение с Internet ( работающее через дополнительную
SLIP связь). Тогда мы хотели бы чтобы дэйтаграмы для любой сети,
отличной от Пивоваренной, передавались vlager. Это может быть
выполнено с помощью установки gateway по умолчанию для vstout:
# route add default gw vlager
Сетевое имя default(по умолчанию) связано с адресом 0.0.0.0, что
обозначает маршрут установленный по умолчанию. Вы не должны добавлять
это имя к /etc/networks, потому что это построено в route.
Если, используя ping, Вы обнаружили большой процент потери
пакетов при их проходе через несколько gateway, это может говорить о
очень большой нагрузке на сеть. Потеря пакетов в основном происходит
не из-за техническим проблемам, а скорее благодаря временной
избыточной нагрузке на направляющие хосты, которые из-за этого
задерживают или даже выбрасывают поступающие дэйтаграмы.
6.7.4. Конфигурирование Gateway
Отконфигурировать машину для передачи пакетов между двумя
Ethernet довольно просто. Вернемся к vlager, который оборудован двумя
Ethernet платами, каждая из них связанна с одной из двух сетей. Все,
что Вы должны сделать отконфигурировать оба интерфейса отдельно, дав
им их соответствующий IP адрес, и это все.
Весьма полезно добавлять информацию относительно двух интерфейсов
к файлу хостов путем показанным ниже, так чтобы иметь удобные имена
для них:
- 92 -
191.72.1.1 vlager vlager.vbrew.com
191.72.1.1 vlager-if1
191.72.2.1 vlager-if2
Последовательность команд для создания двух интерфейсов:
# ifconfig eth0 vlager-if1
# ifconfig eth1 vlager-if2
# route add brew-net
# riute add wine-net
6.7.5. PLIP интерфейс
При использовании PLIP связи для соединения двух машин,
существуют лишь небольшие отличия от того, что Вы должны делать при
использовании Ethernet. Вышеупомянутая связь называется
point-to-point(точка с точкой) связь, потому что она соединяет только
два хоста ("точки"), в противоположность широковещательным сетям.
Как пример, мы рассматриваем laptop компьютер некоторого
служащего в Виртуальной Пивоварне, который связана с vlager через
PLIP. Laptop непосредственно назван vlite, и имеет только один
параллельный порт. В о время загрузки, этот порт будет
регистрироваться как plip1. Чтобы сформировать связь, Вы должны
отконфигурировать интерфейс plip1, используя следующие команды:
# ifconfig plip1 vlite pointopoint vlager
# route add default gw vlager
Первая команда конфигурирует интерфейс, сообщая ядру, что это
point-to-point связь, с удаленной машиной имеющей адрес vlager. Вторая
устанавливает маршрут по умолчанию, используя vlager как gateway. На
vlager, подобная команда ifconfig необходима чтобы сформировать связь
и на vlager:
- 93 -
# ifconfig plip1 vlager pointopoint vlite
Интересно, что интерфейс plip1 на vlager не должен иметь
отдельный IP адрес, но если хочется можете дать ему адрес 191.72.1.1.
Теперь, мы отконфигурировали маршрутизацию от laptop до Сети
Пивоварни; что но все еще отсутствует маршруту от любого из Хостов
Пивоварни к vlite. Особенно тяжелый путь состoит в том, чтобы
добавлять определенный маршрут к таблице маршрутизации каждого хоста,
который состоит в том чтобы объявить vlager как gateway к vlite:
# route add vlite gw vlager
Гораздо лучше иметь дело с временными маршрутами, используя
динамическую маршрутизацию. Один из способов сделать это состoит в
запуске gated демона, который Вы должны устанавливать на каждом хосте
в сети, чтобы он распространял информацию о маршрутах динамически.
Самый легкий путь, однако, состoит в том, чтобы использовать proxy
ARP. С proxy ARP, vlager будет отвечать на любой ARP pfпрос для vlite
посылая собственный Ethernet адрес. Результат этого то, что все пакеты
для vlite будут закачивать на vlager, который будет передавать их на
laptop. Мы будем возвращаться к proxy ARP в секции 6.10.
Будущие выпуски Net-3 будут содержать инструмент названный
plipconfig, который позволит Вам устанавливать IRQ порта принтера.
Позже, это может быть заменено более общей командой ifconfig.
6.7.6. SLIP и PPP Интерфейсы
Хотя SLIP и PPP соединения -- всего лишь простые point-to-point
связь подобно PLIP соединениям, о них также есть некая дополнительная
информация. Обычно, при установке SLIP соединение требуется дозвонится
до удаленного участка через ваш модем, и отрегулировать
последовательную линию для SLIP способа. PPP используется подобным
образом. Инструменты требуемые для создания SLIP или PPP связи будут
описаны в главах 8. и 9.
- 94 -
6.7.7. Dummy(фиктивный) интерфейс
Фиктивный интерфейс действительно немного экзотический, но
довольно полезен. Он наиболее полезен для автономных хостов, и машин,
которые связаны с сетью через модем. Фактически, последний большинство
времени также является автономным хостом.
Проблема автономных хостов в том, что они имеют только одно
активное сетевое устройство, loopback устройство, которому обычно
назначен адрес 127.0.0.1. На в некоторых случаях, Вы должны послать
данные к "официальному" IP адресу локального хоста. Например,
рассмотрите laptop vlite, который был отъединен от сети Приложение на
vlite может захотеть послать некоторые данные к другому приложению на
том же самом хосте. Поиск vlite в /etc/hosts выдает IP адрес
191.72.1.65, таким образом приложение пытается послать данные этому
адресу. Поскольку интерфейс loopback в настоящее время единственный
активный интерфейс на машине, ядро не имеет никакую идей относительно
этого адреса! Как следствие, ядро отказывается от дэйтаграмы, и
возвращает приложению ошибку.
В этот момент просто необходимо фиктивное устройство. Оно решает
эту проблему также как loopback. В случае vlite, Вы просто даете ему
адрес 191.72.1.65 и добавляете новый маршрут указывающий на него. И
каждая дэйтаграма для 191.72.1.65 будет рассматривается локально.
Требуемые действия:
# ifconfig dummy vlite
# route add vlite
6.8. Все о ifconfig
Имеются еще несколько параметров для ifconfig, о которых мы не
писали раньше. Вот полное описание:
ifconfig interface [[-net|-host] address [parameters]]
interface - название интерфейса, и address - IP адрес который
- 95 -
требуется назначить для интерфейса. Это может быть или IP адрес в
dotted quad формате , или имя, которое ifconfig будет искать в
/etc/hosts и /etc/networks. -net и -host опции вынуждают ifconfig
обращаться с адресом как сетевым номером или адресом хоста,
соответственно.
Если ifconfig используется только с именем интерфейса, он
показывает конфигурацию этого интерфейса. Когда он вызывается без
параметров, он показывает все интерфейсы, которые Вы
отконфигурировали; опция -a вынуждает его показать и бездействующие.
Образец вывода для Ethernet интерфейса eth0 может напоминать это:
# ifconfig eth0
eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42
inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0
MTU и Metric поля показывают текущее MTU и метрическое значение
для этого интерфейса. Метрическое значение традиционно используется
некоторыми операционными системами чтобы вычислить сложность маршрута.
Linux не использует это значение, но определяет его для совместимости.
RX и TX линии показывают сколько пакетов были получены или
переданы без ошибок, сколько произошло ошибок, сколько пакетов были
потеряны, вероятно из-за нехватки памяти, и сколько были потеряны
из-за переполнения. Переполнение приемника обычно случается когда
пакеты ходят быстрее чем ядро может их обслужить последнее прерывание.
Значения флагов, выводимые ifconfig, передают дополнительную
информацию о имени и опциях командной строки; они будут объяснены
ниже.
Следующий список параметров используется ifconfig с
соответствующими названиями флага, данными в скобках. Опция которая
просто включает некоторую особенность также позволяют выключать ее,
если названию опции предшествует (-).
- 96 -
up Эта опция делает интерфейс доступным для IP уровня. Эта опция
подразумевается, когда дается IP адрес.
( Эта опция соответствует UP RUNNING флагам)
down Она делает интерфейс недоступным IP уровню. Она эффективно
отключает любое IP движение через интерфейс. Обратите Внимание, что
она не удаляет все маршрутизационные записи, которые используют этот
интерфейс. Если Вы постоянно выключаете некий интерфейс, Вы должны
удалить эти записи предоставить, если возможно, альтернативные
маршруты.
netmask mask назначает маску подсети для использования интерфейсом.
здесь можно давать как любой шестнадцатиричнре число с 32 битами,
которому предшествует 0x, так и dotted quad десятичные номера.
Pointopoint adress Эта опция используется для point-to-point IP
соединений. Эта опция необходима чтобы отконфигурировать, например,
SLIP или PLIP интерфейсы.
(Если point-to-point адрес был установлен, ifconfig показывает POINTOPOINT
флаг.)
broadcast address широковещательный адрес обычно создается из сетевого
номера установкой всех битов части хоста. Некоторые IP используют
различную схему; эта опция помогает приспособиться к этим странным
средам.
(Если broadcast address был установлен, ifconfig показывает BROADCAST флаг.)
metric number Эта опция может использоваться для назначения метрического
значения записи таблицы маршрутизации созданной для интерфейса. Эта
метрика используется в RIP, для построения таблиц маршрутизации.
Установленным по умолчанию оно равно нулю. Если Вы не используете
RIP демона, Вы не нуждаетесь в этой опции вообще; если используете,
- 97 -
Вы редко должны будете изменять это значение.
mtu bytes Эта опция устанавливает Maximum Transmission Unit
(максимальную длину передаваемого пакета) Для Ethernets, MTU по
умолчанию 1500; для SLIP интерфейсов 296.
arp Это опция определенная для широковещательных сетей типа пакетного
радио или Ethernet. Она позволяет использовать ARP, протокола поиска
адреса, используемый для определения физического адреса хоста
включенного сеть. Для широковещательных сетей, включен по
умолчанию.
(Если ARP не включен, ifconfig показывает флаг NOARP. )
-arp запрещает использование ARP на этом интерфейсе.
promisc Помещает интерфейс в promiscuous состояние. В широковещательной
сети, это заставляет интерфейс получать все пакеты, независимо от
того были ли они предназначены для другого хоста или нет. Это
позволяет , используя фильтры пакетов, анализировать сетевой трафик.
Обычно, это хорошая техника охоты на сетевые проблемы которые должны
иначе интенсивно прибывать. С другой стороны, это позволяет врагам
исследовать движение паролей по вашей сети и делать другие черные
дела. Одна защита против этого типа нападения не позволять
присоединятся к вашей сети чужим компьютерам. Другая способ
использовать безопасные опознавательные протоколы, типа Kerberos,
или SRA login. (Эта опция соответствует флагу PROMISC.)
-promisc отказ от promiscuous способа.
allmulti Multicast адреса -- некоторый вид широковещательных адресов
позволяющих обращаться к группе хостов, которые не обязательно должны
- 98 -
быть на той же самой подсети. Multicast адреса еще не
поддерживаются ядром.
( Эта опция соответствует флагу ALLMULTI. )
-allmulti отключает Multicast адреса.
6.9. Проверка с помощью netstat
Дальше, Я рассмотрю полезный инструмент для проверки вашей
сетевой конфигурации и активности. Он назван netstat и ,фактически,
является набором из нескольких инструментов собранных вместе. Мы будем
обсуждать каждую из функций в следующих секциях.
6.9.1. Отображение таблицы маршрутизации
При вызове netstat с -r флагом, он показывает таблицу
маршрутизации. На vstout, он выдаст:
# netstat -nr
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.1 * 255.255.255.255 UH 1 0 50 lo
191.72.1.0 * 255.255.255.0 U 1 0 478 eth0
191.72.2.0 191.72.1.1 255.255.255.0 UGN 1 0 250 eth0
-n опция заставляет netstat печатать адреса как dotted quad IP
номера вместо символических имен хостов и сетей. Это особенно полезно
когда Вы хотите избежать поисков адреса по сети (например через DNS
или NIS сервер).
Вторая колонка вывода netstat показывает gateway
маршрутизационную запись. Если gateway не используется, печатается
звездочка. Третья колонка "общность" маршрута. Когда дается IP адрес,
чтобы найти подходящий маршрут для него, ядро просматривает все записи
таблицы маршрутизации, берет побитовое И адреса и genmask и лишь за
тем сравнивает результат с целью маршрута.
- 99 -
Четвертая колонка показывает различные флаги, которые описывают
маршрут:
G маршрут использует gateway.
U интерфейс, который нужно использовать, работает.
H Только отдельный хост может быть достигнут через данный маршрут.
Например, для loopback записи 127.0.0.1.
D устанавливается, если запись таблицы была произведена по приходу
ICMP перенаправляемое сообщение ( см. секцию 3.5 ).
M устанавливается, если запись таблицы была изменена ICMP
перенапавляемым сообщением.
Ref колонка показывает число ссылок на этот маршрут, то есть
сколько других маршрутов (например через gateways) полагаются на
присутствие этого маршрута. Последние две колонки показывают время, в
течении которого используется запись маршрутизации, и интерфейс, через
который посылаются дэйтаграмы.
6.9.2. Отображение статистики интерфейса
Когда вызывается с -i флагом, netstat показывает статистику для
сетевых интерфейсов. Если, кроме того, дается -a опция, он будет
печатать все интерфейсы представленные в ядре, а не только те, которые
были отконфигурированы в настоящее время. На vstaout, вывод от netstat
будет напоминать это:
$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 0 0 3185 0 0 0 3185 0 0 0 BLRU
eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU
MTU и Met поля показывают текущий MTU и метрическое значение для
этого интерфейса. RX и TX колонки показывают сколько пакетов были
- 100 -
получены или переданы без ошибок (RX-OK/TX-OK), повредились
(RX-ERR/TXERR), сколько было потеряно (RX-DRP/TX-DRP), и сколько было
потеряно из-за переполнения (RX-OVR/TX-OVR).
Последняя колонка показывает флаги, установленные для этого
интерфейса. Здесь используется односимвольная версия флагов, которые
печатает ifconfig.
B был установлен широковещательный адрес.
L Этот интерфейс -- loopback устройство
M интерфайс получает все пакеты ( promiscuous способ ).
N Трейлеры избегаются.
O ARP выключен для этого интерфейса.
P Это - point-to-point соединение.
R Интерфейс работает.
U Интерфейс активен.
6.9.3. Отображение соединений
Netstat поддерживает множество опции для отображения активных и
пассивных гнезда. Опция -t, -u, -w, и -x показывают активные TCP, UDP,
RAW , или UNIX гнезда. Если Вы зададите -a флаг, гнезда которые ждут
соединения (то есть слушают) также показываются. Это даст Вам список
всех серверов которые в настоящее время работают в вашей системе.
Вызов netstat -ta на vlager даст:
$ netstat -ta
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (State)
- 101 -
tcp 0 0 *:domain *:* LISTEN
tcp 0 0 *:time *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED
tcp 0 0 *:chargen *:* LISTEN
tcp 0 0 *:daytime *:* LISTEN
tcp 0 0 *:discard *:* LISTEN
tcp 0 0 *:echo *:* LISTEN
tcp 0 0 *:shell *:* LISTEN
tcp 0 0 *:login *:* LISTEN
Видно, что больше всего серверов просто ждут соединения. Однако,
четвертая строка говорит о SMTP соединение с vstout, а шестая линия
сообщает о telnet соединение с vbardolino.
При использовании -a флага будут отображаться все гнезда всех
семейств.
6.10. Проверка ARP Таблицы
В некоторых случаях, бывает полезно просмотреть или даже изменить
содержание ARP таблицы, например, когда Вы подозреваете, что двойной
адрес причина некоторой сетевой неустойчивости. аrp был сделан для
исправления подобных вещей.
Arp [-v] [ -t hwtype ] -a [hostname] arp [-v] [ -t hwtype ] -s hostname
hwaddr arp [-v] -d hostname [ hostname ... ]
hostname аргумент может быть как символическим именем, так и IP
адресом в dotted quad стандарте.
Первая строка отображает ARP запись для IP адреса или указанного
хоста или всех известный хостов, если hostname не дается. Например,
вызов arp на vlager может выдать
- 102 -
# arp -a
IP address HW type HW address
191.72.1.3 10Mbps Ethernet 00:00:C0:5A:42:C1
191.72.1.2 10Mbps Ethernet 00:00:C0:90:B3:42
191.72.2.4 10Mbps Ethernet 00:00:C0:04:69:AA
что показывает Ethernet адреса vlager, vstout и vale.
При использовании -t опции Вы увидите информацию только о том
типе аппаратных средств, который вы укажете. Это может быть ethernet,
ax25net, или pronet, стоящие за 10Mbps Ethernet, AMPR AX.25, и IEEE
802.5 token ring оборудование, соответственно.
-s опция используется чтобы добавить Ethernet адрес хоста к ARP
таблицам. hwaddr аргумент определяет адрес аппаратных средств, который
по умолчанию предполагается Ethernet адресом, указанным как шесть
шестнадцатиричных байт, разделяемых двоеточиями. Вы можете также
устанавливать адрес аппаратных средств для других типов аппаратных
средств, также, используя -t опцию.
Одна из проблем, которая может потребовать, чтобы Вы вручную
добавили IP адрес к ARP таблице, когда по некоторым причинам ARP
вопросы для удаленного хоста не доходят, например когда глючит ARP
драйвер или имеется другой хост в сети которая ошибочно опознает себя
с IP адресом того хоста. Твердая установка IP адреса в ARP таблице
также (очень решительно) является мерой защиты себя от хостов на вашем
Ethernet, которые прикидываются кем-то другим.
Вызов arp с использованием ключа -d удаляет все ARP записи
касающиеся данного хоста. Это может быть необходимо, чтобы вынудить
интерфейс повторно получить Ethernet адрес для данного IP. Это полезно
когда переконфигурированная система имеет неправильную ARP информацию.
-s опция может также использоваться чтобы создать proxy ARP. Это
специальная техника когда хост, скажем gate, действует как gateway для
другого хоста назовем его fnord, делая вид что оба адреса относят тому
же самому хосту, а именно gate. Это делается так: на gate создается
ARP запись о fnord, которая указывает на его собственный Ethernet
- 103 -
интерфейс. Теперь когда хост посылает ARP запрос о fnord, gate будут
возвращать ответ содержащий собственный Ethernet адрес. Спрашивающий
хост будет тогда посылать все дэйтаграмы gate, который перенаправит их
к fnord.
Эти схема может быть необходима, например, когда Вы хотите
работать с fnord из DOS машины с нестандартным TCP, которое плохо
работает с маршрутизацией. Когда Вы используете proxy ARP, DOS машине
как будет казаться, что fnord находится в локальной подсети, так что
ей не требуется что-либо знать относительно маршрутов и gateway.
Другое очень полезное приложение proxy ARP -- когда один из ваших
хостов действует как gateway к некоторому другой хост только временно,
например по телефону. В предыдущем примере, мы уже столкнулись с
laptop vlite, который был связан с vlager через PLIP связь только в
небольшом промежутке времени. Конечно, это будет работать только, если
адрес хоста для, которого Вы хотите обеспечить proxy ARP, находится на
той же самой IP подсети, что и ваш gateway. Например, vstout мог бы
быть proxy ARP для любого хоста из подсети Пивоварни (191.72.1.0), но
никогда для хоста из подсети Винодельни (191.72.2.0).
Требуемые действия для обеспечения proxy ARP для fnord дается
ниже; конечно, Ethernet адрес должен быть от gate.
# arp -s fnord 00:00:c0:a1:42:e0 pub
proxy ARP запись может быть удалена снова используя:
# arp -d fnord
6.11. Будущее
Linux все еще развивается. Главные изменения в ядре принесет
очень гибкую схему конфигурации, которая позволит Вам конфигурировать
сетевые устройства во время работы. Например, команда ifconfig будет
работать с аргументами, которые устанавливают IRQ линию и DMA канал.
Другое изменение -- дополнительный mtu флаг для команды route,
- 104 -
которая будет устанавливать Максимальный размер пакета для
определенного маршрута. Этот маршруто-определенный MTU заменит MTU для
интерфейса. Вы будете использовать эту опцию для маршрутов через
gateway, где связь между gateway и хостом места назначения требует
очень низкого MTU. Например, предположите что хост wanderer связан с
vlager через SLIP связь. При посылке данных от vstout до wanderer,
сетевой уровень на wanderer использовал бы пакеты до 1500 байтов,
потому что пакеты посылаются через Ethernet. SLIP связь, с другой
стороны, используется с MTU 296, так что сетевой уровень на vlager был
бы должен разбивать IP пакеты на меньшие фрагменты, которые
вписываются в 296 байтов. Если вместо этого, Вы конфигурировали бы
маршрут на vstout так, чтобы сразу использовать MTU 296, этого
относительно долгого разбиения можно избежать:
# route add wanderer gw vlager mtu 296
Обратите Внимание что mtu опция также позволяет Вам выборочно
отменить результаты "Подсети Локальны" политики (SNARL). Эта политика
-- это опция конфигурации ядра и описана в главе 4.
.
- 105 -
7. Названия сервиса и конфигурация решающего устройства.
Как уже обсуждалось в главе 3., TCP/IP сеть может полагаться на
различные схемы, чтобы преобразовать имена в адреса. Самый простой
способ, у которого еще нет никаких преимуществ над способом, где все
пространство имен было расщеплено на зоны, - таблица хостов, сохраненная
в /etc/hosts. Это полезно только для малых LAN, которые управляются
одним единственным администратором, и не имеющих никакого IP общения с
внешним миром. Формат хост файлов был уже описан в главе 6.
С другой стороны, Вы можете использовать BIND - Berkeley Internet
Name Domain Service - для перевода хостов в IP адреса. Конфигурация BIND
может быть настоящей хореей, но если только вы сделаете это, то
изменения в сетевой топологии могут быть легко измены. На Linux, как и на
многих других Unix-подобных cистемах, обслуживание обеспечивается через
программу, называемую named. При запуске, эта программа загружает множество
основных файлов в их собственный кэш, и ждет запрос от отдаленных или
локальных пользовательских процессов. Имеющиеся способы требуют, чтобы Вы
обязательно ввели имя сервера для каждого хоста.
Эта глава делает немного больше, чем просто дает приблизительный
эскиз того как работает сервер. Если Вы планируете использовать BIND в
операционной среде с более чем малыми LAN и возможно Internet
uplink, то Вы должны приобрести хорошую книгу по BIND, например Льюиса
Крикета "DNS and BIND" (см. [GETST "liu-dns"]). Возможно Вы захотите
проверить примечания, они содержатся в BIND источниках. Там также имеются
вопросы newsgroup для DNS называемые comp.protocols.tcp-ip.domains.
7.1 Библиотека решающих устройств.
Когда мы говорим о " решающем устройстве ", то мы не подрузамеваем
никакого специального применения, поэтому достаточно обратится к
библиотеке решающих устройств - системе функций, которая может быть
найдена в стандарной библиотеке C. Центральные программы являются
gethostbyname(2) и gethostbyaddr(2), которые ищут все IP адреса
принадлежащие хосту, и наоборот. Они могут быть сконфигурированы при
простом просмотре информации в хосте, при запросе ряда серверов, или при
использовании баз данных хоста NIS(а) (Network Information Service).
Другое применение, подобно smail, может включать различные драйверы для
- 106 -
любого из вышеперечисленного, и нуждается в особой осторожности.
7.1.1 Файл конфигурации хоста.
Центральный файл, который управляет вашей установкой -
host.conf. Он сообщает решающему устройству какой сервис использовать, и в
каком порядке.
Опции в host.conf должны быть на отдельных строках. Области могут
быть отделены пустым пространством (spaces или tabs). Знак (#) вводит
строку, которая простирается вплоть до следующей строки.
Доступны следующие опции:
Order: Эта опция определяет порядок в котором перебераются все
доступные услуги. Valid опция - связывает запроса сервера и
поиск хостов в /etc/hosts, и nis для NIS поисков. Любая
или все из них могут быть определены. Порядок, в которым
они появляются на строках определяет порядок в котором будут
перебираться определенные услуги.
Multi: Она может использоваться как опция. Эта опция определяет,
разрешено ли хосту в /etc/hosts иметь несколько IP адресов,