В качестве альтернативы таким аппаратным
сетевым соединениям, как Ethernet, можно
воспользоваться модемом и телефонными линиями.
Существуют два протокола, которые позволяют
передавать IP-сообщения по телефонным линиям. Это
протокол SLIP (Serial Line Internet Protocol - межсетевой
протокол для последовательного канала) и
протокол РРР (Point-to-Point Protocol - протокол
"точка-точка"). SLIP - старый протокол, а РРР -
более современный, но очень стабильный. Он
применяется во многих высокоскоростных
соединениях, используемых провайдерами Internet.
Протоколы SLIP и РРР предназначены специально для
тех пользователей, которые подключают свои
системы к Internet через модем и телефонную линию.
Как правило, соединение устанавливается с
провайдером Internet, который предоставляет для
этого свои собственные системы.
Провайдер Internet использует на конкретной линии
либо протокол SLIP, либо РРР, поэтому сначала нужно
выяснить, какой протокол используется.
Например, фирма Netcom для передачи данных
использует протокол РРР, а фирма Shell передает
большие объемы информации с использованием
протокола SLIP.
Настройка SLIP- и РРР-соединения может оказаться
сложной задачей. Подробные пояснения можно найти
в документах PPP-HOWTO и Net-2-HOWTO в каталоге /usr/doc/HOWTO.
Кроме того, имеются инструкции на Web-странице,
расположенной в каталоге /usr/doc/HTML.
Чтобы установить соединение по протоколу SLIP
или РРР, необходимо активизировать поддержку
системой протокола TCP/IP и конфигурировать
закольцовывающий интерфейс. Система Caldera Network
Desktop делает это автоматически. Провайдеры Internet
обычно имеют в своем распоряжении серверы
доменных имен, услугами которых можно
воспользоваться. Необходимо выяснить IP-адреса
этих серверов и ввести их в файл /etc/resolv.conf.
Для ввода адресов можно воспользоваться
утилитой netcfg. В любом случае следует с
помощью команды more или команды cat вывести
содержимое файла /etc/resolv.conf на экран и
проверить, введены ли в него доменные имена
серверов. Если их там нет, то ни один вводимый
вами адрес не будет распознан.
Протокол "точка-точка" (РРР) - это более
новый универсальный протокол, который
завоевывает все большую популярность. Он
обеспечивает гораздо более стабильное
соединение и может поддерживать работу целого
ряда сетевых протоколов помимо ТР. Основную
часть работы РРР выполняет автоматически. В
отличие от SLIP, здесь не нужно для каждой операции
создавать сценарий с целым набором команд. РРР
автоматически определяет удаленные IP-адреса, как
статические, так и динамические.
РРР-соединение устанавливается с помощью
программы pppd. Эта программа
конфигурирует соединение, устанавливает лимиты
MTU и получает IP-адреса. В отличие от dip,
однако, pppd не устанавливает
предварительно соединение. Она не набирает через
модем номер телефона провайдера и не
предоставляет информацию о регистрационных
именах и паролях. Чтобы использовать pppd,
нужно сначала установить соединение с удаленной
хост-системой. Это можно сделать с помощью
программы chat, в которой используются
свои опции и форматы. Сначала эта программа
устанавливает соединение, а затем pppd
конфигурирует его. Однако нет необходимости
сначала вызывать chat, а затем pppd.
Дело в том, что pppd в качестве аргумента
использует имя программы, которая устанавливает
соединение, в данном случае chat. Это имя
нужно просто указать вместе с опциями команды chat
в командной строке pppd. По сути дела, вся
операция установления соединения с помощью pppd
выполняется в одной командной строке, в
отличие от dip-сценария.
Программа pppd различает статические и
динамические IP-адреса, проверяя, включил ли
пользователь набор IP-адресов в качестве
аргумента в командную строку, а также по наличию
опции noipdefault. Если IP-адреса указаны, pppd
считает, что это статическое соединение, и
использует данные адреса как удаленный и
локальный для установления статического
соединения. Если адреса не указаны, pppd
использует удаленный и локальный адреса,
предусмотренные по умолчанию. Локальный адрес по
умолчанию - это IP-адрес локальной системы,
указанный в файле /etc/hostname. Удаленный
адрес по умолчанию программа пытается
определить из перечня адресов, указанного в
файле /etc/hosts. Для того чтобы pppd
считала, что используются динамические адреса,
определяемые при установлении соединения,
применяется опция noipdefault и адреса не
указываются. Таким образом, опция noipdefault дает
команде pppd возможность не использовать
адреса, предусмотренные по умолчанию. Поскольку
адреса не указаны, pppd считает, что
динамические адреса будут получены от удаленной
системы.
Локальный и удаленный статические адреса
вводятся в строке рядом через двоеточие, при этом
локальный адрес указывается первым. В следующем
примере задается локальный адрес 199.35.209.72 и
удаленный адрес 163.179.4.22.
199.35.209.72:163.17 9.4.2 2
Если используется динамический удаленный
адрес, можно указать только локальный адрес с
двоеточием. Программа pppd использует
этот локальный адрес, а удаленный адрес получает
от системы провайдера.
199.35.209.72:
Поскольку локальный адрес, указанный в файле /etc/hostname,
- это ваш локальный адрес по умолчанию, вводить
его в командной строке не нужно. Просто введите
команду pppd без адресов. Программа
использует указанный в hostname адрес как
локальный, а удаленный адрес получит от
удаленной системы.
Большинство провайдеров Internet, которые
пользуются динамическими адресами, выдают своим
клиентам и локальные, и удаленные адреса. В этом
случае не нужно вводить вообще никаких адресов.
Необходимо лишь установить опцию noifdefault.
Она не позволит программе использовать
указанный в файле hostname адрес в качестве
локального адреса по умолчанию. При отсутствии
обоих адресов программа pppd получит их
от удаленной системы.
chat-сценарии
Наиболее эффективный способ использования
программы chat - вызов chat-сценария. Для
установления соединения chat должна
получить всю необходимую информацию о нем: номер
телефона, регистрационное приглашение,
идентификатор пользователя, приглашение для
ввода пароля, пароль и строку инициализации
модема. Всю эту информацию можно ввести в
командной строке после команды chat, однако в
результате команда станет очень длинной и
сложной. Более удобный способ - создать файл с
необходимой для работы chat информацией,
а затем указать в команде chat опцию -f
и имя этого файла. Такие файлы называются
chat-сценариями.
Chat-сценарий состоит из одной строки (line),
разбитой на сегменты, соответствующие этапам
процедуры соединения. Каждый сегмент состоит из
строковой пары "ожидание-ответ". Первая
часть пары - это то, что вы ожидаете получить, а
вторая - то, что вы посылаете. Если получать
нечего, то вводится пустое строковое значение,
" ". Первый сегмент может быть строкой
инициализации модема. Поскольку на первом этапе
от модема никакой информации не поступает, то
сегмент начинается пустым строковым значением.
Затем указываются коды инициализации модема. При
вводе кодов в строку инициализации необходимо
все коды, начинающиеся со знака &, предварить
обратной косой чертой, поскольку в chat знак &
означает прерывание и приводит к остановке
процесса. В приведенном ниже примере обратная
косая черта стоит перед строковым значением &F2.
"" AT\&F2V1L0
В следующем сегменте сначала ожидается
положительный ответ от модема (ОК), что означает
отсутствие проблем с инициализацией. Затем можно
набирать номер телефона.
OK ATDT5558888
В ответ, как правило, приходит строка
подтверждения соединения. В разных системах эти
строки отличаются. Более того, строки
подтверждения соединения может не быть вообще.
Во многих системах строкой подтверждения
соединения является слово CONNECT, в некоторых это
скорость передачи в бодах и т.д. В нашем примере
пользователь получает в качестве строки
подтверждения соединения значение скорости
передачи. В ответ на строку подтверждения
соединения, как правило, ничего не посылается, но
может быть послан символ новой строки. Как уже
говорилось, отсутствие ответа обозначается
пустым строковым значением, т.е. двумя двойными
кавычками (" "). Новая строка (line) в
chat-сценарии обозначается комбинацией символов \n.
(Некоторые удаленные системы требуют DOS-версии
символа новой строки, которая представляет собой
последовательность символа возврата каретки и
символа перехода на новую строку, \r\n.)
Перечень специальных символов chat-сценария
приведен в табл. 6. В следующем примере в ответ
посылается символ новой строки.
57600 \n
После строки соединения удаленная система
обычно посылает регистрационное приглашение.
Часто это слово "login" с двоеточием. Вам нужны
только последние несколько символов, ogin:.
He забывайте про двоеточие. В ответ нужно послать
свой идентификатор пользователя. В зависимости
от того, с каким провайдером Internet вы работаете,
возможно, придется добавлять к идентификатору
символ новой строки, например mylogin\n.
Провайдер может потребовать включения и других
символов, допустим, начального знака $.
ogin: mylogin
После регистрационного имени следует ожидать
получения приглашения ввести пароль. Опять-таки
нужны только последние несколько символов, word:. В
ответ нужно сообщить свой пароль. При
необходимости добавьте символ \n.
word: mypass
Все это помещается в одной строке. Теперь у вас
есть последовательность слов, обозначающих
осуществляемые попеременно прием и передачу
текста.
"" AT\&F2V1LO OK ATDT8888888 CONNECT \n
login: mylogin word: mypass
Если вы не инициализируете модем, можете
попробовать немного измененный вариант:
"" ATDT8888888 CONNECT \n login: mylogin
word: mypass
Если ваш провайдер не требует, чтобы при
получении слова CONNECT указывался символ новой
строки, вы можете опустить его:
"" ATDT8888888 login: mylogin word: mypass
В chat-сценарии пары приема-передачи разрешается
разбивать на отдельные строки, по одной паре на
строку. Записи каждой пары разделяются пробелами
или знакми табуляции. При желании можно все
поместить в самую первую строку. Иммя файла
сценария имеет расширение .chat. В
следующем примере показа сценариц mycon.chat,
в котором пары введены в отдельных строках.
mycon.chat
"" AT\&F2V1LO
OK ATDT4448888
CONNECT \n
ogin: mylogin
word: mypass
Этотсценарий можно вызвать командой chat
с опцией -f, как показано ниже. Программа chat
использует представленную в этом сценарии
информацию для инициализации модема, набора
номера телефона удаленной системы и регистрации
с указанием вашего идентификатора пользователя
и пароля.
chat -f mycon.chat
Многие удаленные системы в случае
возникновения проблем в процессе установления
соединения посылают сообщения об ошибках. Для
выявления такого сообщения можно
воспользоваться специальной строкой прерываний,
ABORT, с ключевым словом, характеризующим состояние
соединения. В случае, если соединение
характеризуется таким состоянием, chat отменяет
процедуру установления соединния. Если вы
пользуетесь только командной строкой, то можно
вводить эти специальные строки прерывания либо
там, где они должны были бы появляться в процессе
установления соединения, либо в самом начале. В
показанном ниже chat-сценарии строки прерывания
находятся в начале. В этом примере перед выдачей
регистрационного соглашения проверяется
наличие ответа NO CARRIER или BUSY. В любом из эти
случаев начальное соединение не
устанавливается, и chat отменяет все остальные
операции. Обратите внимание на то, что ответ NO
CARRIER заключен в кавычки, поскольку в нем есть
пробел.
mycon.chat
ABORT 'NO CARRIER'
ABORT BUSY
""AT\&F2V1L0
OK ATDT5558888
CONNEXCT\n
ogin: mylogin
word: mypass
Обращение к программе chat можно
встроить в вызов команды pppd; chat устанавливает
соединение, а затем pppd конфигурирует
его.
Демон протокола РРР (pppd) вызывается с
несколькими опциями. Вот его стандартный
синтаксис:
pppd опции
имя_устройства скорость
локальный:удаленный_адреса опции_ррр
Имя_устройства (имеется в виду устройство,
подключаемое к последовательному порту) - это имя
устройства для модема. Вероятнее всего, это /dev/cua
с номером (обычно от 0 до 3), соответствующим порту,
к которому модем подключен. Порту 1 соответствует
сuа0, порту 2 - cua1 и т.д. Скорость
- это скорость передачи данных в бодах. Для
модема, поддерживающего протокол v.28, это 38400 или
даже 56700 бод. Максимальную скорость передачи
можно узнать у провайдера Internet и из документации
на модем.
Опции команды pppd позволяют задать
параметры конфигурации, например величину
максимального передаваемого блока данных (MTU) и
наличие динамического IP-адреса. Опция connect дает
команде указание установить соединение. В
качестве аргумента команда pppd
использует Linux-команду, которая реализует это
практически (как правило, ею является команда chat).
В данном случае вводится имя демона pppd,
затем опция connect, команда chat с
опцией -f и, наконец, имя файла
chat-сценария. Команда chat с опцией -f
и именем chat-файла заключается в кавычки, чтобы
отличить ее от других опций pppd. В
следующем примере показано, как пользователь
вызывает pppd с командой chat,
пользуясь chat-сценарием mycon.chat. Модем
подключается к порту 4, /dev/сuаЗ, а
скорость передачи данных составляет 57600 бод.
# pppd connect 'chat -f mycon.chat' /dev/cua3
57600
Для разрыва РРР-соединения необходимо вызвать
команду pppd_ с опцией disconnect. Можно использовать
chat-сценарий для подачи модему команд на разрыв
соединения (например НО):
# pppd disconnect 'chat -f turnoff.chat'
turnoff.chat
-\d+++\d\c OK
ATH0 OK
Чтобы упростить процедуру разъединения, можно
поместить команду pppd в сценарий аналогично тому,
как это было сделано для процедуры соединения.
Опции РРР
У команды pppd имеется очень много
опций. В табл. 7 представлены наиболее часто
употребляемые опции, а их полный перечень можно
найти на страницах диалогового руководства,
посвященных этой программе. Например, опция mru
устанавливает размер "максимальной единицы
приема".Программа pppd дает удаленной
системе указание посылать пакеты, размеры
которых не превышают эту величину. По умолчанию
она принимается равной 1500 байтов; для менее
скоростных модемов рекомендуется брать 296 или 542.
Опция defaultroute дает pppd указание
настраивать РРР-соединение как маршрут по
умолчанию. Отсутствие адресов при наличии опции noipfdefault
обеспечивает выявление и использование
динамического IP-адреса, полученного от удаленной
системы провайдера Internet. Эту опцию нужно
указывать в том случае, если ваш провайдер
предоставляет только динамические IP-адреса.
Опция crtscts означает аппаратное
управление потоком, а опция modem
позволяет управлять модемом. Эти опции можно
задавать в командной строке после указания
скорости передачи, например:
# pppd -connect 'chat -f mycon.chat' /dev/cual
57600 mru 1500
defaultroute noipdefault crtscts modem
В следующей команде наличие адресов означает,
что программа pppd должна использовать эти адреса
для установления статического соединения.
Локальный адрес - 199.35.209.72, а удаленный - 163.179.4.22.
# pppd -connect 'chat -f mycon.chat' /dev/cual 57600
199.35.209.72:163.179.4.22 mru 1500 defaultroute
crtscts modem
При наличии многих опций такая командная
строка получается очень длинной и сложной. В
качестве альтернативного варианта pppd
позволяет вводить опции в файл /etc/ppp/options,
а также в файл .рррrс. При каждом вызове pppd
автоматически читает и использует
перечисленные в этих файлах опции. Количество
опций не ограничено; каждая вводится в отдельной
строке. Пользуясь знаком #, можно
вводить комментарии, поясняющие функции той или
иной опции и их значения. Файл /etc/ppp/options
содержит опции команды pppd, принимаемые
системой по умолчанию. Этот файл создается
привилегированным пользователем и при вызове pppd
проверяется в первую очередь. Файл .рррrс содержит
опции, указанные конкретным пользователем, и
читается после системного файла /etc/ppp/options.
У каждого пользователя может быть собственный
файл .рррrс, находящийся в его начальном
каталоге. Ниже приведен краткий пример файла
опций.
/etc/ppp/options
# /etc/ppp/optins-*-sh-*-general options for pppd
crtscts
defaultroute
modem
mru 542
asyncmap 0
netmask 255.255.255.0
noipdefault
Чтобы облегчить процесс создания файла опций, в
версии Red Hat Linux предусмотрен файл options.tpl
(каталог /etc/ppp). Это - шаблон, в котором
перечислены все опции со стандартными
значениями и подробными пояснениями. Все они
превращены в комментарии, т.е. в начале каждой
строки стоит знак #. Вместо того чтобы
создавать файл опций с нуля, можно скопировать options.tpl
в файл options, сделав его файлом
опций. Затем с помощью редактора (например, Vi)
нужно убрать знак # из строк тех опций,
которые соответствуют потребностям
пользователя. Например, чтобы установить опцию noipdefault,
найдите с помощью редактора эту строку и удалите
знак #. Если понадобится отменить
действие опции, вновь поставьте этот знак в
начало строки. Таким методом можно быстро задать
все необходимые опции и в дальнейшем при вызове pppd
их не вводить.
Если опции заданы в файле /etc/ppp/options, то
в командной строке pppd нужно указать
только имя pppd, команду вызова программы
chat, имя устройства для модема и скорость
передачи данных.
$ pppd connect 'chat -f mycon.chat' /dev/cual
57600
Вы можете сократить и эту запись, включив вызов pppd
в сценарий shell и затем просто выполняя этот
сценарий. Напомним, что сценарий shell представляет
собой текстовый файл, который можно создавать с
помощью любого текстового редактора. Строка
вызова команды со всеми аргументами вводится в
этот файл так же, как в командную строку. Перед
командой pppd не забудьте вставить
команду exec. Команда exec не
приводит к созданию нового процесса для
выполнения pppd, а замещает shell данного
сценария. Затем следует с помощью команды chmod
755 имя_сценария сделать этот сценарий
исполняемым, а потом поместить его в каталог /usr/local/bin.
Теперь, для того чтобы установить соединение с
помощью pppd, нужно просто ввести в
командной строке имя этого сценария и нажать
клавишу Enter. В следующем примере вызов процедуры
соединения pppd помещается в сценарий shell рррсоn,
и для вызова pppd пользователь просто
вводит команду рррсоn.
рррсоn
exec pppd connect ' chat -f mycon.chat' /dev/cual 57600
$ рррсоn
Теперь можно попробовать установить с помощью pppd
соединение с удаленной системой. При этом
могут возникнуть самые разные проблемы.
Например, строка подтверждения установления
соединения может оказаться неверной, возможны
ошибки в инициализации модема и т.д. Программа pppd
регистрирует описания всех выполняемых ею
действий в файле /var/ log/messages. С помощью
команд more, tail или cat можно
вывести эти описания на экран даже в процессе
работы pppd. Если соединение установлено,
то вы увидите перечень IP-адресов (см. ниже).
$ tail /var/log/messages
Приведенная ниже команда позволяет выводить на
экран сообщения о ходе установления соединения
по мере их ввода в файл /var/log/messages.
Остановить этот процесс можно командой [Ctrl+c].
$ tail -f /var/log/message
Mar 23 20 : 01 :03 richlp pppd[208]:
Connected...
Mar 23 20 : 01 :04 richlp pppd[208]:
Using interface ppp0
Mar 23 20 : 01 :04 richlp kernel:
ppp: channel ppp0 mtu =1500, mru = 1500
Mar 23 20 : 01 :04 richlp kernel: ppp:
channel ppp0 open
Mar 23 20 : 01 :04 richlp
pppd[208]: Connected: ppp0 /dev/cua3
Mar 23 20 : 01 :09 richlp
pppd[208]: local IP adress 204.32.168.68
Mar 23 20 : 01 :09 richlp
pppd[208]: remote IP adress 163.179.4.23
В версии Red Hat Linux имеется образец
регистрационного РРР-сценария (файл ррр-on
в каталоге /usr/sbin). С помощью текстового
редактора можно присвоить определенным
переменным, например Phone и Password, нужные значения.
Аргументы и опции команд chat и pppd
вводите внимательно, чтобы избежать ошибок. Если
опции уже заданы в файле /etc/ppp/options, то
большинство тех опций, которые обычно
указываются в командной строке, можно удалить. Не
забудьте правильно установить скорость передачи
данных и имя устройства для модема. Для
установления РРР-соединения по этому варианту
нужно просто ввести команду ррр-on. Для
разрыва соединения можно использовать команду
ppp-off. Это сценарий shell, расположенный в
каталоге /usr/sbin и уничтожающий
собственно процесс РРР.
Вызвать команду pppd и настроить
РРР-соединение можно также с помощью программы
dip. Устанавливая в dip-сценарии режим РРР, вы
фактически выполняете программу pppd. В
этом случае chat-сценарий для установления
соединения не нужен, поскольку это уже сделала
программа dip. Однако следует отметить,
что при вызове pppd должны быть
установлены несколько опций, которые в
dip-сценарии указать нельзя. Их нужно
устанавливать в файле /etc/ppp/options, который
pppd автоматически читает при выполнении.
Обеспечение функционирования РРР-соединений,
устанавливаемых по инициативе удаленных систем
Как и в случае работы по протоколу SLIP, локальную
систему можно конфигурировать как сервер РРР,
позволяя тем самым удаленным системам
устанавливать РРР-соединения с локальной
системой по телефонным линиям связи. Для этого
нужно всего лишь создать один специальный бюджет
и сценарий, содержащий команду вызова pppd с
опциями -detach и silent. Обычно этот сценарий
называется ppplogin. Вот его образец:
/etc/ppp/ppplogin
exec pppd -detach silent modem crtscts
Опция -detach не позволяет демону pppd
освободить занимаемую им линию, а опция silent
заставляет его ждать, пока удаленная система
организует канал связи с локальной. Опция modem
обеспечивает контроль модемных линий, а опция crtscts
позволяет осуществить аппаратное управление
потоком.
Специальный бюджет носит имя ррр.
Запись в файле /etc/passwd для этого бюджета
может иметь следующий вид:
ррр:*:501:300:РРР Account:/tmp:/etc/ppp/ppplogin
Защита РРР-соединений: протокол CHAP
Безопасность передачи информации с
использованием РРР-соединений обеспечивается за
счет применения дополнительных протоколов. Для
РРР разработано два таких протокола: PAP (Password
Authentification Protocol - протокол аутентификации паролей)
и CHAP (Challenge Handshake Authentification Protocol - протокол
аутентификации с квитированием связи). CHAP
считается более надежным. Он построен на базе
алгоритма шифрования, требующего, чтобы две
соединенные между собой системы непрерывно
идентифицировали друг друга. Ключи к шифру
хранятся в файле /etc/ppp/ chap-secrets. Чтобы
использовать CHAP в РРР-соединениях, надо включить
в команду вызова pppd опцию auth и
ввести в файл /etc/ppp/chap-secrets необходимую
информацию об удаленной системе. Ниже приведен
пример записи из этого файла. Записи для
протокола РАР имеют тот же формат.
/ect/ppp/chap-secrets
pangol.train.com turtle.trek.com
"my new hat"
*
turtle.trek.com "confirmed tickets"
turtle.trek.com pangol.train.com
"trek on again"
Запись для протокола CHAP состоит максимум из
четырех полей: хост-имени клиента, хост-имени
сервера, секретного ключа и списка возможных
IP-адресов. Пользователь локальной системы может
потребовать от компьютера, пытающегося
установить с нею соединение, ввода указанного
ключа. В поле имени клиента можно поставить
звездочку, которая означает, что ключ должны
указывать все удаленные системы. Система,
которая знает секретный ключ, имеет право
установить соединение с локальной системой.
Первая запись следующего примера относится к
случаю, когда сервером является собственная
система пользователя, turtle.trek.com. Она
позволяет системе pango1.train.com установить
соединение при условии, что та укажет заданный
секретный ключ. Следующая запись позволяет любой
удаленной системе установить соединение с
локальной, если удаленная система знает ключ, в
данном случае "confirmed tickets".
pango1.train.com
turtle.trek.com "my new hat"
*
turtle.trek.com
"confirmed tickets"
В этом файле следует также сделать записи для
удаленных систем, с которыми будет связываться
локальная система. В этом случае удаленная
система становится РРР-сервером, а локальная -
клиентом. Из следующего примера видно, что
система turtle может связаться с системой pango1
по секретному ключу, в данном случае "trek on
again".
turtle.trek.com pango1.train.com "trek on
again"
Существует два типа SLIP-соединений: стандартное,
которое называется просто SLIP, и более новое
соединение, функционирующее со сжатием
передаваемой информации, которое называется
Compress SLIP, или CSLIP. Обязательно узнайте, какое
соединение предоставляет ваш провайдер Internet.
При установлении соединения вам нужно будет
указать тип соединения для выбора протокола. За
исключением разницы при указании типа, процедура
установления соединения в обоих случаях
одинакова. Ссылки на SLIP относятся и к SLIP, и к CSLIP,
если иного не указано.
Управление SLIP-соединением и его настройка
осуществляются с помощью программы dip.
При наличии соответствующей информации данная
программа автоматически устанавливает
соединение с провайдером Internet. Это позволяет
пользователю запускать в своей системе все
Internet-приложения, например Netscape и ftp.
Программа dip работает как
интерпретатор команд. В файле, который
называется dip-сценарием, пользователь указывает
определенные команды, необходимые для входа в
систему провайдера Internet и установления
соединения. Программа читает команды из этого
файла и выполняет их по очереди. Например,
команда dial позволяет набрать с помощью
модема номер телефона системы провайдера.
dip-сценарий имеет расширение .dip.
Подготовив dip-сценарий, можно давать команду dip
с именем этого сценария. Опция -v
позволяет выводить на экран в процессе
выполнения каждую команду, что дает возможность
контролировать ошибки. Ниже приведен базовый
синтаксис командной строки программы dip.
$ dip -v файл_сценария .dip
В табл. 8 приведены различные команды, вводимые
в dip-сценарий. К ключевым командам относятся port,
speed, dial, get, modem, mode и default. Команда dip
использует также несколько специальных
переменных, содержащих информацию о соединении.
Например, в переменной $rmtip хранится
IP-адрес удаленной системы.
Сценарии несколько отличаются друг от друга, в
зависимости от того, какую процедуру регистрации
использует тот или иной провайдер Internet. Это
касается, в частности, регистрационного
приглашения, номера телефона и строки команд
модема, необходимых для установления соединения.
Кроме того, существуют две очень разные формы
сценариев, выбор между которыми зависит от того,
какой IP-адрес вам дает провайдер - постоянный или
только на время соединения. Чтобы установить
SLIP-соединение, определите, какого типа IP-адрес
предоставлен вам провайдером.
Если при установлении соединения с помощью
dip-сценария возникают проблемы, рекомендуется
запускать dip в интерактивном режиме (с опцией -t).
В этом режиме dip вызывает собственный
shell с приглашением DIP>. По этому приглашению
можно по одной вводить dip-команды. Если наряду с
опцией -t используется и опция -v,
то dip выдает подробное описание всех
действий, которые выполняет. Для выполнения
регистрации можно также воспользоваться
командой term, которая вводится по
приглашению DIP>. Эта команда переводит
программу dip в режим терминала, в
котором система провайдера Internet предлагает
пользователю ввести свой идентификатор и пароль.
Возврат к приглашению DIP> после установления
соединения осуществляется с помощью команды [ctrl+]].
После этого можно продолжать работу,
устанавливать маршрут и режим. Команда term
позволяет увидеть, какие приглашения для
регистрации и ввода пароля посылает вам
удаленная система провайдера Internet. Если вы сами
разработали процедуру установления соединения,
то, конечно, гораздо проще пользоваться
dip-сценарием.
# dip -t -v
DIP>
Если нужно разорвать dip-соединение, дайте
команду dip с опцией -к.
Разорвать определенное соединение можно также с
помощью этой команды с опцией -1, указав
конкретную линию. Команда dip с одной
только опцией -к разрывает самое
последнее соединение. Опция -к полезна в
том случае, если вы успешно установили
соединение, но по какой-либо причине не можете
зарегистрироваться или установить режим работы
линии. Соединение остается активным до тех пор,
пока вы не разорвете его явно, воспользовавшись
командой dip с опцией -к.
$ dip -к
Статические IP-адреса в dip-сценариях
Статический IP-адрес - это адрес,
который предоставляет вам провайдер Internet в
постоянное пользование. Ваш компьютер всегда
идентифицируется этим адресом. Инициируя
SLIP-соединение с удаленной хост-машиной
провайдера, вы пользуетесь статическим IP-адресом
для обозначения своей системы. В соединениях,
использующих статический IP-адрес, вы
присваиваете свой статический IP-адрес
переменной $local, а адрес удаленной
хост-машины провайдера - переменной $remote.
Присваивание значений переменным
осуществляется с помощью команды get. Эти
присваивания выполняются в самом начале
dip-сценария. Программа dip ищет в этих
переменных соответствующие IP-адреса. После того
как IP-адреса указаны, можно продолжать вводить
команды процедуры регистрации. Перечень
переменных программы dip приведен в табл. 9.
get $local статический_IP_адрес
get $remote удаленный_IР_адрес
dip-сценарий
Ниже приведен пример dip-сценария с
использованием статического адреса. Пример
этого сценария можно найти на странице
диалогового руководства, посвященной программе dip.
Сценарий начинается с ряда команд настройки
модема. Сначала определяется устройство, на
котором установлен модем. Порты com1, com2, соmЗ и соm4
соответствуют устройствам /dev/cua0, /dev/ cua1, /dev/cua2
и /dev/сuаЗ. Отметим, что номера устройств
начинаются с нуля, поэтому соm4 соответствует сuаЗ.
Затем устанавливается скорость передачи данных,
57600 бод (стандартная установка для модема,
поддерживающего протокол v.28). Команда init
в качестве аргумента использует строку
инициализации модема. Здесь вводятся
специальные коды для модема. Команда reset
использует эту строку для инициализации модема.
mystatic.dip
#For а static IP address assign your system's IP address to the variable $local get
$local 199.35.209.72
#For a static IP address assign the remote system's IP address to the variable $remote
get $remote 163.179.4.22
#Set the netmask to 255.255.255.0 netmask 255.255.255.0
#Set port and speed.
port cua3
speed 57600
init AT&F2VlM0
reset
#The Standart errlvl values:
#0-OK
#1-CONNECT
#2-ERROR
#3-BUSY
#4-NO CARRIER
#5-NO DIALTONE
wait OK 2
if $errlvl != 0 goto modem_trouble dial 555-8888
if Serrlvl != 1 goto modem_trouble
#Connection made, now login to the system.
wait ogin: 20
if $errlvl != 0 goto error
send mylogin\n wait word: 20
if $errlvl != 0 goto error
send mypass\n
#We are now logged in.
wait CONNECT 15
if $errlvl != 0 goto error
#Set up the SLIP operating parameters.
get $mtu 296
#Sets up SLIP connection as default route.
default
mode CSL1P
print Your are now connected to $locip as $rmtip
goto exit
modem_trouble:
print Trouble occured with the modem...
error:
print CONNECT FAILED to $remote
quit 1
exit:
exit:
Переменным $local и $remote
присваиваются соответственно статический адрес
локальной системы и IР-адрес системы удаленной.
После этого начинается собственно процедура
регистрации. Команда dial обеспечивает
набор указанного номера телефона. Если
установить соединение не удается, в переменную $errlvl
возвращается код ошибки. Его значение
проверяется сразу после выполнения команды dial,
чтобы посмотреть, нет ли ошибки, и не выполнять в
случае ошибки остальную часть сценария (с
выдачей на экран соответствующего сообщения).
Аргументом команды wait является строка
подтверждения установления соединения, которую
чаще называют просто строкой соединения (connect
string). Разные провайдеры Internet предпочитают
использовать различные строки соединения. У
одних это слово CONNECT, у других - число,
соответствующее скорости передачи в бодах,
например 57600. Команда wait непрерывно ищет
строку соединения в сообщениях, которые вам
посылает удаленная система. Число, указываемое в
сценарии после строки соединения - это время в
секундах, в течение которого нужно ее ждать. По
истечении этого времени выдается сигнал ошибки и
переменной $errlvl присваивается
соответствующее значение. Пользователь
обязательно должен знать, как выглядит строка
соединения. Это можно узнать непосредственно у
провайдера. Другой вариант - эмулировать в вашей
локальной системе терминал удаленной системы,
зарегистрироваться в ней и посмотреть, что вам
посылает удаленная система. В ответ на
полученную строку соединения можно послать
символ перехода на новую строку - \n.
Некоторые удаленные хост-компьютеры могут
потребовать DOS-версии символа перехода, которая
состоит из двух символов, \r\n.
Следующая команда wait ожидает от
удаленной машины регистрационного приглашения.
Вам нужна только последняя часть приглашения, а
не все слово. Обычно приглашение имеет вид login:,
поэтому вам нужно указать в dip-сценарии только ogin:.
Если это не сработает, узнайте регистрационное
приглашение у своего провайдера. После получения
приглашения команда send посылает
регистрационное имя пользователя. В конце
регистрационного имени нужно задать символ
перехода на новую строку, например, так: richlp\n.
Некоторые провайдеры Internet требуют, чтобы
пользователи уточняли свои регистрационные
имена. Например, провайдер Netcom требует, чтобы
перед регистрационным именем ставился знак $,
скажем, $richlp\n. Следующая команда wait ожидает
передачи приглашения на ввод пароля. Обычно оно
имеет вид password: вам нужны только
последние несколько символов, word:.
Пароль передается командой send с
символом возврата, \n.
Команда print сообщает, что попытка
соединения была успешной, и выдает адрес
удаленной хост-системы. Теперь нужно
конфигурировать соединение, устанавливать его
маршрут и тип. Команда default позволяет
сделать данное соединение маршрутом по
умолчанию. Команда mode задает тип
соединения. Он зависит от типа соединения,
которое вам предоставляет провайдер Internet. Это
может быть стандартное SLIP-соединение
(указывается тип SLIP) или SLIP-соединение со сжатием
передаваемых данных (тип CSLIP). Укажите
соответствующий тип в dip-сценарии как аргумент
команды mode.
Динамические IP-адреса и программа dip
Динамический IP-адрес - это адрес, который вам
временно выдает провайдер Internet при установлении
соединения с его системой. У провайдера обычно
имеется пул IP-адресов, которые он назначает
пользователям по мере необходимости. Это значит,
что при каждом соединении у вас может быть новый
IP-адрес, т.е. узнать свой IP-адрес заранее нельзя. В
процессе установления соединения провайдер Internet
сообщает вашей системе IP-адрес, который он
назначил вам для данного сеанса. Вам нужно
выявить этот адрес и использовать его как IP-адрес
своей системы в Internet.
Провайдер посылает в вашу систему IP-адрес после
того, как вы установили соединение и
зарегистрировались. Вы должны присвоить этот
адрес переменной $lосаl. Команда get
с опцией remote позволяет получить
значения IP-адреса удаленной хост-системы, в
данном случае удаленной системы провайдера, с
которой вы установили соединение. После посылки
пароля, но перед установкой маршрута по
умолчанию и режима необходимо ввести
приведенные ниже команды get. С их
помощью сначала вы примете IP-адрес удаленной
системы, а затем локальный IP-адрес для своей
системы. До этого никакие значения переменным $lосаl
и $remote не присваивались.
get $remote remote
get $local remote
После вышеприведенных команд можно дать
команду ожидания на тот случай, если удаленная
система не сможет передать указанные адреса. В
следующем примере показано использование
команды get для получения адресов
локальной и удаленной систем.
# We are now logged in.
wait CONNECT 15
if $errlvl != 0 goto error
#get the dynamically provided IP address for the remote
system
get $remote remote
#get the dynamically provided IP address assigned for
the local system
get $local remote
$Set up the SLIP operating parameters.
get $mtu 1500
#Sets up SLIP connection as default route.
default
Гораздо проще конфигурировать dip-сценарии
позволяет программа netcfg. В верхнем
левом углу окна NetCfg находится список сетевых
интерфейсов локальной системы. Для
конфигурирования SLIP-соединения необходимо
прежде всего добавить в этот список новый
интерфейс, для чего требуется щелкнуть на кнопке Add
и затем выбрать тип SLIP из трех предложенных
вариантов: Ethernet, SLIP и РРР. Кроме того, вам
предлагается ввести имя интерфейса. Имя
SLIP-интерфейса состоит из букв sl и номера, начиная
с 0, например sl0. Программа dip
позволяет конфигурировать и РРР-соединение, но
использование для этого программы pppd -
гораздо более надежный способ.
Указав имя интерфейса, вы увидите окно со
списком подлежащих вводу значений, используемых
в dip-сценарии, включая ваш номер телефона, IP-адрес,
пароль и регистрационное имя. Введите эти
значения в соответствующих полях и щелкните на
кнопке ОК. Эти значения используются в
специальном dip-сценарии, /etc/dip-script. При
активизации данного SLIP-интерфейса этот сценарий
выполняется с использованием введенных
значений. При необходимости файл /etc/dip-script
можно редактировать. Его можно также
скопировать, внести изменения в копию и
пользоваться ею вместо оригинала. В окне
конфигурирования SLIP-интерфейса предусмотрено
поле для ввода либо имени собственного
dip-сценария пользователя, либо стандартного
сценария.
Представленный фрагмент файла /etc/dip-script
предназначен для установления соединений с
использованием статических IP-адресов. Если
провайдер назначает динамические IP-адреса,
придется откорректировать файл /etc/dip-script
или снять с него копию и, откорректировав ее,
назначить ее dip-сценарием, используемым при
конфигурировании интерфейсов утилитой netcfg. Для
этого придется удалить две записи, get local
и get remote, в начале файла и ввести записи get
$remote remote и get $local remote
непосредственно перед командой get mtu.
wait @@@connect-string@@@ 30
if $errlvl ! = 0 goto error loggedin:
#Lines to be added for dynamic addressing
get $local remote
get $remote remote
get $mtu @@@mtu@@@
default done:
print CONNECTED to Sremote with address $rmtip
Обеспечение SLIP-соединений, устанавливаемых со
стороны удаленных систем: diplogin
Операционная система Linux позволяет не только
устанавливать SLIP-соединение с удаленной
системой, но предоставляет другим системам
возможность устанавливать собственные
SLIP-соединения с данной локальной системой.
Удаленная система может связаться с локальной по
телефонной линии и установить с нею
SLIP-соединение. Если в локальной системе создан
бюджет для какого-либо пользователя удаленной
системы, то он может через SLIP-соединение
зарегистрироваться в этом бюджете. Такие
коммутируемые SLIP-соединения для удаленных
систем организуются в локальной системе
посредством команды dip с опцией -i.
Эта команда переводит программу dip в
режим обслуживания соединений, инициируемых
удаленными системами. Такой вызов программы dip
может выполняться также посредством команды diplogin,
представляющей собой символическую ссылку на
команду dip. В режиме обслуживания
соединений, устанавливаемых со стороны
удаленных систем, программа dip запрашивает у
удаленного пользователя идентификатор и пароль,
а затем устанавливает SLIP-соединение.
Сначала нужно создать в локальной системе
бюджет для удаленного пользователя. Это можно
сделать с помощью утилиты usercfg или
утилиты adduser. Если вас волнуют вопросы
защиты, не забудьте поместить начальный каталог
этого пользователя в специальный каталог, более
подходящий для жесткого контроля, например в /tmp.
При создании бюджета пользователя в файле
/etc/passwd делается соответствующая этому
пользователю запись. В следующем примере имя
пользователя - robert, начальный каталог - /tmp.
robert:Зашифрованный_пароль:204:12:UUNET:/tmp:/usr/sbin/diplogin
Последнее поле записи в файле паролей - тип
регистрационного shell, назначаемого пользователю.
В приведенном примере регистрационный shell - diplogin,
символическая ссылка на программу dip.
Для получения регистрационной и
конфигурационной информации dip будет
искать имя пользователя в файле /etc/diphosts.
Создав бюджет, необходимо конфигурировать для
него SLIP-соединение. Параметры конфигурации
задаются в записях файла /etc/diphosts. Каждая
запись этого файла состоит из семи полей,
разделенных двоеточиями. Первое поле -
идентификатор пользователя, второе -
дополнительный пароль. Третье поле - хост-имя или
IP-адрес удаленной системы, четвертое - хост-имя
или IP-адрес локальной системы. Затем следуют
маска сети и поле для комментариев. В последнем
поле указываются параметры соединения для
данного бюджета, в частности тип протокола (CSLIP
или SLIP) и величина максимального передаваемого
блока данных (MTU).
Если указан дополнительный пароль, то перед
стандартной процедурой регистрации diplogin предложит
удаленному пользователю ввести его.
/etc/diphosts
#user : password : remote host : local host : netmask : comments : protocol, MTU
robert:starq:rose.berkley.edu:richlp.ix.com:255.255.255.0: SLIP, 1500
valerie::pangol.train.com:richlp.ix.com:255.255.255.0:CSLIP,296
|