Настройка callback-сервера на базе Linux |
ВведениеСмысл организации dialin-сервера PPP в том, что пользователи устанавливают PPP-соединение с удаленным сервером, дозваниваясь по телефонным линиям с помощью модема. Кроме этого, можно сделать так, чтобы Linux-машина делала обратный звонок пользователю, дозвонившемуся к ней. Этот документ объясняет, как шаг-за-шагом настроить callback-сервер (сервер с функцией обратного дозвона) на базе Linux. ТребованияМой сервер работает под Debian Potato (ядро 2.4.17). Модем подключен к ttyS0 (COM1) и функционирует и как dialin (принимая звонки), и как callback-модем. Другая моя машина (клиент) работает под Debian Potato и Win98. Внешний модем подключен к ttyS1. Предполагается, что и на сервере и на клиенте установлен минимум программного обеспечения для дозвона к интернет-провайдеру. На сервере, в дополнение к этому, нужно установить пакет mgetty+sendfax.ИдеяВ двух словах, callback-сервер работает следующим образом. Сперва я (клиент) дозваниваюсь через модем к моему callback-серверу. Модем на сервере настроен на прием входящих звонков. После установки соединения, сервер предлагает клиенту пройти аутентификацию. Я подключаюсь к нему как особый callback-пользователь. После этого модем на сервере обрывает связь и звонит мне по номеру, который закреплён за моей машиной (клиентом). Модем на клиентской машине уже готов принять обратный звонок и, после установления соединения, происходит повторная авторизация. Теперь я регистрируюсь как обычный PPP-пользователь. Всё -- соединение окончательно установлено.Конфигурация dialin-сервераДля того, чтобы всё вышеизложенное заработало, необходимо сконфигурировать сервер так, чтобы он мог принимать входящее PPP-соединение. Вот что надо сделать: 1) Создайте нового пользователя pppuser Измените запись в /etc/passwd относящуюся к pppuser на: 2) Чтобы последовательный порт мог принимать входящие сообщения, добавьте в /etc/inittab следующую строку: T0:23:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0 Перезапустите init, выполнив команду 'init q'. 3) Перейдите в подкаталог /etc/mgetty (Там расположен конфигурационный
файл mgetty. В дистрибутиве Redhat всё это располагается в /etc/mgetty+sendfax)
/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options Закомментируйте все остальные строки 4) В конфигурационном файле /etc/ppp/options пропишите следующее: -detach asyncmap 0 modem crtscts proxyarp lock require-pap refuse-chap ms-dns 192.168.50.100 #укажите ip-адрес вашего dns-сервера usepeerdns5) Создайте файл options.ttyS0 в /etc/ppp со следующим содержимым: 192.168.0.100:192.168.0.2 noauthДва ip-адреса, указанные выше -- это адрес вашего сервера и адрес клиента, который он должен получить от сервера. Измените их согласно вашим сетевым настройкам. Если ваш модем подключён к ttyS1, то имя редактируемого файла -- options.ttyS1. 6) Измените права доступа к pppd (в некоторых дистрибутивах у pppd уже есть suid-атрибут) chmod u+s /usr/sbin/pppd 7) Создайте алиас для ppp, добавив в /etc/profile такую строку alias ppp=`/usr/sbin/pppd -detach'`Теперь попытайтесь дозвониться к серверу со стороны клиента. Для этого, если вы используете MS Windows, выберите "Мой компьютер", затем "Удалённый доступ к сети", "Новое соединение" и заполните необходимые данные. Войдите как pppuser и проверьте, работает ли корректно dialin-сервер. Проверьте "пингуется" ли сервер. После этого, вы можете проверить ip-адрес, присвоенный клиенту, воспользовавшись программой winipcfg. Конфигурация callbackПосле того, как настройка dialin-сервера завершена, будет несложно настроить callback.Вот, что нужно сделать. 1) Создать нового пользователя back. (Если кто-то запутался, то речь идёт о настройках на сервере. Прим.перев.) 2) Создать пустой файл с именем callback.conf в /etc/mgetty/. (Если нужно, можете добавить в этот файл строки инициализации для вашего модема. Но обычно его оставляют пустым.) 3) В /etc/mgetty/login.config добавляется следующая строка: back - - /usr/sbin/callback -S 2561 После ключа -S нужно указать номер, по которому сервер должен сделать обратный звонок клиенту. Конфигурация клиентов1) MS Windows 98Откройте папку "Мой компьютер", далее "Удалённый доступ к сети", "Новое соединение" и укажите данные, необходимы для дозвона к PPP-серверу. Кроме этого, в настройках модема на закладке "Подключения" нажмите кнопку "Дополнительно" и в строке инициализации модема укажите следующее:&c0s0=1 Затем в свойствах модема на закладке "Параметры" включите элемент (checkbox) "Открыть окно терминала до набора номера". (Названия пунктов взяты из Windows 98 Russian SE. Прим. перев.) Вы можете оставить поля с именем пользователя и паролем пустыми. Начните дозваниваться к серверу. После дозвона в открывшемся окне терминала вы увидите приглашения для аутентификации. Войдите в систему как 'back' (специальный пользователь для обратного дозвона). Теперь модем со стороны сервера оборвёт связь, подождёт несколько секунд и позвонит вам. После установки callback-соединения вам предложат пройти повторно авторизацию. Введите логин pppuser и пароль. Нажмите "продолжить" на окне терминала. Теперь вы в системе. Проверьте снова "пингуется" ли сервер. Возможно, для регистрации надо написать скрипт, но я ещё не пробовал это сделать. Процедура регистрации может отличаться в разных версиях Wiindows. И помните, очень важно установить строку инициализации для модема (&c0s0=1). 2) LinuxКонфигурирование Linux-клиента выглядит немного сложнее. Вот, что нужно было сделать с моей машиной (Debian, ядро 2.4.17)1) Создать файл /etc/ppp/options с таким содержимым (В оригинале стояло /etc/options, но это, скорее всего, опечатка. Должно быть /etc/ppp/options. Хотя, не имея Debian под рукой -- гарантировать не могу. Прим.перев.): lock defaultroute noipdefault modem 115200 crtscts debug passive asyncmap 02) Создать файл ppp-callback в /etc/ppp/peers/ и прописать в нём следующее: ttyS1 19200 crtscts connect '/usr/sbin/chat -v -f /etc/ppp/chat-callback' noauth3) Создать файл /etc/ppp/chat-callback, где указать ABORT BUSY ABORT VOICE ABORT "NO DIALTONE" ABORT "NO ANSWER" "" ATZ OK ATDT2562 # Телефонный номер сервера CONNECT \d\d ogin: \q\dback TIMEOUT 90 RING AT&C0S0=1 ogin: \q\dpppuser assword: \q\dpasswordforppuserВ скрипте измените значения номера телефона, логина и пароля на те, которые вы будете реально использовать. (Просмотрите документацию на ваш модем, возможно, для него понадобятся дополнительно параметры инициализации. Не исключено, что нужно будет заменить ATZ на что-то типа AT&FX2.) 4) Создайте скрипт /usr/bin/pppcall и напишите в нём следующее #!/bin/bash Сделайте его исполняемым (Обращаю ваше внимание на то, что автор статьи напутал с именами файлов. В оригинале статьи в пункте 2) имя файла -- pppcalback. В пункте 4) с ключом call было указано имя pppcall. Более подробно смотрите man по pppd(8), ключ call. Прим.перев.) Дополнительная информацияСледующие документы помогли мне понять и написать вышеизложенное:1) Callback mini howto (Руcский перевод можете найти здесь. Прим.перев.) 2) Linux callback 3) Страницы справочного руководства по pppd 4) Mgetty+Sendfax Archive/Documentation Если вы обнаружили проблемы при настройке callback-сервера, обязательно сообщите мне об этом. Комментарии и предложения приветствуются. Sunil Thomas ThonikuzhiyilЯ работаю консультантом по информационным технологиям в Kerala Legislative Assembly Trivandrum, Индия. "Запал" на Linux в 1996. Имею степень магистра по информатике (Masters in Computer Science) в Cochin University. Интересуюсь всеми видами операционных систем. В свободное время люблю послушать индийскую классическую музыку. Copyright (C) 2002, Sunil Thomas Thonikuzhiyil.
|
Вернуться на главную страницу |