Разделенное использование модема в Linux

Этот документ описывает, как настроить Linux для разделенного (shared) использования модема, подключенного к системе, с другими системами по сети TCP/IP.

Требования к серверу

Предполагается, что сервер - это Linux система с:

a);модемом, подключенным к устройству /dev/ttySx

b);или 'isdn4linux'-эмуляцией модема в устройстве /dev/ttyIx

Наиболее простым способом является создание "модемного демона" (daemon) - perl-скрипта, состоящего из пяти строк:

$ cat /usr/sbin/modemd

#!/usr/bin/perl
select((select(STDOUT), $| = 1)[$[]);
select((select(STDIN), $| = 1)[$[]);
exec 'cu -s 115200 -l /dev/ttyS1';
die '$0: Cant exec cu: $!\n';

Этот демон будет запускаться INETD, если клиент подключится к соответствующему порту, как описано ниже. 'modemd' просто соединяет гнездо (socket) со стандартными входами и выходами команды 'cu', и оставляет за 'cu' управление реальным модемным устройством. В случае, если у вас нет 'cu', установите пакет 'UUCP', частью которого является 'cu'.

Надо сообщить INETD о наличии модемного демона, просто отредактировав его файл конфигурации INETD, (обычно это /etc/inetd.conf) примерно так:

#
# Модемный демон
#
modem stream tcp nowait root /usr/sbin/tcpd /usr/sbin/modemd /dev/ttyS1

Чтобы это заработало, добавьте в файл '/etc/services' строку типа:

modem;2006/tcp;modemd

Строка, приведенная выше, назначает символьное название свободному порту, например 2006. Номер порта может быть любым, который еще не выделен под существующий сервис. После этих изменений необходимо послать сигнал inetd, чтобы он перечитал и обработал свой конфигурационный файл:

$ ps |grep inetd
194;?;S;0:00 /usr/sbin/inetd

kill -HUP 194

Теперь сервер готов принимать запросы от клиентов. Правильность настройки можно проверить командой:

$ telnet localhost modem

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Теперь вы подключены к модему. Использовать 'AT'-команды для проверки правильности настройки:

atz
atz
OK

ati1
ati1
Linux ISDN
OK

^]
telnetquit
$;

Вместо использования perl-скрипта в виде модемного демона, можно использовать программу;'mserver', доступную по адресу ftp://ftp.innet.be/pub/staff/carl/ . В случае, если там его уже нет, используйте 'archie' или другую поисковую систему для поиска архива mserver-а. Я, к сожалению, не имел возможности установить и использовать mserver.

Требования к клиенту

На настоящий момент, здесь описана только настройка Windows-клиентов. На клиентской машине необходимо установить программу переназначения (redirector) COM-порта на TCP/IP. Лучшая программа, которую я видел, -;'DialOut/IP' производства 'Tactical Software' для Windows 3.1 и Windows 95.;(Версия для Windows 3.1 может использоваться и на Windows NT, но только для 16-битных приложений. 32-битная версия для Windows NT должна выйти в конце лета 1997 года.)

DialOut/IP представляет разделенный на сервере модем, как новый виртуальный COM-порт, добавленный к Windows. Этот виртуальный COM-порт может использоваться Windows так же, как будто он напрямую подключен к машине. Многие клиентские приложения (включая сам Windows 95 с его удаленным соединением) понимают это и работают так, как будто к машине на самом деле подключен COM-порт с модемом, кроме, пожалуй, факсовых программ и всех остальных, которые напрямую обращаются к управляющим сигналам микросхемы UART. DialOut/IP может поддерживать и обработку протокола Telnet, но эта функция относится к специальным модемным пулам, а не к настройке Linux, описанной выше. Заметьте, что несмотря на название, программа DialOut/IP может также использоваться для обработки входящих звонков.

На сервере www.tactical-sw.com есть страница, откуда можно загрузить полностью работающую оценочную версию, которая работает 1-2 недели. Установка и настройка проводятся в программе инсталляции, а все детали описаны в файле README.TXT. Когда вы запустите DialOut/IP, введите IP-адрес и номер порта разделенного модема.

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

Безопасность

Если у вас только один модем для всех машин в локальной сети, то, наверно, не стоит беспокоиться о безопасности. Однако, если одна или несколько ваших машин подключены к Интернет, не используя этот разделенный модем, который мы только что настроили, то ограничение доступа необходимо. В противном случае, кто угодно сможет набрать 'telnet your_host modem' и позвонить по междугородней или даже по международной связи.

Я советую настроить tcp-wrappers, чтобы защитить модемный сервер от неавторизованного доступа.

Примеры

Я использовал настройки, описанные в (2) и (3) для запуска программы "Quicken" на моем "Windows 95 ThinkPad" и производил банковские финансовые операции с модема, подключенного к моему Linux-у. "Модем", в моем случае, был;не совсем модемом - это была эмуляция модема на ISDN карте. "Quicken" просто видел COM-порт, он не знал того, что устройство на самом деле подключено к COM-порту машины на другом конце сети, как и не знал того, что это не простой модем, а ISDN-устройство, которое почему-то понимало 'AT'-команды.