PPPD

Вам нужен сам pppd (Point to Point Protocol Daemon) и понимание, как он работает. Если необходимо, прочитайте RFC или Linux PPP HOWTO. Вы не используете процедуру входа, не используете (m)getty и вам не нужна (липовая) аутентификация, вам не нужны никакие чат-скрипты. На самом деле, из-за того, что модемы тоже настроены, вам нужно настроить 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. Подробнее о маршрутизации читайте в соответствующем разделе NET3-4-HOWTO.

Проверка

Аналогично проверке модемов. Если все работает, установится связь с удаленной системой. В противном случае, первое, что вы должны проверить, это скорость COM портов. Часто встречающаяся ошибка - настройка модемов через Minicom на одну скорость, а pppd на другую. НЕ выйдет! Должна быть установлена та же скорость!