Сетевая поддержка в Линуксе, Linux NET-3-HOWTO.: Использование распространенного сетевого оборудования.

Previous Next Table of Contents

## 7. Использование распространенного сетевого оборудования.

## 7.1 ISDN

"Цифровая сеть интегрированных услуг" (Integrated Services Digital Network (ISDN)) -- набор стандартов, определяющих коммутируемую цифровую сеть общего назначения. "Вызов" ISDN создает синхронное соединение точка-точка. ISDN обычно работает на скоростных соединениях, разбитых на некоторое количество "каналов". Существуют 2 типа каналов -- каналы типа 'B', через которые передаются пользовательские данные и каналы типа 'D', служащие для передачи управляющей информации. В Австралии, например, ISDN работает, в частности, через каналы с пропускной способностью 2Мбит/с, разбитого на 30 B-каналов с пропускной способностью 64Кбит/с каждый и один 64Кбит/с D-канал. Вы можете использовать любое количество каналов в любых сочетаниях. Например, Вы можете установит 30 соединений 64-килобитных соединений с тридцатью различными точками назначения, либо 15 128-килобитных соединений (по два канала на каждое соединение) или использовать имеющиеся каналы не полностью. Канал можно использовать как для исходящих, так и для входящих соединений. Изначально ISDN предлагалось как средство для телекоммуникационных компаний, которое позволило использовать единый цифровой формат передачи для телефонных соединений, передачи данных без дополнительных настроек.

Существует несколько способов подключить Вашу машину к ISDN. Первый -- использовать устройство, называемое "Терминальным Адаптером" (Terminal Adaptor). Это устройство подключается ко входу, установленному Вашим поставщиком ISDN и эмулирует несколько последовательных интерфейсов. Один из этих интерфейсов используется для передачи управляющей информации и установления соединений, а остальные -- для передачи данных после того, как соединения будут установлены. В этом случае Линукс будет работать с этими интерфейсами (портами терминального адаптера) как с обычными последовательными устройствами. Второй способ -- включение поддержки ISDN в ядро -- позволяет установить ISDN-карту в Вашу машину, после чего ядро будет самостоятельно заниматься установлением соединений и работой по ISDN-протоколам.

Опции компиляции ядра:

> `

>             ISDN subsystem  --->

>                     <*> ISDN support

>                     [ ] Support synchronous PPP

>                     [ ] Support audio via ISDN

>                     < > ICN 2B and 4B support

>                     < > PCBIT-D support

>                     < > Teles/NICCY1016PC/Creatix support

> `

Реализация ISDN в Линуксе включает в себя поддержку нескольких ISDN-карт. Они перечислены в конфигурации ядра:

- ICN 2B и 4B
- Octal PCBIT-D
- ISDN-карты Teles и совместимые с ними.

Для настройки некоторых из этих карт надо получить у их производителя специальные программы настройки.

Подробная информация о настройке ISDN в Линуксе содержится в каталоге `/usr/src/linux/Documentation/isdn/` и isdn4linux-FAQ, доступном c www.lrz-muenchen.de. (Включите опцию "english" для получения версии этого документа на английском языке, вместо немецкого.)

Замечание касательно PPP. Протоколы семейства PPP работают как по асинхронным, так и по синхронным каналам. Обычная версия демона pppd, входящая в большинство дистрибутивов Линукса, поддерживает только асинхронный режим работы. Для использования PPP поверх ISDN Вам потребуется специальная версия pppd. О том, где взять эту версию, Вы можете прочесть в упомянутой выше документации.

## 7.2 Протокол PLIP в версиях ядра 2.0.*

Устройствам, работающим по протоколу PLIP присваиваются имена ``plip0`', ``plip1` и т.д.

Опции компиляции ядра:

> `

>             Network device support  --->

>                 <*> PLIP (parallel port) support

> `

Протокол plip (Parallel line IP) -- аналое протокола SLIP, но работающий через параллельные порты Вашей машины (соответствующая разводка кабеля приведена далее в этом документе). Так же как и SLIP, он создает соединение типа точка-точка, но обеспечивает более высокую скорость соединения. Кроме того, даже самые обычные принтерные порты можно использовать вместо относительно дорогих карт на основе 16550AFN. Протокол PLIP довольно интенсивно использует процессор по сравнению с последовательным интерфейсом, так что более предпочтительной будет покупка недорогих ethernet-карт, но он вполне пригоден для использования, когда подобной возможности нет. Обычно на хорошо работающем PLIP-соединении можно достичь скорости 20 килобайт в секунду.

PLIP-устройство работает с такой же аппаратурой, что и драйвер параллельного порта, поэтому если Вы хотите их использовать одновременно, Вы должны будете откомпилировать их в виде модулей. После этого Вы сможете указать этим драйверам, какие порты должен использовать каждый из них. За подробностями о том, как компилировать драйвера в виде модулей, обратитесь к ``Mudules mini-HOWTO''.

К сожалению, на некоторых переносных компьютерах PLIP работать не будет, так как они на них не поддерживаются некоторые используемые plip-интерфейсом комбинации сигналов (эти сигналы не используются принтерами).

Реализация протокола PLIP в Линуксе совместима с драйвером Crynwyr Packet Driver PLIP, так что Вы сможете устанавливать plip-соединение между машиной под Линуксом и DOS-машиной и запускать на них любое сетевое программное обеспечение, использующее протокол tcp/ip.

В ядрах версий 2.0.* ядро устанавливает следующее соответствие между plip-устройствами и парами (порт,irq):

> `

>             устройство  порт   IRQ

>             ----------  -----  ---

>             plip0       0x3bc  5

>             plip1       0x378  7

>             plip2       0x278  2

> `

Если Ваш параллельный порт не подходит ни под одну из этих конфигураций, Вы можете использовать команду параметр ``irq`' программы ifconfig. Убедитесь, что Вы разрешили использование этих IRQ в ROM-BIOS. Другой способ -- использовать программу insmod с опциями ```io=`'' и ```irq=`''. Например:

> `

>             root# insmod plip.o io=0x288 irq=5

> `

Работа PLIP зависит от двух параметров задающих величины ожидания. Значения по умолчанию для этих параметров вполне подойдут в большинстве случаев, необходимость увеличивать их возникает только на очень медленных машинах. При этом увеличивать их следует на другой машине, соединенной с медленной. Для изменения этих задержек существует программа plipconfig, избавляющая от необходимости перекомпилировать ядро. Она входит во многие дистрибутивы Линукса.

Для настройки plip-интерфейса нужно выполнить следующие команды (или добавить их в стартовые скрипты):

> `

>             root# /sbin/ifconfig plip1 localplip pointopoint remoteplip

>             root# /sbin/route add remoteplip plip1

> `

В этом примере используется параллельный порт по адресу 0x378; localplip и remoteplip -- имена или IP-адреса машин, соединенных plip-соединением. Их можно хранить в файле `/etc/hosts`:

> `

>             # для интерфейса plip

>             192.168.3.1   localplip

>             192.168.3.2   remoteplip

> `

Параметр pointopoint имеет тот же смысл, что и для протокола SLIP -- он задает IP-адрес машины на другом конце соединения `точка-точка'.

Вы можете использовать plip-интерфейс так, как если бы это был интерфейс SLIP, за исключением того, что Вы не сможете (и необходимости в этом не возникнет) использовать программы dip и slattach применительно к этому интерфейсу.

Дальнейшая информация содержится в ``PLIP mini-HOWTO''.

## 7.3 Протокол PLIP в версиях ядра 2.2.*

В процессе разработки версий ядра 2.1.* настройка интерфейса PLIP была несколько изменена.

Опции компиляции ядра:

> `

>             General setup  --->

>                 [*] Parallel port support

>             Network device support  --->

>                 <*> PLIP (parallel port) support

> `

Новая реализация plip работает так же, как и старая (используйте те же самые команды ifconfig и route), однако инициализация устройства будет происходить несколько иначе

``Первое'' plip-устройство всегда получает имя ``plip0'', аналогично тому, как это происходит с ethernet-картами. Реально используемый этим устройством параллельный порт может быть любым из доступных системе параллельных портов (информация о них содержится в каталоге `/proc/parport`. Например, если у Вас в машине только один параллельный порт, этот каталог будет содержать единственный подкаталог `/proc/parport/0`).

Если ядро не смогло самостоятельно определить номер irq, используемый портом, запуск ```insmod plip`'' будет безуспешным. В этом случае запишите нужный номер irq в файл `/proc/parport/0/irq` и запустите insmod еще раз.

Полная информация о работе с параллельными портами содержится в файле `Documentation/parport.txt`, входящем в исходные тексты ядра.

## 7.4 PPP

Устройствам PPP ядро присваивает имена ``ppp0`', ``ppp1` и т.д. Устройства нумеруются по очереди, первое созданное устройство получает имя `ppp0`.

Опции компиляции ядра:

> `

>             Networking options  --->

>                 <*> PPP (point-to-point) support

> `

Подробности о настройке PPP приведены в PPP-HOWTO.

### Поддержка постоянного ppp-соединения с помощью pppd.

Если у Вас (полу-) постоянное подключение к интернет, и Вы хотите, чтобы Ваша машина автоматически восстанавливала его при необходимости -- воспользуйтесь программой pppd.

Настройте ppp так, чтобы пользователь `root` мог запускать его командой

> `

>     root# pppd

> `

В файле `/etc/ppp/options` обязательно должна присутствовать опция ``-detach`'. После этого добавьте строчку

> `

>     pd:23:respawn:/usr/sbin/pppd

> `

в файл `/etc/inittab` (после строк запуска демонов getty). Теперь процесс init будет перезапускать pppd, если тот ``умрет''.

## 7.5 SLIP-клиент

Устройствам SLIP ядро присваивает имена ``sl0`', ``sl1` и т.д. Устройства нумеруются по очереди, первое созданное устройство получает имя `sl0`.

Опции компиляции ядра:

> `

>             Network device support  --->

>                 [*] Network device support

>                 <*> SLIP (serial line) support

>                 [ ]  CSLIP compressed headers

>                 [ ]  Keepalive and linefill

>                 [ ]  Six bit SLIP encapsulation

> `

SLIP (Serial Line Internet Protocol, Протокол интернет-соединений по последовательным линиям) позволяет использовать для передачи tcp/ip последовательные линии, будь то телефонная линия с подключенным модемом или какая-нибудь выделенная линия. Для использования протокола SLIP Вам необходим доступ к SLIP-серверу. Такие сервера доступны во многих учебных и коммерческих учреждениях. p> Протокол SLIP использует для передачи IP-пакетов последовательный порт. Для этого он должен иметь доступ к соответствующему последовательному устройству. Для того, чтобы установить соответствие между slip-интерфейсами и последовательными портами используется механизм ioctl-вызовов (i/o control). Настройка выполняется с помощью программ dip и slattach.

### dip

dip (Dialup IP) -- весьма интеллектуальная программа, позволяющая устанавливать скорость работы последовательного порта, управлять модемом, автоматически регистрироваться на удаленной машине после соединения, принимать сообщения от SLIP-сервера и извлекать из них информацию о выделенном IP-адресе и выполнять необходимые ioctl-вызовы для переключения последовательного порта в SLIP-режим. Программа dip позволяет самостоятельно писать скрипты для автоматизации подключения к удаленной машине.

Вы можете получить эту программу с sunsite.unc.edu.

Для установки выполните следующие команды:

> `

>             user% tar xvzf dip337o-uri.tgz

>             user% cd dip-3.3.7o

>             user% vi Makefile

>             root# make install

> `

В файле `Makefile` предполагается, что у Вас на машине заведена группа uucp, но Вы можете при необходимости изменить ее на dip или SLIP.

### slattach

В противоположность dip, программа slattach достаточно проста и легка в использовании, но не имеет всех возможностей dip. Эта программа не поддерживает скриптов, все что она делает -- это настраивает последовательный порт. Предполагается, что Вы знаете все необходимые параметры Вашего соединения и Вы уже установили последовательное соединение с сервером перед тем как запустить slattach. Эта программа идеально подходит в случае постоянного подключения к серверу по выделенной линии.

### В каких случаях использовать какую программу?

Советуем Вам использовать программу dip если Вы соединяетесь с сервером с помощью модема по телефонной линии или у Вас другой тип непостоянного соединения. В случае постоянного соединения по выделенной линии (не требуется специальных действий для того, чтобы установить последовательное соединение) используйте программу slattach. Второй вариант подробно описан в разделе `Постоянное SLIP-соединение'.

Настройка slip-интерфейса во многом похожа на настройку ethernet (СМ. раздел `Ethernet'), однако есть несколько важных отличий.

Во-первых, в slip-соединении участвуют только 2 машины. В отличие от ethernet-сети, которая доступна все время, slip-соединение может потребоваться специальным образом восстанавливать в ходе работы.

Если Вы используете dip, slip-соединение устанавливается не в момент загрузки, а несколько позже, когда Вам потребуется реально использовать это соединение (эту процедуру можно автоматизировать). Если Вы используете slattach, Вам потребуется добавить блок установки соединения в файл rc.inet1. Подробности этого следуют ниже.

SLIP-сервера делятся на 2 типа -- сервера с динамическим выделением адресов (динамические сервера) и сервера со статическим выделением адресов (статические сервера). Почти любой SLIP-сервер предложит Вам ввести имя регистрации и пароль для установки соединения. Программа dip производит регистрацию автоматически.

### Сеансовое соединение, Статический SLIP-сервер и DIP.

Статический SLIP-сервер выделяет Вам один и тот же IP-адрес при любом соединении. Каждый раз, подключаясь к серверу, Вы настраиваете slip-интерфейс на использование этого адреса. Статический SLIP-сервер ответит на Ваш модемный вызов, предложит ввести имя регистрации и пароль, а затем будет маршрутизировать IP-пакеты, адресованные на Ваш адрес через созданный slip-интерфейс. В этом случае Вы можете добавить соответствующие строчки в файлы `/etc/hosts`, `rc.inet2`, `host.conf`, `resolv.conf`, `/etc/HOSTNAME` и `rc.local`. Обратите внимание, что редактировать файл `rc.inet1` не нужно -- настройка интерфейса будет целиком произведена программой dip. Все что Вам нужно указать ей всю необходимую информацию о Вашем последовательном порте.

Можете перейти к разделу `Использование программы Dip' для того, чтобы настроить dip.

### Сеансовое соединение, Динамический SLIP-сервер и DIP.

Динамический SLIP-сервер выделяет Вам при каждом соединении случайный IP-адрес из набора доступных. Это означает, что нет никакой гарантии, что данный момент времени Ваша машина имеет некоторый фиксированный IP-адрес, и что адрес, который Вы использовали будет использован кем-то другим после того как Вы прервали соединение. Администратор SLIP-сервера выделяет набор адресов, и при каждой регистрации сервер находит первый неиспользованный адрес, регистрирует пользователя, выделяет ему этот адрес и посылает сообщение, содержащее этот адрес.

Настройка для работы с таким типом сервера отличается только тем, что Вам нужно получить от сервера IP-адрес и настроить slip-интерфейс в соответствии с этим.

Как и в предыдущем случае, программа dip выполнит все необходимые действия, последние версии самостоятельно извлекают IP-адрес и настраивают slip-интерфейс.

Можете перейти к разделу `Использование программы Dip' для того, чтобы настроить dip.

### Использование программы DIP.

Как уже было сказано ранее dip -- мощная программа, которая может упростить и автоматизировать процесс соединения со SLIP-сервером, регистрации на нем и настройки slip-интерфейса с помощью программ ifconfig и route.

Для использования dip пишется `dip-скрипт' -- набор команд, понимаемых dip. Эти команды указывают как выполнять все необходимые для установки соединения процедуры. Для того, чтобы понять основную идею, можете взглянуть на файл `sample.dip`, идущий в комплекте с программой dip. dip имеет множество опций, с которыми можно ознакомится на man-странице, файле README и файлах-примерах из пакета dip.

p>Вы могли заметить, что в скрипте `sample.dip` предполагается, что Вы соединяетесь со статическим SLIP-сервером, и выделенный Вам IP-адрес известен заранее. Для динамических SLIP-серверов в последних версиях программы dip предусмотрена возможность автоматически считывать и использовать выделенный динамически IP-адрес. Приводящийся ниже пример -- модифицированный файл `sample.dip` из пакета dip337j-uri.tgz. Он может послужить хорошей отправной точкой. Можете скопировать его в `/etc/dipscript` и отредактировать в соответствии с Вашей конфигурацией.

> `

>     #

>     # sample.dip    Dialup IP connection support program.

>     #

>     #               Этот файл иллюстрирует использование программы DIP.

>     #       Он был опробован на динамических серверах типа Annex, если Вы

>     #       используете статический сервер, используйте файл sample.dip из

>     #       пакета dip337-uri.tgz .

>     #

>     #

>     # Version:      @(#)sample.dip  1.40    07/20/93

>     #

>     # Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>

>     #

>     main:

>     # Установка имени и адреса машины-сервера.

>     # В данном примере это 'xs4all.hacktic.nl' (== 193.78.33.42)

>     get $remote xs4all.hacktic.nl

>     # Установка маски на интерфейсе sl0 в 255.255.255.0

>     netmask 255.255.255.0

>     # Выбор последовательного порта и скорости соединения.

>     port cua02

>     speed 38400

>     # Сброс модема.

>     # Иногда приводит к проблемам!

>     reset

>     # "Стандартные" предопределенные значения переменной "errlevel":

>     #  0 - OK

>     #  1 - CONNECT

>     #  2 - ERROR

>     #

>     # Можете изменить их в функции "addchat()"

>     # Подготовка к дозвонке.

>     send ATQ0V1E1X4\r

>     wait OK 2

>     if $errlvl != 0 goto modem_trouble

>     dial 555-1234567

>     if $errlvl != 1 goto modem_trouble

>     # Соединение установлено.  Регистрация.

>     login:

>     sleep 2

>     wait ogin: 20

>     if $errlvl != 0 goto login_trouble

>     send MYLOGIN\n

>     wait ord: 20

>     if $errlvl != 0 goto password_error

>     send MYPASSWD\n

>     loggedin:

>     # Регистрация завершена.

>     wait SOMEPROMPT 30

>     if $errlvl != 0 goto prompt_error

>     # Перевести сервер в режим SLIP

>     send SLIP\n

>     wait SLIP 30

>     if $errlvl != 0 goto prompt_error

>     # Получение IP-адрес от сервера.

>     #   Здесь предполагается, что после перехода в режим SLIP сервер сообщает

>     #   выделенный IP-адрес

>     get $locip remote 30

>     if $errlvl != 0 goto prompt_error

>     # Установка параметров протокола SLIP.

>     get $mtu 296

>     # Выполнить "route add -net default xs4all.hacktic.nl"

>     default

>     # Завершение

>     done:

>     print CONNECTED $locip ---> $rmtip

>     mode CSLIP

>     goto exit

>     prompt_error:

>     print TIME-OUT waiting for sliplogin to fire up...

>     goto error

>     login_trouble:

>     print Trouble waiting for the Login: prompt...

>     goto error

>     password:error:

>     print Trouble waiting for the Password: prompt...

>     goto error

>     modem_trouble:

>     print Trouble occurred with the modem...

>     error:

>     print CONNECT FAILED to $remote

>     quit

>     exit:

>     exit

> `

В приведенном примере предполагается, что вы соединяетесь с динамическим SLIP-сервером. Если Вы используете статический сервер, используйте файл `sample.dip` из пакета dip337-uri.tgz.

Когда dip обрабатывает команду get $local, он ищет в полученных данных строку, которая выглядит как IP-адрес, то есть числа, разделенные символами `.'. Эта возможность была внесена специально для работы с динамическими SLIP-серверами. Она дает возможность автоматизировать процесс настройки на неизвестный заранее адрес.

В приведенном примере маршрутизация по умолчанию производится через slip-соединение, если для Вашей конфигурации это не подходит, уберите команду default из скрипта. Если Вы запустите программу ifconfig после окончания работы скрипта, Вы обнаружите устройство sl0. Это Ваш slip-интерфейс. При необходимости Вы можете его перенастроить с помощью программ ifconfig и route после того как программа dip завершится.

Программа dip позволяет выбрать много разных протоколов работы с помощью команды `mode`, наиболее распространенный пример -- протокол сжатия данных cSLIP. Обе машины, участвующие в slip-соединении должны установить одинаковый протокол работы.

Приведенный пример достаточно надежен и корректно обработает большинство возможных ошибок при соединении. Более подробная информация содержится на man-странице программы dip. Кроме того, Вы можете написать скрипт который будет пытаться перезванивать несколько раз в течении заданного периода времени или даже перебирать по очереди доступные SLIP-сервера, если их несколько.

### Постоянное SLIP-соединение по выделенной линии и программа slattach.

Если у вас есть выделенная линия или прямой кабель между двумя машинами, или какой-либо другой тип постоянного последовательного соединения, у Вас нет необходимости вникать во все сложности использования программы dip. Очень простая в использовании программа slattach позволит Вам настроить slip-соединение.

Поскольку речь идет о постоянном соединении, Вам потребуется добавить несколько команд в файл `rc.inet1`. Фактически, все что Вам нужно сделать -- это настроить скорость работы последовательного интерфейса и перевести его в режим SLIP. Именно для этого и предназначена программа slattach. Добавьте следующие строки в файл `rc.inet1`:

> `

>             #

>             # Установка статического slip-соединения по выделенной линии

>             #

>             # настройка /dev/cua0 на скорость 19.2kbps и протокол cslip

>             /sbin/slattach -p cslip -s 19200 /dev/cua0 &

>             /sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up

>             #

> `

Где:

IPA.IPA.IPA.IPA

  Ваш IP-адрес.

IPR.IPR.IPR.IPR

  IP-адрес машины на другом конце соединения.

Программа slattach выделяет первый неиспользуемый slip-интерфейс для работы через указанное последовательное устройство, начиная с sl0. Таким образом, первый вызов slattach связывает указанное устройство с интерфейсом sl0, второй вызов -- с интерфейсом sl0, и т.д.

slattach позволяет указывать разные протоколы соединения с помощью опции `-p`. Как правило это протоколы SLIP или cSLIP, в зависимости от того, используете ли Вы сжатие данных или нет. Внимание! Обе связывающиеся машины должны использовать один и тот же протокол.

## 7.6 SLIP-сервер.

Если у Вас есть подключенная к сети машина, через которую Вы хотите подключатся с других машин по последовательным линиям, Вы должны настроить эту машину как сервер. Если Вы выбрали в качестве протокола SLIP у Вас есть три варианта такой настройки. Автор предпочитает пользоваться первым -- программой sliplogin, самой легкой в настойке и освоении, но будут описаны и другие, так что Вы можете самостоятельно сделать выбор.

### SLIP-сервер на базе программы sliplogin.

sliplogin -- программа, которую Вы можете использовать вместо командного интерпретатора для пользователей, которые подключаются к Вашему серверу по протоколу SLIP. Она позволяет Вашей машине быть как статическим (пользователю всегда выделяется фиксированный IP-адрес), так и динамическим (пользователь получает при регистрации первый свободный IP-адрес из заданного набора) SLIP-сервером. sliplogin преобразует терминал в slip-соединение.

Пользователь регистрируется так же как и при локальной регистрации, вводя имя регистрации и пароль, но вместо обычного командного интерпретатора запускается sliplogin. Она ищет в файле `/etc/slip.hosts` строку, соответствующую введенному имени регистрации. Если такая строка находится, sliplogin настраивает последовательную линию на режим 8 бит без стоп-битов и переводит ее в режим SLIP. После этого запускается скрипт, который настраивает slip-интерфейс на использование нужного IP-адреса, маски и настраивает маршрутизацию. Этот скрипт обычно называется `/etc/slip.login`, но как и в случае с getty, Вы можете для некоторых пользователей создать специальные инициализационные скрипты с именами `/etc/slip.login.loginname`, которые запустятся при регистрации этого пользователя.

Для полной настройки программы sliplogin Вам потребуется отредактировать 4 (иногда 5) файла. Это файлы:

- `/etc/passwd`, для создания пользователей.
- `/etc/slip.hosts`, содержащий информацию, специфичную для каждого из slip-пользователей.
- `/etc/slip.login`, настраивающий маршрутизацию для пользователя после регистрации.
- `/etc/slip.tty`, этот файл нужен только в случае динамического SLIP-сервера. Он содержит список допустимых IP-адресов
- `/etc/slip.logout` -- содержащий команды, которые надо выполнить после отключения пользователя.

### Где взять sliplogin

Пакет sliplogin входит во многие дистрибутивы, поэтому он уже может быть установлен на Вашей машине. Если это не так, Вы можете получить его с sunsite.unc.edu. В состав пакета входят исходные тексты, откомпилированные программы и man-страница.

Для того, чтобы доступ к sliplogin имели только нужные пользователи, добавьте в файл `/etc/group` подобную строку:

> `

>      ..

>     slip::13:radio,fred

>      ..

> `

Когда Вы устанавливаете пакет sliplogin, группой-владельцем программы sliplogin устанавливается группа `slip`, и только пользователи из этой группы могут запускать sliplogin. В приведенном примере запускать sliplogin смогут только пользователи `radio` и `fred`.

Для установки пакета используйте следующие команды:

> `

>     user% cd /usr/src

>     user% gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -

>     user% cd sliplogin-2.1.1

>     user% <..отредактируйте файл Makefile если Вы не используете механизм теневых паролей ..>

>     root# make install

> `

Если Вы хотите перекомпилировать программу перед установкой, добавьте команду `make clean` перед `make install`. Если Вы хотите установить sliplogin не в каталог /sbin, а в какой-либо другой, отредактируйте правило install в файле `Makefile`.

Дополнительная информация содержится в файле `README`, входящем в состав пакета.

### Настройка файла `/etc/passwd` для работы со SLIP.

Как правило, Вам потребуется завести в файле `/etc/passwd` специальных пользователей, для тех, кто использует Вашу машину в качестве SLIP-сервера. Повсеместно используется следующее правило присвоения имен: имя пользователя получается из заглавной 'S' и имени машины. Например, если с Вашим сервером соединяется машина `radio`, то в файле `/etc/passwd` будет запись следующего вида:

> `

>     Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin

> `

В целом не очень важно, как будет называться пользователь, главное чтобы имена не создавали путаницы.

Замечание: Для этих пользователей не нужно создавать ``домашние каталоги'', в качестве такого каталога можно указать `/tmp`. Обратите внимание, что в качестве командного интерпретатора используется sliplogin.

### Файл `/etc/slip.hosts`

sliplogin ищет в этом файле информацию, которая относится к зарегистрировавшемуся пользователю. В этом файле указывается IP-адрес и маска, которые будут присвоены пользователю после регистрации. Например, информация для машины `radio`, которая получает статический IP-адрес и машины `albert`, которая получает динамический IP-адрес может выглядеть так:

> `

>     #

>     Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1

>     Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60

>     #

> `

Строки в файле `/etc/slip.hosts` делятся на следующие поля:

1. имя регистрации пользователя.
2. IP-адрес сервера, т.е. этой машины.
3. IP-адрес, который надо присвоить пользователю. Если это поле имеет значение `DYNAMIC` то IP-адрес будет выделен на основе информации из файла `/etc/slip.tty` (СМ. ниже). Внимание! Вы должны использовать версию sliplogin не менее 1.3 для того чтобы пользоваться этой возможностью.
4. маска, присваиваемая пользователю в десятичной записи. Например 255.255.255.0 для маски сети класса C.
5. Режим протокола SLIP при работе с этим пользователем. Допустимые значения "`normal`", "`compressed`" и некоторые другие.
6. Временная задержка, в течении которой программа будет ожидать данных. Если в течении этого периода не будет передано или получено ни одного IP-пакета соединение будет автоматически разорвано. Если Вы не хотите, чтобы это происходило, задайте отрицательное значение этого параметра.
7. дополнительные параметры.

Замечание: В полях 2 и 3 Вы можете использовать IP-адреса, так и имена. Если Вы используйте имена, убедитесь что эти имена удается преобразовать в IP-адреса, иначе регистрация не выполнится. Для проверки попробуйте запустить telnet на машину с нужным именем, если Вы увидите сообщение вида `Trying nnn.nnn.nnn...' то преобразование было успешным -- Ваша машина смогла определить IP-адрес для этой машины. Иначе Вы получите сообщение `Unknown host' -- в этом случае задайте IP-адрес явно или проверьте настройки системы преобразования имен (СМ. раздел `Система преобразования имен`).

Чаще всего используются режимы SLIP

normal

  SLIP без сжатия данных.

compressed

  сжатие заголовков пакетов (cSLIP)

Эти два режима взаимоисключающие -- Вы не можете использовать их одновременно. Остальные опции описаны на man-странице.

### Файл `/etc/slip.login`.

Если sliplogin нашел в файле `/etc/slip.hosts` подходящую запись, он пытается выполнить скрипт `/etc/slip.login`. Этот скрипт настраивает slip-интерфейс на сервере.

Пример файла `/etc/slip.login`, включенный в пакет sliplogin выглядит так:

> `

>     #!/bin/sh -

>     #

>     #       @(#)slip.login  5.1 (Berkeley) 7/1/90

>     #

>     # инициализационный скрипт для SLIP-сервера. Параметры:

>     #     $1               $2       $3    $4, $5, $6 ...

>     #   имя_интерфейса  скорость    pid   параметры из файла slip.host

>     #

>     /sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up

>     /sbin/route add $6

>     arp -s $6 <hw_addr> pub

>     exit 0

>     #

> `

Этот скрипт использует программы ifconfig и route для настройки slip-интерфейса, точно так же, как это делает программа slattach.

Кроме того последняя команда скрипта создает ARP-запись, для того, чтобы машины в локальной сети сервера могли соединятся с удаленной машиной. В поле `<hw_addr>` вы должны указать аппаратный адрес ethernet-карты на сервере. Если сервер не подключен к локальной сети, эту команду можно опустить.

### Файл `/etc/slip.logout`.

Когда последовательное соединение завершается, нужно вернуть slip-устройсво в исходное состояние, так чтобы следующие slip-пользователи могли нормально регистрироваться. Для этого используется файл `/etc/slip.logout`. Это скрипт, вызывающийся с теми же параметрами, что и `/etc/slip.login`.

> `

>             #!/bin/sh -

>             #

>             #               slip.logout

>             #

>             /sbin/ifconfig $1 down

>             arp -d $6

>             exit 0

>             #

> `

В данном примере он дезактивирует интерфейс и удаляет arp-запись. Если сервер не подключен к локальной сети, запуск arp можно опустить.

### Файл `/etc/slip.tty`.

Если Ваш сервер поддерживает динамическое выделение адресов и некоторые из записей в файле `/etc/slip.hosts` имеют значение `DYNAMIC` в поле IP-адреса, то Вы должны создать файл `/etc/slip.tty`, содержащий список адресов для каждого из портов.

Файл `/etc/slip.tty` содержит список устройств tty, настроенных на работу по протоколу SLIP и IP-адреса, которые надо присваивать пользователю при соединении через эти устройства.

Пример такого файла:

> `

>     # slip.tty    список соответствий tty -> IP-адрес

>     # формат: /dev/tty?? xxx.xxx.xxx.xxx

>     #

>     /dev/ttyS0      192.168.0.100

>     /dev/ttyS1      192.168.0.101

>     #

> `

Этот файл указывает что при соединении через устройство `/dev/ttyS0` для пользователей с полем `DYNAMIC` в файле `/etc/slip.hosts` будет присвоен адрес `192.168.0.100`.

При такой системе Вам достаточно выделить по одному адресу для каждого последовательного порта, при этом количество потраченных адресов будет минимальным.

### SLIP-сервер на базе программы dip.

Часть приведенной в этом разделе информации взята с man-страницы программы dip, на которой вкратце описано ее использование в качестве slip-сервера. Кроме того эта информация относится к версии dip337o-uri.tgz пакета dip, в других версиях возможны изменения.

В dip есть ``входной'' режим работы, при котором автоматически отыскивается запись в файле `/etc/diphosts` о пользователе, который запустил dip, и в соответствии с ней настраивается интерфейс и соединение переводится в режим SLIP. Чтобы запустить dip в таком режиме, нужно выполнить команду diplogin. Чтобы использовать dip в качестве SLIP-сервера, нужно создать пользователей, у которых в качестве командного интерпретатора указан diplogin.

Сначала Вы должны создать ссылку:

> `

>     # ln -sf /usr/sbin/dip /usr/sbin/diplogin

> `

После этого добавьте записи в файлы `/etc/passwd` и `/etc/diphosts`. Чтобы использовать dip в качестве SLIP-сервера создайте пользователей с командным интерпретатором diplogin. Обычно имена этих пользователей делают начинающимися на заглавное `S', например `Sfredm'. Строка в файле `/etc/passwd` для такого пользователя будет выглядеть так:

> `

>     Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin

>     ^^         ^^        ^^  ^^   ^^   ^^   ^^

>     |          |         |   |    |    |    \__ командный интерпретатор diplogin

>     |          |         |   |    |    \_______ Домашний каталог

>     |          |         |   |    \____________ Полное имя

>     |          |         |   \_________________ ID группы

>     |          |         \_____________________ ID пользователя

>     |          \_______________________________ Зашифрованный пароль

>     \__________________________________________ имя пользователя

> `

После того, как программа login успешно зарегистрирует такого пользователя будет выполнена программа diplogin. dip при таком запуске переходит во ``входной'' режим, и вызывает функцию getuid(), чтобы определить текущего пользователя. После этого в файле `/etc/diphosts` ищется первая подходящая строка с нужным именем пользователя или tty устройством и dip выполняет все нужные настройки. Помещая запись о пользователе в файл `diphosts` Вы создаете для него специальную конфигурацию для остальных пользователей будет выбрана конфигурация по умолчанию. Таким образом вы можете создавать пользователей со статическим или динамическим адресом.

dip автоматически создает arp-запись при работе во ``входном'' режиме, так что Вам не нужно беспокоится создании и удалении этих записей вручную.

### Файл `/etc/diphosts`.

Файл `/etc/diphosts` используется программой dip. В этом файле хранятся настройки для удаленных машин. Это могут быть машины, которые используют Вашу машину в качестве сервера или машины, которые Вы используете в качестве сервера. Формат этого файла следующий:

> `

>      ..

>     Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

>     ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296

>      ..

> `

Каждая строка состоит из нескольких полей:

1. `имя пользователя`: имя, возвращаемое getpwuid(getuid()) или имя tty.
2. `не используется`: для совместимости с passwd
3. `Удаленный адрес`: IP-адрес удаленной машины или ее имя
4. `Local Address`: IP-адрес этой машины или ее имя
5. `Маска`: IP-маска в десятичной записи
6. `Комментарий`: можете вносить сюда свои примечания.
7. `протокол`: Slip, CSlip и др.
8. `MTU`: десятичное число

Пример такой строки:

> `

>     Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

> `

Эта строка определяет соединение с машиной по адресу 145.71.34.1 по протоколу SLIP с mtu 296.

Или:

> `

>     Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

> `

Эта строка определяет соединение с машиной по адресу 145.71.34.2 по протоколу cSLIP с mtu 1006.

Все пользователи, которым адрес выделяется статически, должны иметь свои строчки в файле `/etc/diphosts`. Если Вы хотите, чтобы адрес присваивался динамически -- создайте запись для `tty`-устройства и не создавайте записи для этого пользователя. Обязательно создайте по одной записи для каждого `tty`-устройства, которое используется для доступа по протоколу SLIP, чтобы пользователь всегда получил настроенное соединение независимо от того, по какой линии он дозвонился.

Когда пользователь устанавливает соединение, ему предлагают ввести имя и пароль как при обычной локальной регистрации. Пользователь должен ввести slip-имя и пароль. Если регистрация проходит успешно, пользователю будет достаточно переключится в slip-режим. При этом соединение со стороны сервера будет настроено в соответствии с информацией из файла `diphosts`.

### SLIP-сервер на базе пакета dSLIP.

Матт Дилон (Matt Dillon `<dillon@apollo.west.oic.com>`) написал пакет, который позволяет Вашей машине быть slip-сервером и slip-клиентом. Этот пакет состоит из множества маленьких программ и скриптов, управляющих slip-соединением. Для нормальной работы пакета Вы должны установить пакет tcsh. В состав dSLIP включена программа expect, и Вам возможно потребуется небольшой опыт работы с этой программой для того, чтобы настроить пакет под свои нужды. Это несложно, так что не пугайтесь.

Файл README содержит очень хорошие инструкции по установке пакета, так что нет смысла повторять их здесь.

Пакет dSLIP можно получить с домашнего сайта apollo.west.oic.com или с sunsite.unc.edu.

Прочтите файл `README`, создайте нужные записи в файлах `/etc/passwd` и `etc/group` и выполните команду `make install`.

Previous Next Table of Contents