Главная » 2013 » Декабрь » 12 » 17.3. Обратный звонок
02:04
17.3. Обратный звонок

17.3.1. Что такое callback?

Первоначально обратный звонок был предназначен для снижения стоимости международных телефонных переговоров. Стоимость разговора определяется так: отсчет начинается с момента, когда вызываемый абонент поднял трубку или после пятого гудка, если абонент не отвечает, интервал тарификации – 1 минута, то есть каждая неполная минута будет оплачиваться как полная. Стоимость самого разговора зависит от страны, из которой мы звоним. Например, в Украине 1 минута связи с США вам обойдется в 2,5…3,3 доллара США в зависимости от типа линии, которую вы используете: обыкновенную или Utel. Звонок из США в Украину вам обойдется 1…2 доллара. На этом и основана идея callback (callback – обратный звонок).

Рассмотрим небольшой пример: звонок из Украины в США:

1. Украинский абонент набирает выделенный ему номер в США и после первого вызова кладет трубку. Этим звонком он активирует специальное оборудование системы callback. Естественно, этот звонок не оплачивается, потому что оплата начинается с момента поднятия трубки вызываемым абонентом или после пятого вызова. Украинский абонент должен быть подключен к линии с тональным набором.

2. Через 5…20 секунд система callback перезванивает абоненту Украины и приглашает его набрать номер, по которому он хочет позвонить. Система callback набирает этот номер. При этом соединение устанавливается из США, а не из Украины, что в конечном итоге ведет к снижению стоимости всего звонка. При этом интервал тарификации не одна минута, как при звонке из Украины, а всего 6 секунд.

В случае с доступом в какую‑нибудь сеть система callback работает почти аналогично. Только сейчас нашей целью является не снижение стоимости (хотя это тоже не исключено), а повышение безопасности сети и дополнительная ее защита от несанкционированного доступа.

Работает callback примерно так: клиент сети как обычно устанавливает соединение с сервером и проходит аутентификацию. Если аутентификация прошла успешно, сервер обрывает соединение (кладет трубку). Естественно, если аутентификация не прошла, сервер кладет трубку и не предпринимает никаких дальнейших действий. Кроме логина пароля, клиент также передает некоторое «волшебное» слово. Если сервер получил это слово, то через определенное время (обычно 25…30 секунд) сервер обратного звонка перезвонит по заранее запрограммированному номеру клиента и установит соединение. После этого можно работать в сети как обычно. Как видите, если раньше для доступа в сеть достаточно было знать имя пользователя и пароль, то сейчас нужно, чтобы компьютер, который пытается войти в сеть, был подключен к телефонной линии с заранее запрограммированным номером.

Например, ваш сосед купил пакет неограниченного доступа к Интернет, а вы каким‑то образом узнали его имя пользователя и пароль. При обычном соединении (не callback) вы можете работать в Интернет так же, как и сосед, но, естественно, в разное время. При использовании технологии callback подобное уже не пройдет, потому что система callback перезвонит не к вам домой, а к вашему соседу. Таким образом, система callback является дополнительным барьером для нежелательных гостей нашей сети.

В этой главе будут рассмотрены два варианта настройки системы callback. Второй вариант более простой и удобный для клиентов: для установления соединения не нужно никаких скриптов, но этот способ почему‑то не всегда корректно работает. Первый требует специальной настройки клиентов, но работает в большинстве случаев. Я рекомендую вам поступить следующим образом: ознакомиться с обоими способами, а начать настройку сначала со второго способа и, если он у вас не будет работать, перейти к настройке первого.

17.3.2. Настройка сервера. Способ1

Приступим к настройке по первому способу. Как я уже отмечал, этот способ предполагает дополнительную настройку клиентов, что не очень удобно. Например, если вы являетесь администратором компании‑провайдера Интернет, и у вас несколько сотен пользователей, настраивать все машины, даже если эта работа оплачивается, не очень хочется. Можно, конечно, распечатать подробные инструкции для клиентов, но ведь существуют и такие пользователи, которые и обычный доступ настроить не в состоянии.

Я предполагаю, что программы mgetty и pppd у вас уже настроены и сам сервер удаленного доступа нормально функционирует. Напомню, что установка и настройка программы mgetty была подробно рассмотрена в предыдущем п. 17.2.

При сборке программы mgetty нужно включить опцию автоматического распознания pap‑авторизации. Если вы этого не сделали, сейчас самое время это сделать. Если вы установили mgetty из пакетов RPM, то можете пропустить инструкции по включению этой функции. Хотя если у вас все‑таки функция DAUTO_PPP работать не будет, даже при установке из пакетов RPM, вам придется пересобрать программу самостоятельно. Исходные тексты программы mgetty доступны по адресу http://alpha. greenie. net/mgetty/. После распаковки копируем файл policy. h‑Dist в файл policy. h. В этом файле нужно сделать определенные изменения, которые подходят для вашей системы. В большинстве случаев нужно изменить расположение каталогов или же вообще ничего не изменять.

Теперь нужно включить автоматическое распознавание pap‑авторизации. Для этого в файле Makefile найдите строку:

И измените ее на:

В этом же файле можно изменить установочные каталоги, но я не рекомендую этого делать. Оставьте все как есть: SBINDIR=/sbin, BINDIR=/bin

После этого выполните две команды, которые откомпилируют и установят mgetty:

Теперь перейдите в каталог callback каталога, который содержит исходные тексты mgetty. Скопируйте программу callback в каталог /usr/sbin, а файл callback, config – в каталог /etc/mgetty+sendfax. Отредактируем файл /etc/mgetty+sendfax/login. conf. Раньше (при условии, что вы настраивали сервер удаленного доступа) он у вас содержал примерно такую строку:

Сейчас эту строку нужно изменить на следующую:

При обнаружении входящего звонка mgetty передаст управление демону pppd. Добавим в файл mgetty. config описание порта, к которому подключен модем (см. листинг 17.13).

Листинг 17.13. Файл mgetty. config

Теперь нужно отредактировать файл /etc/ppp/options. ttyS0 (см. листинг 17.14). В этом файле вы укажите параметры порта ttyS0.

Листинг 17.14. Файл /etc/ppp/options. ttyS0

Интервал отправления LCP‑пакетов и количество не принятых LCP‑пакетов нужны серверу для определения функционирования клиента, то есть с помощью этих параметров pppd определяет «жив» или нет клиент. Если на протяжении последних 120 секунд (20*6) клиент не прислал подтверждения, то сервер разорвет связь.

Запустите mgetty, как обычно – через файл /etc/inittab:

Напомню, что S0 – это просто идентификатор, и вы можете использовать любое другое значение. 3,5 – это уровни запуска. Параметр –D программы mgetty указывает ей отключить все факсимильные возможности модема, а параметр –n 1 заставляет mgetty подымать трубку после первого звонка.

Теперь нужно запустить (перезапустить) mgetty. Для этого выполните команду init q. Также можно воспользоваться командой killall –1 init.

После этого на вашем модеме должна загореться лампочка DTR. Если этого не произошло, смотрите файл /var/log/messages – вы что‑то сделали неправильно.

Помните, в самом начале я упомянул некоторое «волшебное» слово. Допустим, что этим «волшебным» словом будет слово «пожалуйста» (please). Вот его‑то и нужно записать в файл login. config:

Я позволил себе немного пошутить относительно выбора этого самого слова. Разницы, конечно, нет никакой – вы можете в качестве этого слова установить все, что вам угодно – даже свое имя. Обычно используются слова «callback» или «cbuser» (callback user). После этого снова следует перезапустить mgetty.

Вот, собственно, в чем заключается первый способ настройки. Сейчас рассмотрим второй способ, а в пункте «Настройка клиентов» будем настраивать Windows‑клиенты.

17.3.3. Настройка сервера. Способ 2

Второй способ, как я уже говорил, обладает неоспоримыми преимуществами. Во‑первых, вам не нужно будет писать никакие сценарии для Windows‑клиентов. Во‑вторых, вы сможете самостоятельно определить, какие пользователи будут использовать функцию callback, а какие – нет.

Но и этот способ имеет свои недостатки. Хорошо, что существенный недостаток только один – невозможна авторизация, основанная на сценариях, как в первом способе, а иногда она бывает очень даже полезной. И еще один небольшой недостаток: нужно установить дополнительный патч к демону pppd, а так как патчи не всегда успевают за версиями pppd, то приходится использовать более старую версию pppd.

Сначала нужно выкачать патч к pppd, который реализует поддержку callback. Он доступен по адресу: http://www. pbko. sk/~bobovsky/archiv/pppd‑cbcpS‑callback/ine‑contrib/ppp‑2.x. n.CBCP. patch. Числа х и n – это номера версии демона pppd. Выкачивайте самую последнюю версию. Если у вас версии pppd старше, чем версия патча, вам придется установить более старую версию pppd. Различные версии pppd доступны по адресу ftp://ftp. linuxcare. com. au/pub/ppp/

Для обновления pppd (установки патча) используйте команду:

Данная команда обновляет исходные тексты pppd (предварительно их нужно выкачать и установить). Эта же команда создает файлы:

В первом из них нужно будет прописать всех пользователей, которым будет доступна функция обратного звонка. Второй нужен для работы у Linux‑клиента функции callback. А третий управляет сервером обратного звонка.

Затем перейдите в каталог с исходными текстами pppd и введите три команды:

После установки pppd нужно настроить mgetty. Напомню, что программа mgetty должна быть собрана с поддержкой функции –DAUTO_PPP (автоматическая ррр‑авторизация).

Далее отредактируйте файл /etc/mgetty+sendfax/login. conf. Он должен содержать одну строку:

После этого пропишите своих пользователей в файле callback‑users (см. листинг 17.15).

Листинг 17.15. Файл /etc/ppp/callback‑users

Первый пользователь – cbuser. Согласно опции * – это пустое определение пользователя – для тестирования. Второй пользователь user – это реальное определение пользователя, телефон для обратного звонка – 320779. Все остальные пользователи не будут использовать функцию callback – опция «‑».

С помощью команды chmod сделайте сценарии callback‑server и callback‑client исполнимыми. После этого необходимо немного отредактировать скрипт callback‑server (см. листинг 17.16).

Листинг 17.16. Файл /etc/ppp/callback‑users

Данная конфигурация уже должна работать, но иногда модем не успевает инициализироваться, поэтому после команды sleep $DELAY следует добавить еще одну команду sleep, например, sleep 25. Обратите внимание: используется тональный набор (АТ‑команда DT). Напомню, что для импульсного набора используется команда DP (ATDP).

Вот и все, осталось только проверить корректность работы сервера.

17.3.4. Настройка клиентов. Способ 1

Создайте новое соединение и приступите к его конфигурации. При этом, на вкладке «Тип сервера» выключите все параметры, кроме программного сжатия данных. Единственный допустимый сетевой протокол – TCP/IP (см. рис. 17.2).

Рис. 17.2. Свойства соединения

Затем создайте в любом текстовом редакторе, например, в Блокноте, сценарий для обратного звонка (листинг 17.17).

Листинг 17.17. Сценарий для callback

Сохраните свое творение как файл callback. scp. В операционной системе Windows NT данный файл нужно записать в каталог \WINNT\SYSTEM32\RAS. После этого перейдите на вкладку Сценарии и выберите только что созданный сценарий (см. рис. 17.3).

Рис. 17.3. Сценарий callback. scp

Затем перейдите на вкладку Общие и нажмите на кнопку «Настройка». В появившемся окне перейдите на вкладку Подключение и нажмите на кнопку «Дополнительно». Далее, в строке инициализации модема необходимо ввести AT&C1SO=1 (см. рис. 17.4). Команда &С1 устанавливает сигнал CD – без него этот способ работать не будет. Команда SO устанавливает количество звонков, после которых модем клиента будет снимать трубку (1 звонок). Для модема Motorola Premier 33.6 установите такую строку инициализации:

Рис. 17.4. Дополнительные параметры связи

Более серьезный пример файла сценария callback вы найдете на прилагаемом компакт‑диске в каталоге /mnt/cdrom/doc/callback.

В операционной системе Windows NT обратный вызов настраивается несколько иначе. С этой целью откройте окно запуска удаленного доступа: Пуск→Программы →Стандартные→Удаленный доступ (Start→Programs→Accessories→Remote access). Нажмите на кнопку «Другое» («More»). Выберите пункт меню «Параметры пользователя» («Users preferences») и перейдите на вкладку Ответный вызов («Callback»). Отметьте пункт «Да, требуется ответный вызов по указанным номерам». Номер телефонной линии, на которой установлен модем, можно изменить, нажав на кнопку «Изменить».

17.3.5. Настройка клиентов. Способ 2

Как я уже говорил, для второго способа не нужно создавать никаких сценариев для Windows‑клиентов. И, как правило, никаких проблем с настройкой Windows здесь не возникает – нужно просто использовать обыкновенное соединение. Базовая настройка соединения производится так же, как и в первом случае (см. рис. 17.2).

Однако при использовании второго способа могут возникнуть проблемы с настройкой Linux‑клиентов. На Linux‑клиентах должна быть установлена та же версия pppd, что и на серверах. И так же, как и на сервере, ее необходимо пропатчить. После обновления демона pppd нужно настроить файл /etc/ppp/callback‑client (см. листинг 17.18).

Листинг 17.18. Файл /etc/ppp/callback‑client

В файле ppp‑on нужно вызывать демон pppd, что можно сделать следующим способом:

Категория: Обратный звонок | Просмотров: 497 | Добавил: spb_serge | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: