Настройка &kppp; на режим обратного звонка Материал для этой главы предоставил Martin Häfner, mh@ap-dec717c.physik.uni-karlsruhe.de Сервер обратного звонка под управлением ОС &UNIX; или &Linux; В этом разделе рассказывается об обратном звонке в ОС &UNIX; (&Linux;) и о том, как &kppp; должна быть настроена для соединения с сервером обратного звонка под управлением ОС &UNIX; особое внимание уделяется ОС &Linux; и ее серверу обратного звонка на основе скриптов. Что такое Обратный звонок Для использования Обратного звонка есть несколько причин. Вот некоторые из них: Для увеличения безопасности вашей локальной сети Для сокращения расходов ваших сотрудников, звонящих извне Для контроля стоимости телефонных звонков, по статье организационных расходов: Представьте себе, что некто дозвонился на ваш сервер входящих звонков и взломал пароль доступа. Зачем же, в таком случае, конфигурировать брандмауэр для вашей сети, если можно таким простым способом получить к ней доступ? Программное обеспечение обратного звонка запрашивает ваше имя, а затем разъединяется. Далее производится звонок по вашему номеру, который хранится в базе данных на сервере. Клиент поднимает трубку и продолжается процедура установления соединения, если не возникло сбоев. Сервер запрашивает ваше имя пользователя и пароль, зная, что звонили вы (согласно вашему звонку), или же зная, откуда вы звонили. Устанавливается соединение и запускается демон ppp. Вопрос: как указать клиенту поднять трубку, когда сервер перезванивает ему. Нужна ли специальная программа типа mgetty? Ответ: нет, вам не понадобится специальная программа. В общем, любой клиент может быть использован при соединении с обратным звонком, вы можете использовать даже обыкновенную терминальную программу: minicom, к примеру. Вам только надо отдать модему команду Ответить автоматически на телефонный звонок при поступлении сигнала RING. Для этого задайте модему следующую команду: AT&SO=1 Эта команда указывает модему поднять трубку после одного звонка (RING). Подобно большинству других программ-клиентов, &kppp; проверяет, не прекращено ли соединение сервером, а затем закрывает текущую сессию, если определен сигнал NO CARRIER. Это является настоящей проблемой при настройке обратного звонка. Сигнал NO CARRIER, конечно, будет получен в момент прекращения соединения сервером обратного звонка. Некоторые серверы используют специальные программы логина. Так как решить эту проблему? Укажите модему всегда показывать CARRIER UP (это не вызовет проблем при указании клиенту повесить трубку). Вы можете осуществить это следующей командой модему: AT&C0 Если вам хочется проверить, как все это работает, используйте обыкновенную терминальную программу, например, minicom, позвоните на ваш сервер обратного звонка и посмотрите, что произойдет. Настройка &kppp; Теперь, когда вы увидели применение теории на практике, как настроить &kppp; для осуществления соединения? Как показано, процедура весьма несложная. Сперва укажите модему принимать входящие соединения, а не прерывать сессию установки соединения при разъединении с сервером обратного звонка при первом звонке. Обе эти опции можно добавить на вкладке Модем в настройках &kppp;, добавив в опцию Строка дозвона следующее: AT&C0S0=1DT Более никаких изменений в &kppp; не потребуется. Если у вас возникнут проблемы с инициализацией и сбросом установок модема, обратитесь к разделу Устранение неисправностей для получения более детальных сведений. Не забудьте о сервере. Помните, что ОС &UNIX;, &Windows; и Macintosh по-разному обрабатывают концы строк в текстовых файлах и, таким образом, и в процедурах логина. Если вы подключаетесь к серверу под управлением ОС &Windows;, используйте CR/LF, для сервера под управлением ОС &UNIX; используйте CR, а при подключении к серверу Macintosh используйте LF Следующие инструкции применимы к случаю дозвона на сервер обратного звонка под управлением ОС &Linux; с использованием обычной авторизации (не PAP или ей подобной). Установите стиль Авторизация во вкладке Дозвон в конфигурации соединения в положение На основе скрипта Сейчас вам надо создать скрипт логина. Редактирование скрипта логина являетсяодной из наиболее приятных функций программы &kppp;. Эта опция доступна на вкладке Скрипт логина в диалоге Редактирование соединения. В этом примере пользователь userxyz должен вызвать следующий скрипт. Серверу обратного звонка уже задана таблица имен и соответствующие телефонные номера, в целях безопасности создать псевдоним для соответствующего вам номера телефона. Для каждой строки выберите критерий из раскрывающегося списка в левой стороне диалога и введите действие в поле справа. Нажмите на кнопку Добавить для добавления строки в скрипт. Кнопкой Вставить добавляйте строки в середину скрипта, а кнопкой Удалить удаляйте строку, если в ней допущена ошибка. Полностью скрипт будет выглядеть примерно так (без комментариев, начинающихся здесь с символа #) Expect ogin: # помните, что это обыкновенный теминальный логин ID "" # kppp отправляет имя пользователя, установленное в главном экране Expect for userxyz: # отображается список доступных номеров, пользователь должен сделать выбор Send userxyz-home # пользователь хочет, чтобы ему перезвонили по домашнему номеру Expect ogin: # выполняется процесс обратного дозвона, новое соединение и новый логин. ID Expect assword: # отправить пароль Expect > # ожидать приглашения (оно может отличаться) Send start_ppp # эта команда запускает демон ppp После появления запроса на вход, пользователь отправляет свое имя пользователя и ожидает появления списка доступных этому пользователю телефонных номеров. Эатем он указывает серверу, по какому из предложенных номеров нужно произвести звонок. Для этого &kppp; может создать диалог, если вы часто переезжаете, к примеру, если вы являетесь агентом по продажам и переезжаете из гостиницы в гостиницу. Теперь сервер ожидает имя пользователя и пароль для авторизации, тем временем, сервер прерывает соединение и перезванивает пользователю. Данные для авторизации отправлены, &kppp; ожидает приглашения системы и запускает небольшой скрипт (здесь start_ppp), который запускает демон ppp на сервере. Скрипт start_ppp выглядит примерно так, как показано ниже: #!/bin/sh stty -echo exec /usr/sbin/pppd -detach silent modem Конечно, настройка PPP-сервера выходит за рамки этого документа. Детальные сведения находятся на man-странице демона ppp. Замечательное описание сервера обратного звонка доступно по адресу: http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback Все остальные настройки, такие как настройка демона ppp или настройки IP-протокола будут работать нормально, и для дозвона вам не понадобятся другие программы. Обратный звонок в &kppp; и другие программы типа mgetty или же faxgetty могут выполняться на одном последовательном порте. Проблем с дозвоном быть не должно, так как &kppp; создает файл блокировки и указывает программе getty, что другое приложение (в этом случае &kppp;) использует порт. Устранение неисправностей Известные проблемы с программой &kppp;, работающей в режиме обратного звонка: Так как вы инициализируете модем для ответов на звонок, после разъединения нужно сбросить установки модема в начальное состояние. Иначе модем продолжит отвечать на звонки, что не так уж и хорошо, если рассмотренная телефонная линия является основной для вас. У &kppp; есть мелкие недостатки, когда она использует одну линию наряду с другой программой, такой как mgetty. Если mgetty в процессе выполнения использует ту же линию, то &kppp; не может правильно инициализировать модем. &kppp; не в состоянии запросить некоторый тип ввода во время логина на основе скрипта. К сожалению, при использовании примера скрипта, приведенного выше, &kppp; также запрашивает имя пользователя второй раз, при запросе сервера обратного звонка. От этого можно избавиться, если прописать ваше имя пользователя в скрипт логина (неудобно и некрасиво, зато срабатывает). Ресурсы Интернета о серверном программном обеспечении Программное обеспечение для сервера обратного звонка под управлением ОС &Linux; доступно во многих местах. Хорошо известная мощная программа mgetty способна работать с соединениями по принципу обратного звонка. Описание настройки mgetty для этой цели находится по адресу http://www.dyer.demon.co.uk/slug/tipscrip.htm, написанное Colin McKinnon, colin@new.co.uk. Существует готовый к использованию пакет для ОС &Linux;: http://www.icce.rug.nl/docs/programs/callback/callback.html. Этот пакет поддерживает Frank B. Brokken, frank@icce.rug.nl. Так как настройка, несмотря на прямолинейность, весьма сложна, то я написал короткое вступление для нее: http://ap-dec717c.physik.uni-karlsruhe.de/~mh/callback/, в котором также содержатся более подробные сведения об обратном звонке. Обратный звонок службы <acronym>RAS</acronym> в ОС &Windows; NT В ОС &Windows; NT используется подход, совершенно отличный от описанного выше. NT требует наличия расширения к протоколу PPP, поз названием CBCP (Протокол контроля обратного звонка). У демона ppp есть поддержка этого протокола, но вам придется перекомпилировать демон ppp. Если кому-нибудь удалось успешно соединиться с сервером обратного звонка под управлением NT, просьба дать нам знать об этом.