141001 г.Мытищи МО
Ул.Институтская д:1 ком:101
(095) 588-52-09, 588-55-62
E-mail: lscs@mgul.ac.ru

Московский Государственный Университет Леса
Сервер Лаб. Космической информатики каф.ВТ

 
 

Оглавление.

Протоколы SLIP и РРР.

- Подготовка к установлению соединения по протоколам SLIP и РРР.
- Протокол РРР.
- chat-сценарии.
- Опции РРР.
- Обеспечение функционирования РРР-соединений, устанавливаемых по инициативе удаленных систем.
- Защита РРР-соединений: протокол CHAP.
- SLIP и CSLIP: программа dip.
- Статические IP-адреса в dip-сценариях.
- dip-сценарий.
- Динамические IP-адреса и программа dip.
- Обеспечение SLIP-соединений, устанавливаемых со стороны удаленных систем: diplogin.

    В качестве альтернативы таким аппаратным сетевым соединениям, как 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 и РРР

    Чтобы установить соединение по протоколу SLIP или РРР, необходимо активизировать поддержку системой протокола TCP/IP и конфигурировать закольцовывающий интерфейс. Система Caldera Network Desktop делает это автоматически. Провайдеры Internet обычно имеют в своем распоряжении серверы доменных имен, услугами которых можно воспользоваться. Необходимо выяснить IP-адреса этих серверов и ввести их в файл /etc/resolv.conf. Для ввода адресов можно воспользоваться утилитой netcfg. В любом случае следует с помощью команды more или команды cat вывести содержимое файла /etc/resolv.conf на экран и проверить, введены ли в него доменные имена серверов. Если их там нет, то ни один вводимый вами адрес не будет распознан.

Протокол РРР

    Протокол "точка-точка" (РРР) - это более новый универсальный протокол, который завоевывает все большую популярность. Он обеспечивает гораздо более стабильное соединение и может поддерживать работу целого ряда сетевых протоколов помимо IP. Основную часть работы РРР выполняет автоматически. В отличие от SLIP, здесь не нужно для каждой операции создавать сценарий с целым набором команд. РРР автоматически определяет удаленные IP-адреса, как статические, так и динамические.
    РРР-соединение устанавливается с помощью программы pppd. Эта пр грамма конфигурирует соединение, устанавливает лимиты MTU и получа IP-адреса. В отличие от dip , однако, pppd не устанавливает предварительи соединение. Она не набирает через модем номер телефона провайдера и не предоставляет информацию о регистрационных именах и паролях. Чтобы использовать pppd, нужно сначала установить соединение с удаленной хост-системой. Это можно сделать с помощью программы chat, в которой используются свои опции и форматы. Сначала эта программа устанавливает соединение, а затем pppd конфигурирует его. Однако нет необходимости сначала вызывать chat, а затем pppd. Дело в том, что pppd в качеств аргумента использует имя программы, которая устанавливает соединение, в данном случае chat. Это имя нужно просто указать вместе с опциями команды chat в командной строке pppd. По сути дела, вся операция установления соединения с помощью pppd выполняется в одной командной строке, в отличие от dip-сценария.
    Программа pppd различает статические и динамические IP-адреса, проверяя, включил ли пользователь набор IP-адресов в качестве аргумента в командную строку, а также по наличию опции noipdefault. Если IР-адреса указаны, 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.179.4.22

    Если используется динамический удаленный адрес, можно указать только локальный адрес с двоеточием. Программа 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.

"" ATUF2V1L0

    В следующем сегменте сначала ожидается положительный ответ от модема (ОК), что означает отсутствие проблем с инициализацией. Затем можно набирать номер телефона.

OK ATDP5885555

    В ответ, как правило, приходит строка подтверждения соединеня. В разных системах эти строки отличаются. Более того, строки подтверждения соединения может не быть вообще. Во многих системах строкой подтверждения соединения является слово CONNECT, в некоторых это скорость передачи в бодах и т.д. В нашем примере пользователь получает в качестве строки подтверждения соединения значение скорости передачи. В ответ на строку подтверждения соединения, как правило, ничего не посылается, но может быть послан символ новой строки. Как уже говорилось, отсутствие ответа обозначается пустым строковым значением, т.е. двумя двойными кавычками (" "). Новая строка (line) в chat-сценарии обозначается комбинацией символов \n. (Некоторые удаленные систеи требуют DOS-версии символа новой строки, которая представляет собой последовательность символа возврата каретки и символа перехода на нову строку, \r\n.) Перечень специальных символов chat-сценария приведен в табл. 20.6 . В следующем примере в ответ посылается символ новой строки.

57600 \n

    После строки соединения удаленная система обычно посылает регистрационное приглашение. Часто это слово "login" с двоеточием. Вам нужны только последние несколько символов, ogin:. Не забывайте про двоеточие. В ответ нужно послать свой идентификатор пользователя. В зависимости того, с каким провайдером Internet вы работаете, возможно, придется добавлять к идентификатору символ новой строки, например mylogin\n. Провайдер может потребовать включения и других символов, допустим, начального знака $.

ogin: mylogin

    После регистрационного имени следует ожидать получения приглашения ввести пароль. Опять-таки нужны только последние несколько символе word:. В ответ нужно сообщить свой пароль. При необходимости добавьте символ \n.

word: mypass

    Все это помещается в одной строке. Теперь у вас есть последовательность слов, обозначающих осуществляемые попеременно прием и передачу текста.

"" AT\&F2V1L0 OK ATDP8888888 CONNECT \n login: mylogin word: mypass

    Если вы не инициализируете модем, можете попробовать немного измененный вариант:

"" ATDP8888888 CONNECT \n login: mylogin word: mypass

    Если ваш провайдер не требует, чтобы при получении слова CONNECT указывался символ новой строки, вы можете опустить его:

"" ATDP8888888 login: mylogin word: mypass

    В chat-сценарии пары приема-передачи разрешается разбивать на отдельные строки, по одной паре на строку. Записи каждой пары разделяются пробелами или знаками табуляции. При желании можно все поместить в самую первую строку. Имя файла сценария имеет расширение .chat. В следующем примере показан сценарий mycon.chat, в котором пары введены в отдельных строках.

mycon.chat "" AT\&F2V1L0 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 можно встроить в вызов команды ррpd; chat устанавливает соединение, а затем pppd конфигурирует его.
    Демон протокола РРР (pppd) вызывается с несколькими опциями. Bот его стандартный синтаксис:

pppd опции имя_устройства скорость локальный:удаленный_адреса опции_ррр

    Имя_устройства (имеется в виду устройство, подключаемое к последовательному порту) - это имя устройства для модема. Вероятнее всего, это /dev/cua с номером (обычно от 0 до 3), соответствующим порту, к которому модем подключен. Порту 1 соответствует сuа0, порту 2 - cual и т.д. Скорость - это скорость передачи данных в бодах. Для модема, поддерживающего протоке v.28, это 38400 или даже 56700 бод. Максимальную скорость передачи можно узнать у провайдера Internet и из документации на модем.
    Опции команды pppd позволяют задать параметры конфигурации, например величину максимального передаваемого блока данных (MTU) и наличие динамического IP-адреса. Опция connect дает команде указание установить соединение. В качестве аргумента команда pppd использует Linux-команду, которая реализует это практически (как правило, ею является команда chat). В данном случае вводится имя демона pppd, затем опции connect, команда chat с опцией -f и, наконец, имя файла chat-сценария. Команда chat с опцией -f и именем chat-файла заключается в кавычки, чтобы отличить ее от других опций pppd. В следующем примере показано, как пользователь вызывает pppd с командой chat, пользуясь сhat-сценарием mycon.chat. Модем подключается к порту 4, /dev/сuа3, а скорость передачи данных составляет 57600 бод.

# pppd connect 'chat -t mycon.chat' /dev/сuа3 57600

    Для разрыва РРР-соединения необходимо вызвать команду pppd c опцией disconnect. Можно использовать chat-сценарий для подачи модему команд на разрыв соединения (например Н0):

# pppd disconnect 'chat -f turnoff.chat' turnoff.chat -\d+++\d\c OK ATH0 OK

    Чтобы упростить процедуру разъединения, можно поместить команду pppd в сценарий аналогично тому, как это было сделано для процедуры соединения.

Опции РРР

    У команды pppd имеется очень много опций. В табл. 20.7 представлены наиболее часто употребляемые опции, а их полный перечень можно найти, на страницах диалогового руководства, посвященных этой программе. Например, опция mru устанавливает размер "максимальной единицы приема". Программа pppd дает удаленной системе указание посылать пакеты, размеры которых не превышают эту величину. По умолчанию она принимается равной 1500 байтов; для менее скоростных модемов рекомендуется брать 296 или 542. Опция defaultroute дает pppd указание настраивать РРР-соединение как маршрут по умолчанию. Отсутствие адресов при наличии опции noipfdefault обеспечивает выявление и использование динамического IP-адреса, полученного от удаленной системы провайдера Internet. Эту опцию нужно указывать в том случае, если ваш провайдер предоставляет только динамические IP-адреса. Опция crtscts означает аппаратное управление потоком, а опция modem позволяет управлять модемом. Эти опции можно задавать в командной строке после указания скорости передачи, например:

# pppd -connect 'chat -f mycon.chat' /dev/cua1 57600 mru 1500 defaultroute noipdefault crtscts modem

    В следующей команде наличие адресов означает, что программа pppd должна использовать эти адреса для установления статического соединения. Локальный адрес - 199.35.209.72, а удаленный - 163.179.4.22.

# pppd -connect 'chat -f mycon.chat' /dev/cua1 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. У каждого пользователя может быть собственный файл .ррргс, находящийся в его начальном каталоге. Ниже приведен краткий пример файла опций.

/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/cua1 57600

    Вы можете сократить и эту запись, включив вызов pppd в сценарий shell и затем просто выполняя этот сценарий. Напомним, что сценарий shell представляет собой текстовый файл, который можно создавать с помощью, любого текстового редактора. Строка вызова команды со всеми аргументами, вводится в этот файл так же, как в командную строку. Перед командой pppd не забудьте вставить команду ехес. Команда ехес не приводит к созданию нового процесса для выполнения pppd, а замещает shell данного сценария. Затем следует с помощью команды chmod 755 имя_сценария сделать этот сценарий исполняемым, а потом поместить его в каталог /usr/local/bin. Теперь, для того чтобы установить соединение с помощью pppd, нужно просто ввести в командной строке имя этого сценария и нажать клавишу Enter. В следующем примере вызов процедуры соединения pppd помещается в сценарий shell pppcon, и для вызова pppd пользователь просто вводит команду pppcon.

pppcon ехес pppd connect 'chat -f mycon.chat' /dev/cua1 57600 $ pppcon

    Теперь можно попробовать установить с помощью pppd соединение с удаленной системой. При этом могут возникнуть самые разные проблемы. Например, строка подтверждения установления соединения может оказаться неверной, возможны ошибки в инициализации модема и т.д. Программа pppd регистрирует описания всех выполняемых ею действий в файле /var/log/messages. С помощью команд more, tail или cat можно вывести эти описания на экран даже в процессе работы pppd. Если соединение установлено, то вы увидите перечень IP-адресов (см. ниже).

$ tail /var/log/messages

    Приведенная ниже команда позволяет выводить на экран сообщения о ходе установления соединения по мере их ввода в файл /var/Iog/messages. Остановить этот процесс можно командой [Ctrl+c].

$ tail -f /var/log/message Mar 23 20:01 03 richip pppd[208]: Connected... Mar 23 20:01 04 richip pppd[208]: Using interface ppp0 Mar 23 20-01 04 richip kernel: ppp: channel ppp0 mtu =1500, mru = 1500 Mar 23 20 01 04 richip kernel: ppp: channel ppp0 open Mar 23 20:01 04 richip pppd[208]: Connected: pppO /dev/сuа3 Mar 23 20:01 09 richip pppd[208]: local IP adress 204.32.168.68 Mar 23 20:01 09 richip pppd[208]: remote IP adress 163.179.4.23

    В версии Red Hat Linux имеется образец регистрационного РРР-сценария (файл ррр-оn в каталоге /usr/sbin). С помощью текстового редактора можно присвоить определенным переменным, например Phone и Password, нужные значения. Аргументы и опции команд chat и pppd вводите внимательно, чтобы избежать ошибок. Если опции уже заданы в файле /etc/ppp/options, то большинство тех опций, которые обычно указываются в командной строке, можно удалить. Не забудьте правильно установить скорость передачи данных и имя устройства для модема. Для установления РРР-соединения по этому варианту нужно просто ввести команду ррр-оn. Для разрыва соединения можно использовать команду ppp-off . Это сценарий shell, расположенный в каталоге /usr/sbin и уничтожающий собственно процесс PPP.
    Вызвать команду pppd и настроить РРР-соединение можно также с помощью программы dip. Устанавливая в dip-сценарии режим PPP, вы фактически выполняете программу pppd. В этом случае chat-сценарий для установления соединения не нужен, поскольку это уже сделала программа dip. Однако следует отметить, что при вызове pppd должны быть установлены несколько опций, которые в dip-сценарии указать нельзя. Их нужно устанавливать в файле /etc/ppp/options, который pppd автоматически читает при выполнении.

Обеспечение функционирования РРР-соединений, устанавливаемых по инициативе удаленных систем

    Как и в случае работы по протоколу SLIP, локальную систему можно конфигурировать как сервер PPP, позволяя тем самым удаленным системам устанавливать РРР-соединения с локальной системой по телефонным линиям связи. Для этого нужно всего лишь создать один специальный бюджет и сценарий, содержащий команду вызова pppd с опциями -detach и silent. Обычно этот сценарий называется ppplogin. Вот его образец:

/etc/ppp/ppplogin ехес pppd -detach silent modem crtscts

    Опция -detach не позволяет демону pppd освободить занимаемую им линию, а опция silent заставляет его ждать, пока удаленная система организует канал связи с локальной. Опция modem обеспечивает контроль модемных линий, а опция crtscts позволяет осуществить аппаратное управление потоком.
    Специальный бюджет носит имя ррр. Запись в файле /etc/passwd для этого бюджета может иметь следующий вид:

ррр:*:501:300:PPP 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. Она позволяет системе pangol.train.com установить соединение при условии, что та укажет заданный секретный ключ. Следующая запись позволяет любой удаленной системе установить соединение с локальной, если удаленная система знает ключ, в данном случае " confirmed tickets".

pangol.train.com turtle.trek.com "my new hat" * turtle.trek.com "confirmed tickets"

    В этом файле следует также сделать записи для удаленных систем, с которыми будет связываться локальная система. В этом случае удаленная система становится РРР-сервером, а локальная - клиентом. Из следующего примера видно, что система turtle может связаться с системой pangol по секретному ключу, в данном случае "trek on again".

turtle.trek.com pangol.train.com "trek on again"

SLIP и CSLIP: программа dip

    Существует два типа 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

    В табл. 20.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 с опцией -k. Разорвать определенное соединение можно также с помощью этой команды с опцией -l, указав конкретную линию. Команда dip с одной только опцией -k разрывает самое последнее соединение. Опция -k полезна в том случае, если вы успешно установили соединение, но по какой-либо причине не можете зарегистрироваться или установить режим работы линии. Соединение остается активным до тех пор, пока вы не разорвете его явно, воспользовавшись командой dip с опцией -k.

$ dip -k

Статические IP-адреса в dip-сценариях

    Статический IP-адрес - это адрес, который предоставляет вам провайдер Internet в постоянное пользование. Ваш компьютер всегда идентифицируется этим адресом. Инициируя SLIP- соединение с удаленной хост-машиной провайдера, вы пользуетесь статическим IP-адресом для обозначения своей системы. В соединениях, использующих статический IP-адрес, вы присваиваете свой статический IP-адрес переменной $local, а адрес удаленной, хост-машины провайдера - переменной $remote. Присваивание значений переменным осуществляется с помощью команды get. Эти присваивания. выполняются в самом начале dip-сценария. Программа dip ищет в этих переменных соответствующие IP-адреса. После того как IP-адреса указаны, можно продолжать вводить команды процедуры регистрации. Перечень переменных программы dip приведен в табл. 20.9.

get $local статический_IР_адрес get $remote удаленный_IР_адрес

dip-сценарий

    Ниже приведен пример dip-сценария с использованием статического адреса. Пример этого сценария можно найти на странице диалогового руководства, посвященной программе dip. Сценарий начинается с ряда команд настройки модема. Сначала определяется устройство, на котором установлен модем. Порты com1, com2, com3 и соm4 соответствуют устройствам /dev/cua0, /dev/ cual, /dev/cua2 и /dev/сиа3. Отметим, что номера устройств начинаются с нуля, поэтому соm4 соответствует сuа3. Затем устанавливается скорость передачи данных, 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&F2V1M0 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 $errlvl != 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 CSLIP 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:

    Переменным $lосаl и $remote присваиваются соответственно статический адрес локальной системы и IP-адрес системы удаленной. После этого начинается собственно процедура регистрации. Команда dial обеспечивает набор указанного номера телефона. Если установить соединение не удается, в переменную $еrrlvl возвращается код ошибки. Его значение проверяется сразу после выполнения команды 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-адрес после того, как вы установили соединение и зарегистрировались. Вы должны присвоить этот адрес переменной $Iocal. Команда get с опцией remote позволяет получить значения IP-адреса удаленной хост-системы, в данном случае удаленной системы провайдера, с которой вы установили соединение. После посылки пароля, но перед установкой маршрута по умолчанию и режима необходимо ввести приведенные ниже команды get. С их помощью сначала вы примете IP-адрес удаленной системы, а затем локальный IP-адрес для своей системы. До этого никакие значения переменным $local и $remote не присваивались.

get $remote remote get $local remote

    После вышеприведенных команд можно дать команду ожидания на тот случай, если удаленная система не сможет передать указанные адреса. В следующем примере показано использование команды get для получения адресов локальной и удаленной систем.

# We are now logged in. wait CONNECT 15 if 5errlvl '= 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 можно редактировать. Его можно также скопировать, внести изменения в копию и пользоваться eю вместо оригинала. В окне конфигурирования 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-stnng@@@ 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 $remote with address $rmtip

Обеспечение SLIP-соединений, устанавливаемых со стороны удаленных систем: diplogin

    Операционная система Linux позволяет не только устанавливать SLIP-соединение с удаленной системой, но предоставляет другим системам возможность устанавливать собственные SLIP- соединения с данной локальной системой. Удаленная система может связаться с локальной по телефонной линии и установить с нею SLIP-соединение. Если в локальной системе создан бюджет для какого-либо пользователя удаленной системы, то он может через SLIP-соединение зарегистрироваться в этом бюджете. Такие коммутируемые SLIP-соединения для удаленных систем организуются в локальной системе посредством команды dip с опцией -i. Эта команда переводит программу dip в режим обслуживания соединений, инициируемых удаленными системами. Такой вызов программы dip может выполняться также посредством команды diplogin, представляющей собой символическую ссылку на команду dip. В режиме обслуживания соединений, устанавливаемых со стороны удаленных систем, программа dip запрашивает у удаленного пользователя идентификатор и пароль, а затем устанавливает SLIP-соединение.
nbsp;   Сначала нужно создать в локальной системе бюджет для удаленного пользователя. Это можно сделать с помощью утилиты usercfg или утилиты adduser. Если вас волнуют вопросы защиты, не забудьте поместить начальный каталог этого пользователя в специальный каталог, более подходящий для жесткого контроля, например в /tmp. При создании бюджета пользователя в файле /etc/passwd делается соответствующая этому пользователю запись. В следующем примере имя пользователя - robert, начальный каталог - /tmp.

robert:Зашифрованный_пароль:204:12:UUNET:/tmp:/usr/sbin/diplogin

nbsp;   Последнее поле записи в файле паролей - тип регистрационного shell, назначаемого пользователю. В приведенном примере регистрационный shell - diplogin , символическая ссылка на программу dip. Для получения регистрационной и конфигурационной информации dip будет искать имя пользователя в файле /etc/diphosts.
nbsp;   Создав бюджет, необходимо конфигурировать для него SLIP-соединение. Параметры конфигурации задаются в записях файла /etc/diphosts. Каждая запись этого файла состоит из семи полей, разделенных двоеточиями. Первое поле - идентификатор пользователя, второе - дополнительный пароль. Третье поле - хост-имя или IP-адрес удаленной системы, четвертое - хост-имя или IP-адрес локальной системы. Затем следуют маска сети и поле для комментариев. В последнем поле указываются параметры соединения для данного бюджета, в частности тип протокола (CSLIP или SLIP) и величина максимального передаваемого блока данных (MTU).
nbsp;   Если указан дополнительный пароль, то перед стандартной процедурой регистрации diplogin предложит удаленному пользователю ввести его.

/etc/diphosts Таблица 20.1. Протоколы комплекта TCP/IP #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
Оглавление.