Работа по выделенным линиям

Что такое "выделенная линия"

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

Это документ описывает:

Как сконфигурировать ваш модем и pppd для использования на двухпроводной выделенной линии.

Этот документ НЕ описывает:

SLIP, инсталяцию pppd, синхронный обмен данными, модемы с прямой передачей, xDSL.

Предположения

Предполагается, что в вашей системе уже настроен и работает pppd, и есть терминальная программа, при помощи которой можно конфигурировать модем (Minicom).

Модем

Выделенная линия не подключается к АТС. На ней нет напряжения, и она не дает никаких гудков и сигналов. Это значит, что ваши модемы предоставлены самим себе и должны уметь работать в такой ситуации.

У вас должно быть 2 идентичных (включая номер версии) внешних модема, поддерживающих работу на выделенной линии. Убедитесь в этом! Убедитесь также, что у модема есть вся документация. Кроме того вам понадобится:

2 полностью экранированных кабеля RS232. Экран должен быть подключен к корпусу (а не к первому контакту) на обоих (а не одном) концах.

Для проверки может понадобиться тестовая заглушка RS232.

Два кабеля RJ11, на каждую сторону выделенной линии.

Знание основ `AT' команд.

Настройка модема

В общих чертах настройка модема такова: Настройте программу для работы с удаленным терминалом (Minicom) на максимально возможную скорость; 57600 б/с для 14400 и 115200 б/с для 28800 и выше. Многие используют очень длинные строки инициализации модема, начинающиеся с AT&F и содержащие кучу специфичных команд. Зачем так усложнять? Большинство программ используют те же настройки, и их вполне можно записать в энергонезависимую память модема и использовать `ATZ' в качестве инициализации во всех программах. При этом вы можете поменять модем без перенастройки программного обеспечения.

Большинству программ требуются следующие настройки:

Фиксированную скорость передачи

Аппаратный контроль передачи RTS-CTS (не X-ON/X-OFF)

8 бит, без четности, 1 стоповый бит

Модем должен давать ПРАВИЛЬНЫЙ DCD (&C1)

Модем НЕ должен игнорировать DTR (&D2 или &D3)

Проверьте это при помощи AT&V или AT&Ix (посмотрите документацию модема).

Эти установки могут быть не похожи на заводские (&F), так что начинать строку инициализации с AT&F в нашем случае - не очень хорошая идея. Хотя вполне логично это сделать, если вы уверены, что нарушены установки в энергонезависимой памяти. Если вы уверены, что все настроили правильно, сохраните это в энергонезависимой памяти (AT&W) и попробуйте передать пару текстовых и двоичных файлов при помощи Z-модема. Если все нормально, переходим к следующему шагу - настройке модемов на выделенную линию.

Найдите в документации, как настроить ваш модем на "тупой" (dumb) режим, и (что очень немаловажно) как его из этого режима вывести. Убедитесь, что вы действительно настроили модем на максимальную скорость. Модем в "тупом" режиме игнорирует все `AT' команды и не может настроиться на скорость COM порта - он использует скорость, хранящуюся в S-регистре модема, записанную туда командой AT&W.

Теперь настройте следующее:

Сброс модема при изменении DTR (&D3, иногда это в S-регистре). Это требуют некоторые провайдеры!

Режим выделенной линии (&L1 или &L2, посмотрите документацию модема)

Удаленный модем настройте на автоответ (S0=1), а свой модем на вызов (S0=0)

Выключите вывод результатов (Q1, иногда в "тупом" режиме это делается автоматически)

"Тупой" режим (\D1 or %D1, иногда - перемычка). В "тупом" режиме модем игнорирует все AT команды (возможно, вам потребуется отключить символ ESC).

Запишите настройки в энергонезависимую память (&W).

Проверка

Подключите модемы к двум компьютерам через кабель RS232 и соедините модемы кабелем RJ11. Запустите терминальную программу (Minicom (Linux), procom или telix (DOS)) на обоих компьютерах. Текст, набираемый но одном компьютере, должен появляться на другом, и наоборот. Если на экран выводится мусор, проверьте настройки COM порта. Отключите и снова включите кабель RJ11. Подождите пока соединение восстановится. Отключите и снова включите кабеля RS232, выключите и снова включите модемы, перезапустите Minicom. Во всех случаях модемы должны соединяться на максимально возможной скорости. Проверьте, что оба модема действительно игнорируют ESC (+++). Если необходимо, отключите его.

Если все это работает, вам осталось только выключить звук на удаленном модеме (M0) и поставить низкую громкость звука на своем (L1).

US Robotics Courier V-Everything

USR Sportster и USR Courier-I не поддерживают работу на выделенной линии. Вам нужен Courier V-Everything. На веб-сайте USR `описывается', как настроить Courier на выделенную линию. Тем не менее, следуя этим инструкциям, вы получите полностью тупой модем, которым нельзя управлять.

USR Courier может быть настроен перемычками, но сначала вам понадобится программная настройка. Для начала, убедитесь, что используете правильные заводские установки. В отличии от других модемов, у USR Courier их три (&F0, &F1 and &F2). Вы должны использовать &F1. Учтите, что при команде AT&F загружаются установки &F0! Для сброса модема при изменении DTR вам нужно установить бит 0 регистра S13. Кроме того, нужно настроить его на выделенную линию (&L1); ATS13=1&L1&W Переключатели должны быть выставлены следующим образом:

3

OFF Выключает вывод результата команд

4

ON Выключает AT команды

5

ON Для вызывающего, OFF Для отвечающего

8

OFF "Немой" режим

PPPD

Вам нужен сам pppd (Point to Point Protocol Daemon) и понимание, как он работает. Если необходимо, прочитайте RFC или Linux PPP HOWTO. Вы не используете процедуру входа, не используете (m)getty и вам не нужна (липовая) аутентификация, вам не нужны никакие чат-скрипты. На самом деле, из-за того, что модемы тоже настроены, вам нужно настроить pppd на работу с нуль-модемным кабелем.

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

Сразу после загрузки системы pppd должен поднять DTR и дождаться DCD (поднимется соединение).

Если удаленная система не отвечает, pppd должен дождаться ответа.

Если соединение разрывается, pppd должен сбросить модем (сбросить и поднять DTR) и попытаться снова поднять связь.

Если качество связи ухудшается, pppd должен сбросить модем и снова поднять связь.

Должен существовать процесс, контролирующий pppd. В случае чего, он должен перезапустить pppd.

Настройка

Допустим модем подключен к COM2. Локальный IP адрес - `Local_IP'. Удаленный IP адрес - `Remote_IP'. Значение MTU - 576. В этом случае, /etc/ppp/options.ttyS1 должен выглядеть примерно так:

crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
#noauth
-pap
persist

Подразумевается, что `asyncmap 0', `lock', `modem' и `-detach' уже находятся в /etc/ppp/options. Если нет, добавьте их в /etc/ppp/options.ttyS1. Итак, если IP адрес вашей системы - 192.168.1.1, а удаленной - 10.1.1.1, то /etc/ppp/options.ttyS1 должен быть таким:

crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
#noauth
-pap
persist

Файл options.ttyS1 на удаленной системе:

crtscts
mru 576
mtu 576
passive
10.1.1.1:192.168.1.1
-chap
modem
#noauth
-pap
persist

Опция passive ограничивает количество попыток соединения. Опция persist заставляет pppd работать в случае разрыва или невозможности соединения. Если вы используете telnet при большом файловом обмене (FTP или HTTP), вы можете использовать меньший MTU и MRU (например 296), т.к. в этом случае удаленная система будет отвечать быстрее. Если вы используете линию для перекачки больших файлов, вы можете установить MTU и MRU равными 1500. Только учтите, что UDP не делится на фрагменты, т.е., для передачи UDP пакетов размером 512 байт, MTU должен быть равен 542 байтам. Опция noauth может быть использована в новых версиях pppd.

Скрипты

Запуск и поддержка pppd

Вы можете запустить pppd во время запуска системы (rc скрипты). Но в этом случае, если pppd упадет, вы останетесь без связи. Более стабильным решением является запуск pppd из /etc/inittab:

s1:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200

В этом случае pppd будет постоянно перезапускаться. Убедитесь в том, что у вас установлена опция `-detach' (nodetach в новых версиях), иначе inittab запустит множество процессов pppd с последующим `respawning too fast' (перезапуск происходит слишком быстро).

Примечание: Некоторые старые системы не понимают скорость `115200'. В этом случае, вам нужно поставить скорость 38400 и установить флаг `spd_vhi' d команде setserial. В некоторых системах нужно использовать `cua' вместо `ttyS'.

Установка маршрутизации

Основной маршрут может быть включен опцией defaultroute или с помощью скрипта /etc/ppp/ip-up:

#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
;;
esac

Ip-up можно также использовать для синхронизации времени (netdate).

Конечно, маршрут, устанавливаемый в ip-up, может быть не основным. Возможен вариант, когда ваш ip-up устанавливает маршрутизацию на удаленную сеть, а удаленная система устанавливает маршрутизацию на вашу сеть. Если у вас сеть 192.168.1.0, а интерфейс для ppp - 192.168.1.1, ip-up на удаленной машине должен выглядеть примерно так:

#!/bin/bash
case $2 in
/dev/ttyS1)
/sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
;;
esac

('case $2' и `/dev/ttyS1)' необходимо, если у вас несколько ppp-каналов. Ip-up будет запускаться каждый раз, но исполняться будет только кусок между `/dev/ttySx)' и `;;', устанавливая маршрутизацию для данного ttyS.