Как соединить компьютеры через телефонную сеть?

Недавно в редакцию пришло письмо следующего содержания: "Здравствуйте, довольно интересная у вас газета. Хочу попросить написать статью о том, как соединить два компьютера через телефонную сеть. И еще очень жаль, что очень мало статей для начинающих. До свидания, желаю дальнейшего процветания вашей газете".

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

Терминальное соединение
Используется, в основном, для серфинга по bulletin board system (BBS) и передачи файлов между двумя компьютерами. Чтобы воспользоваться данным типом соединения необходимо иметь терминальную программу на обоих соединяемых компьютерах, либо, если используется подключение к BBS, только на компьютере, с которого производится установка соединения. 
Что собой представляет терминальная программа:
— эмулятор терминала (ANSI, VT100, VT52, TTY);
— набор протоколов для передачи файлов (Zmodem, Xmodem, Ymodem, Kermit, Hydra, Janus).
Наиболее часто используемые терминальные программы: DOS — Terminate, MTEZ, TeleMate;
Win — HyperTerminal, NetTerm; OS/2 — ZOC; Un*x — minicom.

FTN соединение
Очень похоже на терминальное соединение, но используется в FTN-сетях типа FIDOnet для передачи почты и файл эх (если в данном месте возник вопрос, спросите знакомого фидошника). Отличается тем, что после установки соединения происходит проверка адреса и пароля на сессию. После чего идет передача исходящей почты и прием входящей. Также возможен чат с удаленным оператором, если он того возжелает. За дополнительной информацией можно обратиться к стандартам FTSC.
Некоторые мэйлеры имеют встроенную терминальную программу, что весьма удобно: можно забирать почту, серфить по BBS или передавать и принимать файлы.
Наиболее распространенные мэйлеры: DOS — T-Mail, Binkley Term; Win — T-Mail/NT, Kitten Mail; OS/2 — The Brake Mailer, T-Mail/OS/2, Binkley Term; Un*x — ifcico, qmail, bink.

Dial-Up соединение
Используется в основном для доступа в Интернет, но его можно использовать и в других целях, к примеру, играть в игры или создать свою веб-BBS. 
Для начала я хотел бы рассказать вам о том, что же на самом деле происходит после соединения модемов.
Чтобы прикладные программы могли осуществлять сетевое взаимодействие, поверх модемного соединения должен быть "запущен" некоторый стек протоколов — сначала канального, затем сетевого и транспортного уровня (см. статью про модель OSI в "СР" №9(10) за 2000 год). В самом распространенном варианте это PPP/IP/TCP+UDP, хотя возможна и сцепка PPP/IPX/SPX.
Протокол PPP — это простейший способ инкапсуляции сетевых пакетов для последовательных каналов связи. Этот протокол стал популярным благодаря возможностям подключения домашних ПК к сети Интернет через порт RS-232, который соединен с модемом.
После того, как два модема соединились, в дело вступает протокол PPP и начинается взаимодействие между клиентской и серверной стороной. В случае с PAP (Password Authentication Protocol) или CHAP (Challenge Authentication Protocol) происходит проверка пароля и выдача IP-адреса. Если проверка пароля не требуется (имеется в виду простое PPP-соединение), то сразу выдается IP-адрес.
Все дальнейшее повествование подразумевает использование в нашем dial-up-соединении стека протоколов TCP/IP по PPP.
Итак, вам необходимо, чтобы на одном из компьютеров был установлен Dial-Up Server. Для Windows 98 и ME — стандартный Dial-Up Server, который поставляется с системой. Для Windows NT — Remote Access Service, также входящий в стандартную поставку системы. Для OS/2 — MPTS и TCP/IP. Для Un*x — mgetty или getty и pppd.
А теперь более детально рассмотрим, как настроить Dial-Up Server для каждой операционной системы.

Windows 98
На машине, которая будет сервером, вам необходимо выполнить следующие действия:
Start ->Settings ->Control Panel ->Add/Remove Programs ->Windows Setup ->Communications. Выбираем Dial-Up Server, если не установлен компонент Dial-Up Networking, выбираем и его. Ok ->Apply.
После сих манипуляций у вас будет установлено все необходимое для работы.
Start ->Accessories ->Communications ->Dial-Up Networking. Появляется окно Dial-Up Networking, вот оно-то нам и нужно.
— Connections ->Dial-Up Server. Выбираем "Allow Caller Access", устанавливаем пароль по необходимости.
— Server Type ->PPP, Internet, Windows NT Server, Windows 98. По необходимости выбираем "Enable software compression" и "Require encrypted password".
— Ok ->Apply ->Ok.
После всех вышеперечисленных шаманских манипуляций сервер считается настроенным. IP-адреса выдаются сервером автоматически из блока зарезервированных адресов 192.168/16. Например: на стороне сервера — 192.168.55.1, а на стороне клиента (звонящего) — 192.168.55.2.
Да, вам еще потребуется добавить в настройки модема, а именно, в строку инициализации — ATS0=1
Теперь можно перейти к настройке клиентской части.
Если не установлен компонент Dial-Up Networking, устанавливаем его, как это сделать, описано чуть выше. Далее
Start ->Accessories ->Communications ->Dial-Up Networking. Создаем новое соединение "Make New Connection". Выбираем название соединения, модем (если их более одного), Next. Код города, номер телефона, страну, Next ->Finish.
Если соединение устанавливается в пределах одного населенного пункта, то выбираем созданное соединение и открываем его свойства. Убираем галочку с "Using area code and Dialing Properties".
Выбираем закладку "Server Types", в лист боксе выбираем "PPP, Internet, Windows NT Server, Windows 98", Если необходимо, выбираем "Log on to network", "Enable software compression" и "Require encrypted password". Из протоколов выбираем только TCP/IP.
Ну, вот, собственно, с настройкой серверной и клиентской части покончено. Теперь вы можете запускать различные игры, требующие TCP/IP-соединения, и играть по модему. Если вы разрешили "Log on to network" — вы можете также обмениваться файлами по Microsoft Network, то бишь видеть сетевое окружение ровно как в локальной сети. А если захотелось установить веб-сервер, то очень даже хорошим вариантом могут быть Apache или O'Reilly Web Server. 

Windows NT
Мне ни разу не доводилось встречать Dial-Up-сервер на NT-workstation. Впрочем, можно попробовать установить Remote Access Service от NT-server'а, что я недавно и сделал — и этот гибрид заработал.
Однако в качестве примера возьмем таки NT4-server. Это может быть как Standalone Server, так и Primary/Backup Domain Controller, что не существенно важно. Если все это имеется в наличии, приступим к настройке серверной части.
Start ->Settings ->Control Panel ->Network ->Services ->Add. Выбираем "Remote Access Service", устанавливаем его.
Далее вас попросят выбрать модем, выбираем его. Далее — Configure, выбираем "Receive calls only" — если хотим использовать модем (точнее, RAS-сервис — прим. ред.) только как Dial-Up-сервер или "Dial out and Receive calls" — если хотим использовать его как Dial-Up-сервер и звонилку. Ok->Continue.
В разделе Network выбираем тип доступа (ко всей локальной сети либо только к серверному компьютеру), сетевые протоколы (TCP/IP, IPX или NetBEUI), для IP вы можете настроить метод раздачи адресов (динамически с помощью DHCP и статически из определенного диапазона). Можете также разрешить/запретить запрос клиентами определенного IP-адреса.
Теперь можно приступать к созданию аккаунта. Start->Programs->Administrative Tools->User Manager. Меню User->New User. Заполняем все необходимые поля, выбираем нужную группу, в Dial in устанавливаем галочку "Grant dialin permissions to user". Если вы хотите оплачивать телефонную связь данного конкретного пользователя, в группе "Call Back" устанавливаем переключатель на "Set by Caller". Таким образом, при поступлении звонка ваш "клиент" сможет ввести свой номер телефона в предложенное поле и сервер ему перезвонит. Ok.
Далее проверяем пермишны (права доступа — прим.ред). Start->Programs->Administrative Tools->Remote Access Admin. Меню Users->Permissions. Вводим Nickname нашего пользователя, нажимаем кнопку "Find". Когда найдет, проверяем пермишны. Если все Ok, то переходим к запуску сервера.
Меню Server->Start Remote Access Service, указываем, где запускать — \\имя_компьютера, Ok.
Когда сервер запустится, закрываем окно "Remote Access Administrator".
А сейчас мы переходим к настройке клиентской части. Start->Programs->Accessories->Dial-Up Networking. Если не одного соединения не было создано, то вам предложат создать соединение, в противном случае создайте его нажатием кнопки "New". Перед вами появилось окно "New Phonebook Entry Wizard". Вводим название соединения, Next. Ставим галочку в поле "I am calling the internet", Next. Вводим телефонный номер, Next, Finish. Теперь можем звонить.
Что касается веб-серверов, используйте то же, что и под Windows 9x, (можете использовать "родной" мелкомягкий Internet Information Service, колхоз, как говорится — дело добровольное — прим. ред.) можно водрузить Q1-Q3, UT или Unreal или что там у вас... 

OS/2
Ну, здесь проблем никаких возникнуть не должно. Так как данную систему используют в работе не чайники, то на детальной установке MPTS и TCP/IP останавливаться не буду. Расскажу только о том, как прикручивается ррр-сервер к мэйлеру. У вас может возникнуть вопрос "А почему же к мэйлеру?". А потому что OS/2 у нас, в основном, используется в качестве операционной системы для FIDOnet.
Если вы хотите запускать сервер из мэйлера, то вот вариант строки, которая используется в "The Brake Mailer!" и добавляется в Brake.ctl:
HandShake !}! Exec /Port /Clear /noClip "ppp.exe com2 57600 твойADDR:диалапADDR rtscts exit auth -chap +pap"
Потом дружно перезапускаем мэйлер. На этом настройка серверной части закончена.
Клиенты могут быть различные — ррр, Injoy, IBM Dialer, это что касается OS/2. Впрочем, клиенты могут быть, конечно, под различные системы. Для Windows описаны выше. А для Un*x смотрите ниже :)
Как показала практика, очень некисло можно играться в Quake2 и Quake3. Если возник вопрос, как запустить виндошный Q2 или Q3 или что-то там еще под OS/2 — Odin. Эта тема вылазит за рамки данной статьи, да и газета "Сетевые решения" занимается обзором сетевых технологий. Если у вас что-то не получается, обратитесь к знакомому гуру, он вам поможет.
Если есть желание установить Веб-сервер — Apache, WebServer/2.

Un*x
В данном случае вам необходимо будет установить mgetty или getty и pppd. mgetty или getty необходимы, чтобы слушать модемный порт, а pppd — собсвенно ррр-демон: проверяет пароли, устанавливает соединение, раздает адреса и др.
getty — программа, которая обслуживает процесс входа в систему, когда вы регистрируетесь на Unix-машине. Вы не должны использовать getty, если вы хотите только звонить наружу вашим модемом. Имеются три версии программы, которые обычно используются в Linux: getty_ps, mgetty и agetty. Синтаксис для этих программ отличается, так что убедитесь, что вы используете правильный синтаксис для того getty, которым пользуетесь.
mgetty — версия getty, главным образом использующаяся с модемами. Она может использоваться и с аппаратными терминалами, но документация приблизительно на 99%, связана с модемами. В дополнение ко входу в систему по телефонной линии, mgetty также обеспечивает поддержку факсов, автоматическое обнаружение и запуск PPP, а также протокол квитрования EMSI (FIDOnet). Документация по mgetty (поставляется в формате texinfo) достаточно хороша и не нуждается в дополнении.
agetty — третья разновидность getty. Это простая полнофункциональная реализация getty, которая больше подходит для виртуальных консолей или терминалов, чем для модемов, по сему, соответственно, нам не нужна.
Вашему вниманию представляется два варианта настройки dial-up-сервера. Первый — с использованием mgetty, второй — с использованием getty.
Находим файл inittab в /etc и добавляем следующие строчки:

# modem getty.
mo:23:respawn:/usr/sbin/mgetty -s 38400 -x 0 /dev/ttySх

mo — id терминала;
23 — runlevels, может быть: runlevel 0 — halt, runlevel S — single-user, runlevel 1 — multi-user without network, runlevel 2 — multi-user with network, runlevel 3 — multi-user with network and xdm, runlevel 6 — reboot;
respawn — указание на то, что терминал при простое должен инициализироваться;
/usr/sbin/mgetty — полный путь и имя программе-терминалу;
-s 38400 — скорость залочки порта модема;
-х 0 — уровень вывода отладочной информации;
/dev/ttySx — имя коммуникационного устройства.
Идем далее. Теперь рассмотрим настройки mgetty. Устанавливаем активным каталог /etc/mgetty+sendfax.
dialin.config — конфигурационный файл, в котором указывается, каким номерам разрешено, а каким запрещено дозваниваться на данный dial-up.
2110000, 2891212 # разрешен дозвон с номеров 2110000, 2891212
!227 # запрещен дозвон с номеров, имеющих префикс 227
!none # запрещен дозвон c не определившихся номеров
!all # запрещен дозвон со всех номеров
Если у вас модем без АОН'а, следует закомментировать все строки, т.к. в данном случае номер определяться не будет и соединение не будет установлено.
login.config — конфигурационный файл "login-диспетчера", в котором указывается, как будут обрабатываться различные соединения. К примеру:

U*uucp@/usr/lib/uucp/uucico -l -u @ # обработка uucp-соединения
/FIDO/uucpfido/usr/local/lib/fnet/ifcico @ # обработка EMSI-соединения
/AutoPPP/ –a_ppp/usr/sbin/pppd # обработка PPP-соединения

*——/bin/login @ # обработка соединения если не отработались вышеуказанные.
Если обработка uucp-почты и fidonet не требуется, тогда две верхние строчки из примера можно закомментировать.
Формат: username userid utmp_entry login_program [arguments]
username — имя пользователя, которое ввдено при логине mgetty, от которого вызывается "login_program" с [arguments], с uid равным "userid", и ut_user = "utmp_entry". username может быть шаблонным "*"
userid — реальное имя пользователя из /etc/passwd, или "-", если оно не установлено. 
utmp_entry — то, что будет показываться в ответ на команду "who". Используем "-" чтобы не устанавливать специальное значение vtmp (например, для /bin/login), а "@" устанавливает его эквивалентным введенному имени пользователя.
login_program — программа обработки регистрации, которая будет запущена с аргументами [arguments].
mgetty.config — конфигурационный файл, в котором указываются основные настройки mgetty. Например:
debug 4 # устанавливает уровень вывода отладочной информации
fax-id 49 89 xxxxxxxx # устанавливает номер факса
speed 38400 # устанавливает скорость залочки модема
voice.conf — конфигурационный файл, в котором указываются настройки обработки голосовых сообщений. По сути не нужен.
Теперь будем настраивать pppd. Делаем активным каталог /etc/ppp, проверяем наличие в каталоге следующих файлов: chap-secrets, options, pap-secrets. Если таковых нет, придется создать.
chap-secrets — файл с паролями для CHAP-аутентификации.

# формат записей
# clientserversecretIP addresses
* * # для доступа всем пользователям

pap-secrets — файл с паролями для PAP-аутентификации.

# формат записей как и у chap-secrets
options — файл с набором опций pppd (опции командонй строки).
lock
login
+pap
-chap
netmask 255.255.255.0
192.168.0.10:192.168.0.1

Теперь рассмотрим вариант с getty. Находим наш любимый файл /etc/inittab и прописываем туда следующие строки.

# modem getty.
mo:2345:respawn:/sbin/getty -d /etc/conf.getty.ttySх ttySх 115200 linux

/sbin/getty — сам getty;
-d /etc/conf.getty.ttySх — указание на использование файла конфигурации /etc/conf.getty.ttyS3;
ttySх — имя коммуникационного устройства;
115200 — скорость залочки порта модема;
linux — тип теминала.
Далее рассмотрим конфигурационный файл /etc/conf.getty.ttySx

# программа обработки регистрации
# если вы хотите установить PPP-соединение, то вам необходимо вставить строку вида:
# LOGIN=/usr/sbin/pppd
LOGIN=/bin/login
# коммуникационная линия ( без /dev/ )
INITLINE=ttySх
# время, отведенное на установку соединения
TIMEOUT=60
# строка инициализации модема 
INIT="" \d+++\dAT\r OK\r\n ATH0\r OK\r\n AT\sM0\sE1\sQ0\sV1\sX4\sS0=0\r OK\r\n 
# что необходимо ожидать от модема для определения звонка
WAITFOR=RING
# что необходимо ожидать от модема для начала PPP-сессии
CONNECT="" ATA\r CONNECT\s\A
# время, по истечении которого появится регистрационное приглашение
DELAY=1

Ну вот, собственно, с настройкой серверной части мы закончили. Следует учесть, что в некоторых дистрибутивах того же линукса могут быть предусмотрены дополнительные "удобства" для создания диалап-серверов, но в общем виде вышеописанное применимо для любого линукса. С другими un*x'ами будет посложнее — читайте мануалы ;)
Теперь возьмемся за клиентскую часть. Предлагаю вашему вниманию вариант скриптов, которыми я в основном пользуюсь. Не думайте, что это какое-то законченное решение, возможно, вы придумаете что-нибудь поинтереснее.
Создаем файл connection, устанавливаем атрибуты на исполнение и вносим в него следующие данные:

pppd /dev/modem 115200 connect "chat -v -f connection. scp" crtscts defaultroute -detach

А теперь создаем файл connection.scp и помещаем в него скрипт установки соединения с сервером:

'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
SAY 'Initializing modem...\n'
'' 'ATZ2'
'OK' 'ATS6=4M1L0'
'OK' 'ATDP2100625'
SAY 'OK. Dialing...\n'
'CONNECT' '\p\p\p\p\p\p\p\p\p\p\p\p\p\p'
SAY 'Connected. Logging in... '
'~' ''
Строки, содержащие 'ABORT' '…….', указывают на то, что при получении '……..'-строк от модема, процесс отработки скрипта будет остановлен. Строки вида — SAY '……' — выводят инормацию на консоль. Для написания скрипта используется последовательность вида '...' '...', где первое — что необходимо ожидать от модема, второе — что модему посылать. Конструкция '~' '' указывает на то, что клиент должен выступать инициатором в установке соединения.
Ну вот, вроде бы, и все, что хотел рассказать. Разумеется, клиенты и серверы могут работать на разных платформах, если все настроено правильно проблем возникать не должно. Бывали случаи, когда ранние версии pppd (Linux) некорректно "вязались" с диалап-серверами под WinNT.
Если вы хотите установить Dial-up-сервер и имеете локальную сеть, вам необходимо позаботиться о дополнительной безопасности. Установите какой-нибудь firewall. При желании, если есть несколько входящих линий, можно сделать альтернативу "Открытому контакту" и установить Quake-сервер с возможностью игры по модему. 
Что касается реализации клиентской и серверной части, есть много вариантов, и вышеописанное — только примеры. Какой вариант вам выбрать — дело ваше. Однако надеюсь, что для первого раза я удовлетворил ваше любопытство.

Ghost//Necrosoft
ghost@nestor.minsk.by



Сетевые решения. Статья была опубликована в номере 01 за 2001 год в рубрике sysadmin

©1999-2024 Сетевые решения