Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Действия со SLIP

Серверы Dialup IP часто предлагают сервис SLIP через специального пользователя. После регистрации под именем такого пользователя Вы не входите в общую оболочку: взамен используется SLIP-драйвер серверов последовательной линии и настраивается соответствующий сетевой интерфейс.

В некоторых операционных системах драйвер SLIP является программой уровня пользователя. Но под Linux это часть ядра, которая делает связь намного быстрее. Требуется, чтобы последовательная линия явно была преобразована в SLIP-режим. Это выполнено посредством tty line discipline SLIPDISC. Пока tty находится в обычной line discipline (DISC0), она обменивается данными только с процессами уровня пользователя, применяя вызовы read(2) и write(2), SLIP-драйвер в это время отключен для записи или чтения из tty. В SLIPDISC все наоборот: все данные, поступающие на последовательный порт, будут пропущены через SLIP-драйвер в обход программ уровня пользователя.

SLIP-драйвер непосредственно понимает несколько разновидностей протокола SLIP. Кроме обычного SLIP, он также понимает CSLIP, который выполняет так называемое Van Jacobson header compression (сжатие заголовков) на исходящих IP-пакетах (подробно описано в RFC-1144). Дополнительно имеются шестибитовые версии для каждого из протоколов.

Простой способ преобразовать последовательную линию в SLIP-режим, это использовать команду slattach. Допустим, что у Вас есть модем на /dev/ttyS3, и Вы удачно подсоеденились к SLIP-серверу. Затем Вы выполните:
# slattach /dev/ttyS3 &

Это включит line discipline SLIPDISC для порта ttyS3 и подсоединит ее к одному из интерфейсов SLIP-сети. Если это Ваша первая активная SLIP-связь, то линия будет подсоединена к sl0, вторая была бы подсоединена к sl1 и так далее. Текущие ядра поддерживают до 256 одновременных SLIP-связей.

Заданное по умолчанию оформление пакета, выбранное slattach, CSLIP. Вы можете выбрать любой другой режим, используя опцию -p. Для того, чтобы использовать нормальный SLIP (без сжатия), Вы должны использовать:
# slattach -p slip /dev/ttyS3 &

Другие режимы перечислены в таблице 7-1. Есть спецрежим adaptive для адаптивного SLIP. Он предназначен для того, чтобы выяснить, какой тип оформления пакета SLIP использует удаленная машина.

Таблица 7-1. Режимы Linux Slip

Режим

Описание
slip

Обычный SLIP.

cslip

Сжатый SLIP (Van Jacobsen header compression).

slip6

SLIP с шестибитным кодированием. Метод кодирования похож на применяемый программой uuencode и переводит пакеты SLIP в печатаемые символы ASCII. Удобно, если линия не способна передавать восемь бит.

cslip6

Сжатый SLIP (Van Jacobsen header compression) с шестибитным кодированием.

adaptive

Выясняет параметры удаленной машины и устанавливает у себя такие же.

Заметьте, что Вы обязаны использовать такое же оформление, какое имеет удаленная машина. Например, если сервер cowslip использует CSLIP, Вы должны использовать его же. Симптомы рассогласования будут такие, что связь просто не работает. Один способ избежать этой неприятности: использовать adaptive SLIP.

Фактически, slattach позволяет Вам включить не только SLIP, но и другие протоколы, которые используют последовательную линию, как PPP или KISS (другой протокол, используемый в ham radio). Подробно это рассмотрено на man-странице slattach(8).

После передачи линии SLIP драйверу, Вы должны сконфигурировать сетевой интерфейс. Снова используются команды ifconfig и route. Предположим, что с машины vlager Вы соединились с сервером cowslip. Тогда Вы должны выполнить:
# ifconfig sl0 vlager-slip pointopoint cowslip
# route add cowslip
# route add default gw cowslip

Первая команда конфигурирует интерфейс как связь point-to-point с cowslip, в то время как вторая и третья команды добавляют маршрут к cowslip и задают маршрут по умолчанию, используемый cowslip как шлюз.

Два замечания относительно ifconfig: опция pointopoint, которая определяет адрес удаленной машины в соединении типа point-to-point, и использование vlager-slip как адреса локального SLIP-интерфейса.

Я упомянул, что Вы можете использовать тот же самый адрес, который назначили интерфейсу Ethernet машины vlager и для связи по SLIP. В этом случае, vlager-slip может быть псевдонимом для адреса 172.16.1.1. Однако, также возможно, что Вы должны использовать совсем другой адрес для SLIP. Один такой случай: Ваша сеть использует незарегистрированный сетевой IP адрес (для частных сетей), как Brewery. Это будет подробно рассмотрено чуть позже, а пока будем всегда использовать vlager-slip, чтобы обратиться к адресу локального интерфейса SLIP.

При завершении SLIP-связи Вы сначала должны удалить все маршруты cowslip, используя route c опцией del, убрать интерфейс и передать slattach сигнал hangup:
# route del default
# route del cowslip
# ifconfig sl0 down
# kill -HUP 516
Здесь 516 надо заменить на process id (находится в списке, выводимом командой ps ax) процесса slattach.