Страница:
никакого связанного IP адреса, но другие записи были найдены в DNS базе
данных, то nslookup сообщит об ошибке: "No type A records found''. Однако,
Вы можете заставить сделать запрос для записей других типов (не А), введя
"set type" команду. Например, чтобы получить SOA запись unc.edu, Вы бы
ввели:
> unc.edu
*** No address (A) records available for unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> set type=SOA
> unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
Non-authoritative answer:
unc.edu
origin = ns.unc.edu
& mcil addr = shava.ns.unc.edu
serial = 930408
refresh = 28800 (8 hours)
- 124 -
retry = 3600 (1 hour)
expire = 1209600 (14 days)
minimum ttl = 86400 (1 day)
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Таким образом Вы можете сделать запрос для MX записей, и т.д.
Использование типа ANY вернет все исходные записи, связанные с данным
именем.
> set type=MX
> unc.edu
Non-authoritative answer:
unc.edu preference = 10, mail exchanger =
lambada.oit.unc.edu
lambada.oit.unc.edu internet address = 152.2.22.80
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Практическое применение nslookup, помимо отладки, - получить текущий
список root серверов для файла named.ca. Вы можете сделать это,
запрашивая все типы NS записей, связанные с root областью:
> set typ=NS
> .
Name Server: fb0430.mathematik.th-darmstadt.de
Address: 130.83.2.30
Non-authoritative answer:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
- 125 -
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
Authoritative answers can be found from:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
NS.INTERNIC.NET internet address = 198.41.0.4
AOS.ARL.ARMY.MIL internet address = 128.63.4.82
AOS.ARL.ARMY.MIL internet address = 192.5.25.82
AOS.ARL.ARMY.MIL internet address = 26.3.0.29
C.NYSER.NET internet address = 192.33.4.12
TERP.UMD.EDU internet address = 128.8.10.90
NS.NASA.GOV internet address = 128.102.16.10
NS.NASA.GOV internet address = 192.52.195.10
NS.NASA.GOV internet address = 45.13.10.121
NIC.NORDU.NET internet address = 192.36.148.17
NS.NIC.DDN.MIL internet address = 192.112.36.4
Полная система команд, доступных с nslookup может быть получена при
использовании команды help изнутри nslookup.
7.2.5 Другие полезные инструментальные средства
Имеется несколько инструментальных средств, которые помогут Вам с
Вашими задачами как BIND администратор. Я кратко опишу два из них.
Пожалуйста обратитесь к документации, которая прилагается с этими
инструментальными средствами для выяснения того, как их использовать.
hostcvt - средство, которое помогает Вам с Вашей начальной
- 126 -
BIND конфигурации, преобразовывая ваш /etc/hosts файл в главный файл для
named. Оно генерирует оба и прямое (A) и обратное отбражение (PTR), и
заботится о псевдонимах и т.п. Конечно, оно не будет делать всю
работу за Вас, поскольку Вы можете все еще захотеть настроить значения
блокировки по втемепи в SOA записи сами, например, или прибавить MX запись
и т.п. Но оно может помочь сохранить Вам несколько таблеток аспирина.
Hostcvt - часть BIND источника, но может также быть использован как
автономный пакет на несколько Linux FTP серверах.
После установки вашего сервера, Вы можт быть захотите
проверить Вашу конфигурацию. Идеальным (и, по моему мнению тоже)
средством для этого является dnswalk, perl-based пакет который
прогуливается по вашей DNS базе данных, выискивая общие ошибки и
проверяет совместимость информации. Dnswalk был выпущен на
comp.sources.misc недавно, и должен быть доступен на всех FTP, которые
архивируют эту группу.
8. Последовательная линия IP
Порядковые протоколы линии связи, SLIP и PPP, обеспечивают
Internet connectivity для плохой связи. Кроме модема и
последовательной оборудованной панели с FIFO буфером, никакие аппаратные
средства не нужны. Использование его - не намного усложняется чем
использование mailbox, и поэтому увеличивается число частных организаций,
которые предлагают телефонный вызов по номеру IP за доступную
стоимость каждому.
Имеются оба драйвера доступные для Linux- SLIP и PPP. SLIP был
там в течение долгого времени, и работает достаточно неплохо. А PPP
драйвер был разработан совсем недавно MIchael Callahan и Al Longyear.
Этот драйвер будет описан в следующей главе.
8.1 Общие требования.
Для того, чтобы использовать SLIP или PPP, Вы должны
сконфигурировать некоторую базисную работу с сетями, как описано в
- 127 -
предыдущих главах. Наконец Вы должны установить looback interface, и
обеспечить для name resolution. При соединении с Internet, Вы несомненно
пожелаете использовать DNS. Самая простая опция - поместит адрес
сервера в Ваш resolv.conf файл; этот сервер сделает запрос как только
SLIP связь будет активизированна.
Однако, это решение не оптимально, потому что все поиски имен будут
все еще проходить через вашу SLIP/PPP связь. Если Вы волнуетесь
относительно ширины зоны, которую она требует, то Вы может также установить
cache-only сервер. Он действительно не обслуживающий, он только действует
как переключатель для всех DNS запросов, произведенных на Вашем хосте.
Преимущество этой схемы - то, что она создает кэш, так, чтобы
большинство запросов должны быть посланы через последовательные линии
только один раз. Named.boot файл для cache-only серверов, выглядит так:
; named.boot file for caching-only server
directory /var/named
primary 0.0.127.in-addr.arpa db.127.0.0 ; loopback
net
cache . db.cache ; root
servers
В дополнение к этому файлу, Вы также должны установить
db.cache файл с подходящим списком root серверов. Это описывается
ближе к концу главы "Конфигурация решающего устройства".
8.2 SLIP Операция.
Телефонный вызов IP серверов часто предлагает SLIP обслуживание
через специальные пользовательские account(ы). После login в такой account,
Вы не входите в общую оболочку; взамен программа или script оболочки -
отключат SLIP драйвер серверов последовательной линии и
сконфигурируют соответствующий сетевой interface. Затем Вы должны сделать
тоже самое в конце связи.
- 128 -
На некоторых операционных системах, SLIP драйвер -- user-space
программа; под Linux, это - часть ядра, которая делает его намного
быстрее. Требуется, однако, чтобы порядковая линия явно была бы
преобразована в SLIP режим. Это выполнено посредством tty line
discipline, SLIPDISC. Пока tty находится в обычной line discipline
(DISC0), изменятся данные только с процессвми пользователя, используя
normal read (2) и write(2) вызовы, SLIP драйвер - отключен для записи
или чтения из tty, пока все данные, поступающие на серейный порт,
будут пропущены SLIP драйвером.
SLIP драйвер непосредственно понимает число разновидностей на
SLIP протоколе. Кроме обычного SLIP, он также понимает CSLIP,
который выполняется так называемым Van Jacobson header compression на
выходящих IP блоков.(1) Дополнительно, имеются шести-битовые версии для
каждого из этих протоколов.
Простой способ преобразовать последовательную линию в SLIP режим
- использовать slattach. Допустим, что у Вас есть модем на /dev/cua3, и
Вы удачно подсоеденились на SLIP сервер. Вы затем бы выполнили:
#slattach /dev/cua3 &
Это включит line discipline cua3 к SLIPDISC, и подсоединит ее к
одному из interface SLIP сети. Если это ваша первая активная SLIP связь,
то линия будет подсоединена к sl0; вторая была бы подсоединенп к sl1, и
так далее. Текущие ядра поддерживают до восьми одновременных SLIP связей.
1. Van Jacobson header compression описан в RFC 1441.
Заданное по умолчанию оформление пакета, выбранное slattach -
CSLIP. Вы можете выбрать любой другой режим, используя -p переключатель.
Для того, чтобы использовать normal SLIP (no compression), Вы должны
использовать
# slattach -p slip /dev/cua3 &
- 129 -
Другие режимы - cslip, slip6, cslip6 (для шести-битовой версии
Slip(а)), и adaptive для адаптивного SLIP. Последние оставляют это для
ядра, чтобы выяснить, который тип оформления пакета SLIP использует remote
end.
Заметьте, что Вы обязаны использовать такое же оформление, какое
имеет Ваш peer. Например, если cowslip использует CSLIP,то Вы должны
использовать его же. Симптомы рассогласования будут такие, что ping
незначительному хосту не вернет блоки огратно. Если другой хост pings
Вас, то Вы можете увидеть сообщение типа "Can't build ICMP header'' на
вашем мониторе. Один способ избежать эту неприятность - надо
использовать adaptive SLIP.
Фактически, slattach не только не позволяет Вам отключить SLIP, но
и не позволяет отключает другие протоколы, которые используют
последовательную линию также, как и PPP или KISS (другой протокол,
используемый людьми в ham radio). Для деталей, обратитесь пожалуйста к
slattach инструкции стр. 8.
После передачи линии SLIP драйверу, Вы должны сконфигурировать
сетевой interface. И снова, мы используем стандарт ifconfig и route
команды. Предположим, что из vlager мы соединилисьс сервером crowslip.
Тогда Вы должны выполнить:
# ifconfig sl0 vlager pointopoint cowslip
# route add cowslip
# route add default gw cowslip
Первая команда конфигурирует interface как point-to-point связь к
cowslip, в то время как вторая и третья команды прибавляет route к
cowslip и задает по умолчанию маршрут, используемый cowslip как ворота.
При демонтаже SLIP связи, Вы сначала должны удалить все маршруты
cowslip, используя route c del опцией, уберите interface, и передаете
slatch сигнал hangup(повесить трубку). Впоследствии Вы должны hangup
модем, использующий Вашу терминал программу:
- 130 -
# route del default
# route del cowslip
# ifconfig sl0 down
# kill -HUP 516
8.3 Использование dip
Теперь это все просто. Однако, Вы могли бы захотеть
автоматизировать вышеупомянутые шаги так, чтобы Вы только вызывли бы
простую команду, которая выполняет все те шаги, показанные выше. Это - то,
для чего нужен dip. (2) Текущее версия этого выпуска - версия 3.3.7.
Онаисправлялась несколькими людьми, поэтому Вы уже больъе нз сможете
говорить о dip как о программе. Эти различные элементы развития будут
"обнадеживающе" слиты в будущей версии.
Dip обеспечивает интерпретатор простым языком, который обрабатывает
модем для Вас, преобразуя линию в SLIP режим, и конфигурируя interface.
Это довольно примитивно и ограниченно, но вполне подходяще для
большинства случаев. Новая версия dip(а) может описать большое количество
многосторонних языков в один день.
Чтобы было возможным сконфигурировать SLIP interface, dip требует
root привелегию. Это теперь было бы соблазнительно для того, чтобы сделать
dip setuid к root, таким образом Все пользователи могли бы соединиться с
некоторым SLIP сервером без необходимости прдеоставления им root
доступа. Это очень опасно, потому что при установке фиктивных
interface(ов) и заданных по умолчанию маршрутов dip может разрушить
направление на вашей сети. Даже еще хуже, это даст вашим пользователям
приоритет на подсоединение к любым SLIP серверам, и начать опасную атаку
на Вашу сеть. Так, если Вы хотите позволить Вашим пользователям
запустить SLIP связь, напишите маленькие программки для каждого
предполагаемого SLIP сервера, и вызовите dip со специфическим
script(ом), который установит связь. Эти программы могут быть затем
безопасно сделаны setuid root. (3)
8.3.1 Типовой Script(сценарий).
- 131 -
Типовой script аоказан на рисунке 8.3.1. Он может использоваться для
связи с cowslip, вызывая dip со script именем как аргумент:
2. Dip подразумевается Dialup IP. Он был написан Fred van Kempen.
3. Diplogin может (или должен) быть запущен setuid(ом). См. раздел в
конце этой главы.
# Sample dip script for dialing up cowslip
# Set local and remote name and address
get $local vlager
get $remote cowslip
" port cua3 # choose a serial port
speed 38400 # set speed to max
modem HAYES # set modem type
reset # reset modem and tty
flush # flush out modem response
# Prepare for dialing.
send ATQ0V1E1X1\r
wait OK 2
if $errlvl != 0 goto error
dial 41988
if $errlvl != 0 goto error
wait CONNECT 60
if $errlvl != 0 goto error
# Okay, we're connected now
sleep 3
send \r\n\r\n
wait ogin: 10
if $errlvl != 0 goto error
send Svlager\n
wait ssword: 5
- 132 -
if $errlvl != 0 goto error
send hey-jude\n
wait running 30
if $errlvl != 0 goto error
# We have logged in, and the remote side is firing up
SLIP.
print Connected to $remote with address $rmtip
default # Make this link our default
route
mode SLIP # We go to SLIP mode, too
# fall through in case of error
error:
print SLIP to $remote failed.
Рисунок 14. Типовой dip script.
# dip cowslip.dip
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
Written by Fred N. van Kempen, MicroWalt Corporation.
connected to cowslip.moo.com with addr 193.174.7.129
#
После соединения с cowslip и включением SLIP, dip отделится от
терминала и отойдет к предоставлению возможности SLIP связи. Вы сможзте "
затем начать использовать обычные сетевые услуги на SLIP связи. Чтобы
завершить связь, просто вызовите dip c опцией -k. Это пошлет hangup
сигнал dip процессу, используя id dip запись в /etc/dip.pid: (4)
# kill -k
На dip script языке, ключевые слова имеющие префикс с символом $
обозначают различные имена. Dip имеет предопределенное множество
переменных, которые будут будут перечислены ниже. $remote и $local,
- 133 -
например, содержат hostnames локального и незначительного хоста,
вовлеченных в SLIP связь.
Первых два оператора в типовом script - получают команды, которые
являются dip способом установки переменных. Здесь, локальный и
незначительный hostname установленн к vlager и cowslip, соответственно.
Следующие пять операторов устанавливают линию терминала и модема.
Reset посылает reset строку к модему; для Hayes-совместимых модемов,
это команда ATZ. Следующий оператор игнорирует реакцию модема, так что
login chat в линиях работал правильно. Сhat - довольно прост: он
просто набирает номер 41988, номер телефона cowslip, и подсоединятся
в account Svlager через пароль hey-jude. Wait команда заставит dip
ждать строку, данную как его первый аргумент; номер, данный как второй
аргумент делает wait time, если никакая строка не была получена. If команды
разбросаны в процедуре входа в систему, и проверяют то, что никакая ошибка
не появилась при выполнении этой команды.
Итоговые(final) команды, выполненные после logging, заданы по
умолчанию, которые заставят SLIP связать заданный по умолчанию маршрут
со всеми хостами, и режимом, который отключает SLIP на линии и
конфигурирует interface и таблицу маршрутов(routing tables) для Вас.
4. См. newsgroup alt.tla для более палиндромической забавы с
акронимами с тремя символами.
8.3.2 Dip ссылка.
"Хотя широко используемый, dip не был еще очень хорошо описан.
Поэтому, в этом разделе мы дадим ссылку для большинства dip команд. Вы
можете получить краткий обзор всех команд, вызывая dip в test режиме, и
вводя help команду. Для того, чтобы выяснять относительно синтаксиса
команды, Вы можете набрать его без каких-либо аргументов; конечно это не
работает с командами, которым не нужны никакие аргументы.
$ dip -t
- 134 -
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
Written by Fred N. van Kempen, MicroWalt Corporation.
DIP> help
DIP knows about the following commands:
databits default dial echo flush
get goto help if init
mode modem parity print port
reset send sleep speed stopbits
term wait
DIP> echo
Usage: echo on|off
DIP>
На всем протяжении, примеры, которые выделяют DIP> prompt
показывают, как ввести команду в test режиме, и что output
производится. Примеры, испытывающие недостаток в prompt должны
приниматься как script отрывок.
8.3.2.1 Команды Модема.
Имеется ряд rоманд, для которых dip обеспечивает конфигурацию
вашей последовательной линии и модема. Некоторые из них - очевидны,
такие как порт, который выбирает последовательный порт, и
быстродействие, биты данных, стоповые биты, и четность, которые
устанавливают общие параметры линии.
Команда модема выбирает тип модема. В настоящее время,
единственый поддерживаемый тип - HAYES. Вы должны обеспечить dip типом
модема, или он откажется набирать номер и выполнять reset команды. Reset
команда посылает reset строку на модем; используемая строка зависит от
избраннпго вами типа модема. Для Hayes-совместимых модемов, это - ATZ.
Flush code может использоваться для того, чтобы убрать все реакции,
которые модем посылает so far. Иначе chat script мог бы быть спутанным,
потому что он читает OK реакции из более ранних команд.
- 135 -
Команда init выбирает initialization строку, которую нужно набрать
перед набором номера. Значение по умолчанию для Hayes модемов - "ATE0 Q0 V1
X1'', которая включает отображение на экране команд и long result code, и
выбирает набор вслепую (нет проверки тона шкалы).
Команда dial в конце посылает initialization строку на модем и
набирает номер системы. Заданная по умолчанию dial команда для Hayes
модемов - ATD.
8.3.2.2 echo и term.
Команда ECHO служит как помощь в отладке, в которой использование
ECHO ON делает dip ECHO на консоли и все посылает к порядковому
устройству. Он может быть выключен снова, набирая ECHO OFF.
Dip также позволяет Вам оставить script режим временно и
вступить в terminal режим. В этом режиме, Вы можете использовать dip точно
так же как и обычную terminal программу, пишущей в последовательную линию
и читющей из нее. Чтобы оставить этот режим, введите " Ctrl-] ".
8.3.2.3 Get Команда.
Get команда - dip способ установки переменной. Самая простая
форма - установить переменную как константу, как это делалось в
вышеупомянутом примере. Вы можете, также запросить пользователя для
входа определяя ключевое слов вместо значения:
DIP> get $local ask
Enter the value for $local:
Третий метод состоит в том, чтобы попробовать получить
значение от отдаленного хоста. Причудливо, на первый взгляд, но это очень
полезно в некоторых случаях: некоторые SLIP серверы не позволяют Вам
использовать Ваш собственный IP адрес на SLIP связи, но будет
приписывать Вам один из объединения адресов всякий раз, когда Вы
- 136 -
набираете номер, печатая сообщение, которое информирует Вас относительно
адреса к которому Вы были назначены. Если просмотры сообщения - что -
нибудь вроде этого ``Your address: 193.174.7.202'', то следующий
фрагмент dip кода допустил бы Вас до подбора адреса:
wait address: 10
get $locip remote
8.3.2.4 Print команда
Это команда к ECHO тексту к dip консоли. Любая из dip переменных
может использоваться в print командах, такие как:
DIP> print Using port $port at speed $speed
Using port cua3 at speed 38400
8.3.2.5 Переменные имена(Variable Names)
Dip только понимает предопределенное множество переменных.
Переменное имя всегда начинается с символа доллар и должен быть написан в
нижнем регистре.
$local и $locip переменные содержат название локального имени хоста
и IP адреса. Установка hostname заставляет dip сохранить каноническиий
hostname в $local, в то же самое время приписывая $locip соответствующий
IP адрес. Аналогичная вещь случается при установке $locip.
$remote и $rmtip переменные делают тоже самое для отдаленных хостов
и адресов. $mtu содержит MTU значение для соединения.
Эти пять переменных - единственые, которые могут быть
назначены непосредственно используя get команду. Хост других переменных
может быть только установлен через соответствующие команды, но может
использовать и print опрераторы; это - $modem, $port, и $speed.
$errlvl - переменная, через которую Вы можете обращаться к
- 137 -
результату
последней выполненой команды. Уровень ошибки 0 указывает на успех,
в то
время как ненулевое значение обозначает ошибку.
8.3.2.6 If и Goto Команды
If команда - более условная штука, чем то что обычно подрузамеваят
под
if. Синтаксис:
if var op number goto label
где выражение должно быть простым сравнением между одной из
переменных $errlvl, $locip, и $rmtip. Второй операнд должен быть целым
числом; оператор op может быть один из ==,!=, <,>, < =, и > =.
Команда goto делает выполнение из script continue строки, несущей
эту метку. Метка должна появиться как первый токен в линии, и немедленно
должна оканчиваться двоеточием.
8.3.2.7 send, wait и sleep
Эти команды выполняют простые chat scripts в dip. Send
выводит его аргументы на последовательную линию. Он не поддерживает
переменные, но понимает все C-style backslash character sequences типа
\n и \b. Знак тильды (~) используется как сокращение для каретки
return/newline.
wait берет слово как аргумент, и просматривает весь вход
на последовательной линии, пока он не распознает это слово. Слово само
по себе непосредственно не может содержать пробелы. Выборочно Вы можете
дать wait timeout value как второй аргумент; если ожидаемое слово не
получено внутри в течении заданного времени, команда возвратится со
значением $errlvl равным 1.
- 138 -
Sleep оператор может быть использован для того, чтобы ждать
некоторое количество времени, например, patiently ждет любую
login последовательность для завершения. И снова, интервал определен в
секундах.
8.3.2.8 mode и default
Эти команды используются для того, чтобы переключить последовательную
линию в SLIP режим и сконфигурировать interface.
Mode команда - последняя команда, выполненная dip перед гонгом в
daemon режиме. Пока ошибка не появляется, команда ничего не возвращает.
Mode берет название протокола как аргумент. Dip постоянно распознает
SLIP и CSLIP как подходящие имена. Текущая версия dip не понимает adcptive
SLIP.
После отключения SLIP режима на последовательной линии, dip
выполняет ifconfig для того, чтобы сконфигурировать interface как
двухточечную связь(point-to-point link), и вызвать маршрут к
множеству маршрутов незначительного хоста.
Если, кроме того, script выполняет заданную по умолчанию команду
перед mode, то dip также задаcт по умолчанию точку маршрута на SLIP связь.
8.4 Запуск в server режиме
Установка вашего SLIP клиента была трудной частью.
Выполнение противоположного, а именно конфигурирование вашего хоста для
того, чтобы действовать как SLIP сервер, - намного проще.
Единственный способ сделать это - использовать dip в server режиме,
который может быть достигнут, вызывая его как diplogin. Его главный
файл конфигурации - /etc/diphosts, который присоединяет login имена к
адресу этого хоста. В качестве альтернативы, Вы можете также
использовать sliplogin, BSD-производное средство, которое описывает более
- 139 -
гибкую схему конфигурации, которая позволяет Вам выполнить shell scripts
всякий раз, когда хост соединяется и разъединяется. В настоящее время это
происходит на Бете.
Обе программы требуют, чтобы Вы установили один login account на
каждого SLIP клиента. Например, представте что Вы обеспечиваете SLIP
обслуживание Arthur Dent в Dent.beta.com, Вы могли бы создать account
названный dent, добавляя следующюю строку к вашему файлу пароля(passwd
file):
dent:*:501:60:Arthur Dent's SLIP account:/tmp:/usr/sbin/diplogin
Впоследствии, Вы должны были бы установит пароль Dent(а), утилиту
passwd.
Теперь, когда dent подключен, dip запустится как сервер. Чтобы
определить, действительно ли ему разрешено использовать SLIP, нужно
найти имя пользователя в /etc/diphosts. Этот файл подробно описывает&
птава доступа и параметры соединения для каждого SLIP пользователя.
Типовая запись для dent могла бы быть похожа на:
dent::dent.beta.com:Arthur Dent:SLIP,296
Первая из отделяемых двоеточием областей - имя пользователя под
которым он должен войти. Вторая область может содержать дополнительный
пароль (см. ниже). Третья - hostname или IP адрес вызываемого хоста.
Далее идет информационная область без специального значения (пока
еще). Последняя область описывает параметры соединения. Это - список,
отделенный запятыми, определяющий протокол (в настоящее время один из SLIP
и CSLIP), следуя за MTU.
Когда dent входит в систему, diplogin извлекает информацию
относительно него из diphosts файла, и, если вторая область не пуста,
подсказывает " Пароль внешней защиты ''. Строка, введенная пользователем -
сравнивается с (нешифрованным) паролем из diphosts. Если они не
соответствуют, то попытка входа в систему будет отклонена.
- 140 -
Это связь остается установленной, пока пользователь не
отсоединяется, или модем не бросает линию. Diplogin затем возвратит линию
к нормальной discipline line и выйдет.
Diplogin требует привилегии супер-пользователя. Если Вы
запустили dip setuid root, то Вы должны сделать diplogin отдельной
копией dip(а) вместо простой связи. Diplogin может затем быть сделан
setuid, без воздействия на состояние dip непосредственно.
9. Двухточечный Протокол(point-to-point protocol)
9.1 Распутывающий P's
Точно так же как SLIP, PPP - протокол для того, чтобы посылать
датаграммы через последовательную связь, но он адресует пару вышеупомянутых
неточностей. Он позволяет сообщающиемся сторонам обсудить опции, такие как
IP адрес и максимальный датаграмный размер во время запуска, и
обеспечивает разрешение клкента. Для каждой из этих возможностей, PPP
имеет отдельный протокол. Ниже, мы кратко рассмотрим эти базисные
стандартные блоки PPP. Это обсуждение далеко не полно; и если Вы
хотите выяснить что-либо относительно PPP, то я настоятельно
рекомендую Вам прочитать спецификацию в RFC 1548, также как и dozen или
companion RFCs. (1)
В самой основе PPP лежит управление передачей данных высокого
уровня, сокращенно HDLC(High-Level Data Link Control Protocol),(2),
который определяет границы вокруг ндивидуальных структур PPP, и
обеспечивает 16 разрядов контрольной суммы. В противоположность более
примитивному оформлению SLIP пакета, PPP способен к захвату блоков из
других протоколовтаких как IP типа IPX Novell's, или Appletalk. PPP
достигает этого, добавляя область протокола к основному HDLC.
LCP(Link Control Protocol), Протокол управления связи,
используется на вершине HDLC для оговора опций, имеющих отношение к
каналу связи, типа Maximum Receive Unit (MRU), которая заявляет
- 141 -
максимальный размер датаграммы одной стороны связи.
данных, то nslookup сообщит об ошибке: "No type A records found''. Однако,
Вы можете заставить сделать запрос для записей других типов (не А), введя
"set type" команду. Например, чтобы получить SOA запись unc.edu, Вы бы
ввели:
> unc.edu
*** No address (A) records available for unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
> set type=SOA
> unc.edu
Name Server: rs10.hrz.th-darmstadt.de
Address: 130.83.56.60
Non-authoritative answer:
unc.edu
origin = ns.unc.edu
& mcil addr = shava.ns.unc.edu
serial = 930408
refresh = 28800 (8 hours)
- 124 -
retry = 3600 (1 hour)
expire = 1209600 (14 days)
minimum ttl = 86400 (1 day)
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Таким образом Вы можете сделать запрос для MX записей, и т.д.
Использование типа ANY вернет все исходные записи, связанные с данным
именем.
> set type=MX
> unc.edu
Non-authoritative answer:
unc.edu preference = 10, mail exchanger =
lambada.oit.unc.edu
lambada.oit.unc.edu internet address = 152.2.22.80
Authoritative answers can be found from:
UNC.EDU nameserver = SAMBA.ACS.UNC.EDU
SAMBA.ACS.UNC.EDU internet address = 128.109.157.30
Практическое применение nslookup, помимо отладки, - получить текущий
список root серверов для файла named.ca. Вы можете сделать это,
запрашивая все типы NS записей, связанные с root областью:
> set typ=NS
> .
Name Server: fb0430.mathematik.th-darmstadt.de
Address: 130.83.2.30
Non-authoritative answer:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
- 125 -
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
Authoritative answers can be found from:
(root) nameserver = NS.INTERNIC.NET
(root) nameserver = AOS.ARL.ARMY.MIL
(root) nameserver = C.NYSER.NET
(root) nameserver = TERP.UMD.EDU
(root) nameserver = NS.NASA.GOV
(root) nameserver = NIC.NORDU.NET
(root) nameserver = NS.NIC.DDN.MIL
NS.INTERNIC.NET internet address = 198.41.0.4
AOS.ARL.ARMY.MIL internet address = 128.63.4.82
AOS.ARL.ARMY.MIL internet address = 192.5.25.82
AOS.ARL.ARMY.MIL internet address = 26.3.0.29
C.NYSER.NET internet address = 192.33.4.12
TERP.UMD.EDU internet address = 128.8.10.90
NS.NASA.GOV internet address = 128.102.16.10
NS.NASA.GOV internet address = 192.52.195.10
NS.NASA.GOV internet address = 45.13.10.121
NIC.NORDU.NET internet address = 192.36.148.17
NS.NIC.DDN.MIL internet address = 192.112.36.4
Полная система команд, доступных с nslookup может быть получена при
использовании команды help изнутри nslookup.
7.2.5 Другие полезные инструментальные средства
Имеется несколько инструментальных средств, которые помогут Вам с
Вашими задачами как BIND администратор. Я кратко опишу два из них.
Пожалуйста обратитесь к документации, которая прилагается с этими
инструментальными средствами для выяснения того, как их использовать.
hostcvt - средство, которое помогает Вам с Вашей начальной
- 126 -
BIND конфигурации, преобразовывая ваш /etc/hosts файл в главный файл для
named. Оно генерирует оба и прямое (A) и обратное отбражение (PTR), и
заботится о псевдонимах и т.п. Конечно, оно не будет делать всю
работу за Вас, поскольку Вы можете все еще захотеть настроить значения
блокировки по втемепи в SOA записи сами, например, или прибавить MX запись
и т.п. Но оно может помочь сохранить Вам несколько таблеток аспирина.
Hostcvt - часть BIND источника, но может также быть использован как
автономный пакет на несколько Linux FTP серверах.
После установки вашего сервера, Вы можт быть захотите
проверить Вашу конфигурацию. Идеальным (и, по моему мнению тоже)
средством для этого является dnswalk, perl-based пакет который
прогуливается по вашей DNS базе данных, выискивая общие ошибки и
проверяет совместимость информации. Dnswalk был выпущен на
comp.sources.misc недавно, и должен быть доступен на всех FTP, которые
архивируют эту группу.
8. Последовательная линия IP
Порядковые протоколы линии связи, SLIP и PPP, обеспечивают
Internet connectivity для плохой связи. Кроме модема и
последовательной оборудованной панели с FIFO буфером, никакие аппаратные
средства не нужны. Использование его - не намного усложняется чем
использование mailbox, и поэтому увеличивается число частных организаций,
которые предлагают телефонный вызов по номеру IP за доступную
стоимость каждому.
Имеются оба драйвера доступные для Linux- SLIP и PPP. SLIP был
там в течение долгого времени, и работает достаточно неплохо. А PPP
драйвер был разработан совсем недавно MIchael Callahan и Al Longyear.
Этот драйвер будет описан в следующей главе.
8.1 Общие требования.
Для того, чтобы использовать SLIP или PPP, Вы должны
сконфигурировать некоторую базисную работу с сетями, как описано в
- 127 -
предыдущих главах. Наконец Вы должны установить looback interface, и
обеспечить для name resolution. При соединении с Internet, Вы несомненно
пожелаете использовать DNS. Самая простая опция - поместит адрес
сервера в Ваш resolv.conf файл; этот сервер сделает запрос как только
SLIP связь будет активизированна.
Однако, это решение не оптимально, потому что все поиски имен будут
все еще проходить через вашу SLIP/PPP связь. Если Вы волнуетесь
относительно ширины зоны, которую она требует, то Вы может также установить
cache-only сервер. Он действительно не обслуживающий, он только действует
как переключатель для всех DNS запросов, произведенных на Вашем хосте.
Преимущество этой схемы - то, что она создает кэш, так, чтобы
большинство запросов должны быть посланы через последовательные линии
только один раз. Named.boot файл для cache-only серверов, выглядит так:
; named.boot file for caching-only server
directory /var/named
primary 0.0.127.in-addr.arpa db.127.0.0 ; loopback
net
cache . db.cache ; root
servers
В дополнение к этому файлу, Вы также должны установить
db.cache файл с подходящим списком root серверов. Это описывается
ближе к концу главы "Конфигурация решающего устройства".
8.2 SLIP Операция.
Телефонный вызов IP серверов часто предлагает SLIP обслуживание
через специальные пользовательские account(ы). После login в такой account,
Вы не входите в общую оболочку; взамен программа или script оболочки -
отключат SLIP драйвер серверов последовательной линии и
сконфигурируют соответствующий сетевой interface. Затем Вы должны сделать
тоже самое в конце связи.
- 128 -
На некоторых операционных системах, SLIP драйвер -- user-space
программа; под Linux, это - часть ядра, которая делает его намного
быстрее. Требуется, однако, чтобы порядковая линия явно была бы
преобразована в SLIP режим. Это выполнено посредством tty line
discipline, SLIPDISC. Пока tty находится в обычной line discipline
(DISC0), изменятся данные только с процессвми пользователя, используя
normal read (2) и write(2) вызовы, SLIP драйвер - отключен для записи
или чтения из tty, пока все данные, поступающие на серейный порт,
будут пропущены SLIP драйвером.
SLIP драйвер непосредственно понимает число разновидностей на
SLIP протоколе. Кроме обычного SLIP, он также понимает CSLIP,
который выполняется так называемым Van Jacobson header compression на
выходящих IP блоков.(1) Дополнительно, имеются шести-битовые версии для
каждого из этих протоколов.
Простой способ преобразовать последовательную линию в SLIP режим
- использовать slattach. Допустим, что у Вас есть модем на /dev/cua3, и
Вы удачно подсоеденились на SLIP сервер. Вы затем бы выполнили:
#slattach /dev/cua3 &
Это включит line discipline cua3 к SLIPDISC, и подсоединит ее к
одному из interface SLIP сети. Если это ваша первая активная SLIP связь,
то линия будет подсоединена к sl0; вторая была бы подсоединенп к sl1, и
так далее. Текущие ядра поддерживают до восьми одновременных SLIP связей.
1. Van Jacobson header compression описан в RFC 1441.
Заданное по умолчанию оформление пакета, выбранное slattach -
CSLIP. Вы можете выбрать любой другой режим, используя -p переключатель.
Для того, чтобы использовать normal SLIP (no compression), Вы должны
использовать
# slattach -p slip /dev/cua3 &
- 129 -
Другие режимы - cslip, slip6, cslip6 (для шести-битовой версии
Slip(а)), и adaptive для адаптивного SLIP. Последние оставляют это для
ядра, чтобы выяснить, который тип оформления пакета SLIP использует remote
end.
Заметьте, что Вы обязаны использовать такое же оформление, какое
имеет Ваш peer. Например, если cowslip использует CSLIP,то Вы должны
использовать его же. Симптомы рассогласования будут такие, что ping
незначительному хосту не вернет блоки огратно. Если другой хост pings
Вас, то Вы можете увидеть сообщение типа "Can't build ICMP header'' на
вашем мониторе. Один способ избежать эту неприятность - надо
использовать adaptive SLIP.
Фактически, slattach не только не позволяет Вам отключить SLIP, но
и не позволяет отключает другие протоколы, которые используют
последовательную линию также, как и PPP или KISS (другой протокол,
используемый людьми в ham radio). Для деталей, обратитесь пожалуйста к
slattach инструкции стр. 8.
После передачи линии SLIP драйверу, Вы должны сконфигурировать
сетевой interface. И снова, мы используем стандарт ifconfig и route
команды. Предположим, что из vlager мы соединилисьс сервером crowslip.
Тогда Вы должны выполнить:
# ifconfig sl0 vlager pointopoint cowslip
# route add cowslip
# route add default gw cowslip
Первая команда конфигурирует interface как point-to-point связь к
cowslip, в то время как вторая и третья команды прибавляет route к
cowslip и задает по умолчанию маршрут, используемый cowslip как ворота.
При демонтаже SLIP связи, Вы сначала должны удалить все маршруты
cowslip, используя route c del опцией, уберите interface, и передаете
slatch сигнал hangup(повесить трубку). Впоследствии Вы должны hangup
модем, использующий Вашу терминал программу:
- 130 -
# route del default
# route del cowslip
# ifconfig sl0 down
# kill -HUP 516
8.3 Использование dip
Теперь это все просто. Однако, Вы могли бы захотеть
автоматизировать вышеупомянутые шаги так, чтобы Вы только вызывли бы
простую команду, которая выполняет все те шаги, показанные выше. Это - то,
для чего нужен dip. (2) Текущее версия этого выпуска - версия 3.3.7.
Онаисправлялась несколькими людьми, поэтому Вы уже больъе нз сможете
говорить о dip как о программе. Эти различные элементы развития будут
"обнадеживающе" слиты в будущей версии.
Dip обеспечивает интерпретатор простым языком, который обрабатывает
модем для Вас, преобразуя линию в SLIP режим, и конфигурируя interface.
Это довольно примитивно и ограниченно, но вполне подходяще для
большинства случаев. Новая версия dip(а) может описать большое количество
многосторонних языков в один день.
Чтобы было возможным сконфигурировать SLIP interface, dip требует
root привелегию. Это теперь было бы соблазнительно для того, чтобы сделать
dip setuid к root, таким образом Все пользователи могли бы соединиться с
некоторым SLIP сервером без необходимости прдеоставления им root
доступа. Это очень опасно, потому что при установке фиктивных
interface(ов) и заданных по умолчанию маршрутов dip может разрушить
направление на вашей сети. Даже еще хуже, это даст вашим пользователям
приоритет на подсоединение к любым SLIP серверам, и начать опасную атаку
на Вашу сеть. Так, если Вы хотите позволить Вашим пользователям
запустить SLIP связь, напишите маленькие программки для каждого
предполагаемого SLIP сервера, и вызовите dip со специфическим
script(ом), который установит связь. Эти программы могут быть затем
безопасно сделаны setuid root. (3)
8.3.1 Типовой Script(сценарий).
- 131 -
Типовой script аоказан на рисунке 8.3.1. Он может использоваться для
связи с cowslip, вызывая dip со script именем как аргумент:
2. Dip подразумевается Dialup IP. Он был написан Fred van Kempen.
3. Diplogin может (или должен) быть запущен setuid(ом). См. раздел в
конце этой главы.
# Sample dip script for dialing up cowslip
# Set local and remote name and address
get $local vlager
get $remote cowslip
" port cua3 # choose a serial port
speed 38400 # set speed to max
modem HAYES # set modem type
reset # reset modem and tty
flush # flush out modem response
# Prepare for dialing.
send ATQ0V1E1X1\r
wait OK 2
if $errlvl != 0 goto error
dial 41988
if $errlvl != 0 goto error
wait CONNECT 60
if $errlvl != 0 goto error
# Okay, we're connected now
sleep 3
send \r\n\r\n
wait ogin: 10
if $errlvl != 0 goto error
send Svlager\n
wait ssword: 5
- 132 -
if $errlvl != 0 goto error
send hey-jude\n
wait running 30
if $errlvl != 0 goto error
# We have logged in, and the remote side is firing up
SLIP.
print Connected to $remote with address $rmtip
default # Make this link our default
route
mode SLIP # We go to SLIP mode, too
# fall through in case of error
error:
print SLIP to $remote failed.
Рисунок 14. Типовой dip script.
# dip cowslip.dip
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
Written by Fred N. van Kempen, MicroWalt Corporation.
connected to cowslip.moo.com with addr 193.174.7.129
#
После соединения с cowslip и включением SLIP, dip отделится от
терминала и отойдет к предоставлению возможности SLIP связи. Вы сможзте "
затем начать использовать обычные сетевые услуги на SLIP связи. Чтобы
завершить связь, просто вызовите dip c опцией -k. Это пошлет hangup
сигнал dip процессу, используя id dip запись в /etc/dip.pid: (4)
# kill -k
На dip script языке, ключевые слова имеющие префикс с символом $
обозначают различные имена. Dip имеет предопределенное множество
переменных, которые будут будут перечислены ниже. $remote и $local,
- 133 -
например, содержат hostnames локального и незначительного хоста,
вовлеченных в SLIP связь.
Первых два оператора в типовом script - получают команды, которые
являются dip способом установки переменных. Здесь, локальный и
незначительный hostname установленн к vlager и cowslip, соответственно.
Следующие пять операторов устанавливают линию терминала и модема.
Reset посылает reset строку к модему; для Hayes-совместимых модемов,
это команда ATZ. Следующий оператор игнорирует реакцию модема, так что
login chat в линиях работал правильно. Сhat - довольно прост: он
просто набирает номер 41988, номер телефона cowslip, и подсоединятся
в account Svlager через пароль hey-jude. Wait команда заставит dip
ждать строку, данную как его первый аргумент; номер, данный как второй
аргумент делает wait time, если никакая строка не была получена. If команды
разбросаны в процедуре входа в систему, и проверяют то, что никакая ошибка
не появилась при выполнении этой команды.
Итоговые(final) команды, выполненные после logging, заданы по
умолчанию, которые заставят SLIP связать заданный по умолчанию маршрут
со всеми хостами, и режимом, который отключает SLIP на линии и
конфигурирует interface и таблицу маршрутов(routing tables) для Вас.
4. См. newsgroup alt.tla для более палиндромической забавы с
акронимами с тремя символами.
8.3.2 Dip ссылка.
"Хотя широко используемый, dip не был еще очень хорошо описан.
Поэтому, в этом разделе мы дадим ссылку для большинства dip команд. Вы
можете получить краткий обзор всех команд, вызывая dip в test режиме, и
вводя help команду. Для того, чтобы выяснять относительно синтаксиса
команды, Вы можете набрать его без каких-либо аргументов; конечно это не
работает с командами, которым не нужны никакие аргументы.
$ dip -t
- 134 -
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)
Written by Fred N. van Kempen, MicroWalt Corporation.
DIP> help
DIP knows about the following commands:
databits default dial echo flush
get goto help if init
mode modem parity print port
reset send sleep speed stopbits
term wait
DIP> echo
Usage: echo on|off
DIP>
На всем протяжении, примеры, которые выделяют DIP> prompt
показывают, как ввести команду в test режиме, и что output
производится. Примеры, испытывающие недостаток в prompt должны
приниматься как script отрывок.
8.3.2.1 Команды Модема.
Имеется ряд rоманд, для которых dip обеспечивает конфигурацию
вашей последовательной линии и модема. Некоторые из них - очевидны,
такие как порт, который выбирает последовательный порт, и
быстродействие, биты данных, стоповые биты, и четность, которые
устанавливают общие параметры линии.
Команда модема выбирает тип модема. В настоящее время,
единственый поддерживаемый тип - HAYES. Вы должны обеспечить dip типом
модема, или он откажется набирать номер и выполнять reset команды. Reset
команда посылает reset строку на модем; используемая строка зависит от
избраннпго вами типа модема. Для Hayes-совместимых модемов, это - ATZ.
Flush code может использоваться для того, чтобы убрать все реакции,
которые модем посылает so far. Иначе chat script мог бы быть спутанным,
потому что он читает OK реакции из более ранних команд.
- 135 -
Команда init выбирает initialization строку, которую нужно набрать
перед набором номера. Значение по умолчанию для Hayes модемов - "ATE0 Q0 V1
X1'', которая включает отображение на экране команд и long result code, и
выбирает набор вслепую (нет проверки тона шкалы).
Команда dial в конце посылает initialization строку на модем и
набирает номер системы. Заданная по умолчанию dial команда для Hayes
модемов - ATD.
8.3.2.2 echo и term.
Команда ECHO служит как помощь в отладке, в которой использование
ECHO ON делает dip ECHO на консоли и все посылает к порядковому
устройству. Он может быть выключен снова, набирая ECHO OFF.
Dip также позволяет Вам оставить script режим временно и
вступить в terminal режим. В этом режиме, Вы можете использовать dip точно
так же как и обычную terminal программу, пишущей в последовательную линию
и читющей из нее. Чтобы оставить этот режим, введите " Ctrl-] ".
8.3.2.3 Get Команда.
Get команда - dip способ установки переменной. Самая простая
форма - установить переменную как константу, как это делалось в
вышеупомянутом примере. Вы можете, также запросить пользователя для
входа определяя ключевое слов вместо значения:
DIP> get $local ask
Enter the value for $local:
Третий метод состоит в том, чтобы попробовать получить
значение от отдаленного хоста. Причудливо, на первый взгляд, но это очень
полезно в некоторых случаях: некоторые SLIP серверы не позволяют Вам
использовать Ваш собственный IP адрес на SLIP связи, но будет
приписывать Вам один из объединения адресов всякий раз, когда Вы
- 136 -
набираете номер, печатая сообщение, которое информирует Вас относительно
адреса к которому Вы были назначены. Если просмотры сообщения - что -
нибудь вроде этого ``Your address: 193.174.7.202'', то следующий
фрагмент dip кода допустил бы Вас до подбора адреса:
wait address: 10
get $locip remote
8.3.2.4 Print команда
Это команда к ECHO тексту к dip консоли. Любая из dip переменных
может использоваться в print командах, такие как:
DIP> print Using port $port at speed $speed
Using port cua3 at speed 38400
8.3.2.5 Переменные имена(Variable Names)
Dip только понимает предопределенное множество переменных.
Переменное имя всегда начинается с символа доллар и должен быть написан в
нижнем регистре.
$local и $locip переменные содержат название локального имени хоста
и IP адреса. Установка hostname заставляет dip сохранить каноническиий
hostname в $local, в то же самое время приписывая $locip соответствующий
IP адрес. Аналогичная вещь случается при установке $locip.
$remote и $rmtip переменные делают тоже самое для отдаленных хостов
и адресов. $mtu содержит MTU значение для соединения.
Эти пять переменных - единственые, которые могут быть
назначены непосредственно используя get команду. Хост других переменных
может быть только установлен через соответствующие команды, но может
использовать и print опрераторы; это - $modem, $port, и $speed.
$errlvl - переменная, через которую Вы можете обращаться к
- 137 -
результату
последней выполненой команды. Уровень ошибки 0 указывает на успех,
в то
время как ненулевое значение обозначает ошибку.
8.3.2.6 If и Goto Команды
If команда - более условная штука, чем то что обычно подрузамеваят
под
if. Синтаксис:
if var op number goto label
где выражение должно быть простым сравнением между одной из
переменных $errlvl, $locip, и $rmtip. Второй операнд должен быть целым
числом; оператор op может быть один из ==,!=, <,>, < =, и > =.
Команда goto делает выполнение из script continue строки, несущей
эту метку. Метка должна появиться как первый токен в линии, и немедленно
должна оканчиваться двоеточием.
8.3.2.7 send, wait и sleep
Эти команды выполняют простые chat scripts в dip. Send
выводит его аргументы на последовательную линию. Он не поддерживает
переменные, но понимает все C-style backslash character sequences типа
\n и \b. Знак тильды (~) используется как сокращение для каретки
return/newline.
wait берет слово как аргумент, и просматривает весь вход
на последовательной линии, пока он не распознает это слово. Слово само
по себе непосредственно не может содержать пробелы. Выборочно Вы можете
дать wait timeout value как второй аргумент; если ожидаемое слово не
получено внутри в течении заданного времени, команда возвратится со
значением $errlvl равным 1.
- 138 -
Sleep оператор может быть использован для того, чтобы ждать
некоторое количество времени, например, patiently ждет любую
login последовательность для завершения. И снова, интервал определен в
секундах.
8.3.2.8 mode и default
Эти команды используются для того, чтобы переключить последовательную
линию в SLIP режим и сконфигурировать interface.
Mode команда - последняя команда, выполненная dip перед гонгом в
daemon режиме. Пока ошибка не появляется, команда ничего не возвращает.
Mode берет название протокола как аргумент. Dip постоянно распознает
SLIP и CSLIP как подходящие имена. Текущая версия dip не понимает adcptive
SLIP.
После отключения SLIP режима на последовательной линии, dip
выполняет ifconfig для того, чтобы сконфигурировать interface как
двухточечную связь(point-to-point link), и вызвать маршрут к
множеству маршрутов незначительного хоста.
Если, кроме того, script выполняет заданную по умолчанию команду
перед mode, то dip также задаcт по умолчанию точку маршрута на SLIP связь.
8.4 Запуск в server режиме
Установка вашего SLIP клиента была трудной частью.
Выполнение противоположного, а именно конфигурирование вашего хоста для
того, чтобы действовать как SLIP сервер, - намного проще.
Единственный способ сделать это - использовать dip в server режиме,
который может быть достигнут, вызывая его как diplogin. Его главный
файл конфигурации - /etc/diphosts, который присоединяет login имена к
адресу этого хоста. В качестве альтернативы, Вы можете также
использовать sliplogin, BSD-производное средство, которое описывает более
- 139 -
гибкую схему конфигурации, которая позволяет Вам выполнить shell scripts
всякий раз, когда хост соединяется и разъединяется. В настоящее время это
происходит на Бете.
Обе программы требуют, чтобы Вы установили один login account на
каждого SLIP клиента. Например, представте что Вы обеспечиваете SLIP
обслуживание Arthur Dent в Dent.beta.com, Вы могли бы создать account
названный dent, добавляя следующюю строку к вашему файлу пароля(passwd
file):
dent:*:501:60:Arthur Dent's SLIP account:/tmp:/usr/sbin/diplogin
Впоследствии, Вы должны были бы установит пароль Dent(а), утилиту
passwd.
Теперь, когда dent подключен, dip запустится как сервер. Чтобы
определить, действительно ли ему разрешено использовать SLIP, нужно
найти имя пользователя в /etc/diphosts. Этот файл подробно описывает&
птава доступа и параметры соединения для каждого SLIP пользователя.
Типовая запись для dent могла бы быть похожа на:
dent::dent.beta.com:Arthur Dent:SLIP,296
Первая из отделяемых двоеточием областей - имя пользователя под
которым он должен войти. Вторая область может содержать дополнительный
пароль (см. ниже). Третья - hostname или IP адрес вызываемого хоста.
Далее идет информационная область без специального значения (пока
еще). Последняя область описывает параметры соединения. Это - список,
отделенный запятыми, определяющий протокол (в настоящее время один из SLIP
и CSLIP), следуя за MTU.
Когда dent входит в систему, diplogin извлекает информацию
относительно него из diphosts файла, и, если вторая область не пуста,
подсказывает " Пароль внешней защиты ''. Строка, введенная пользователем -
сравнивается с (нешифрованным) паролем из diphosts. Если они не
соответствуют, то попытка входа в систему будет отклонена.
- 140 -
Это связь остается установленной, пока пользователь не
отсоединяется, или модем не бросает линию. Diplogin затем возвратит линию
к нормальной discipline line и выйдет.
Diplogin требует привилегии супер-пользователя. Если Вы
запустили dip setuid root, то Вы должны сделать diplogin отдельной
копией dip(а) вместо простой связи. Diplogin может затем быть сделан
setuid, без воздействия на состояние dip непосредственно.
9. Двухточечный Протокол(point-to-point protocol)
9.1 Распутывающий P's
Точно так же как SLIP, PPP - протокол для того, чтобы посылать
датаграммы через последовательную связь, но он адресует пару вышеупомянутых
неточностей. Он позволяет сообщающиемся сторонам обсудить опции, такие как
IP адрес и максимальный датаграмный размер во время запуска, и
обеспечивает разрешение клкента. Для каждой из этих возможностей, PPP
имеет отдельный протокол. Ниже, мы кратко рассмотрим эти базисные
стандартные блоки PPP. Это обсуждение далеко не полно; и если Вы
хотите выяснить что-либо относительно PPP, то я настоятельно
рекомендую Вам прочитать спецификацию в RFC 1548, также как и dozen или
companion RFCs. (1)
В самой основе PPP лежит управление передачей данных высокого
уровня, сокращенно HDLC(High-Level Data Link Control Protocol),(2),
который определяет границы вокруг ндивидуальных структур PPP, и
обеспечивает 16 разрядов контрольной суммы. В противоположность более
примитивному оформлению SLIP пакета, PPP способен к захвату блоков из
других протоколовтаких как IP типа IPX Novell's, или Appletalk. PPP
достигает этого, добавляя область протокола к основному HDLC.
LCP(Link Control Protocol), Протокол управления связи,
используется на вершине HDLC для оговора опций, имеющих отношение к
каналу связи, типа Maximum Receive Unit (MRU), которая заявляет
- 141 -
максимальный размер датаграммы одной стороны связи.