Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 88
Текст из файла (страница 88)
c o n f . Раньше (при условии, что вы настраивали сервер удаленного доступа) он у вас содержал примерно такую строку:/ A u t o P P P / - a_ppp /etc/ppp/ppploginСейчас эту строку нужно изменить на следующую:/AutoPPP/- а_ррр / u s r / s b i n / p p p d noauth -chap +pap -detachПри обнаружении входящего звонка mgetty передаст управление демону pppd.Добавим в файл m g e t t y . c o n f i g описание порта, к которому подключенмодем (см.
листинг 17.13).Листинг 17.13. Файл mgetty.configport t t y S O# режим для приема только данных# (отключает факсимильные возможности)dataonly у# Строка инициализации модемаinit-chat "" AT OK # Здесь можно задать строку инициализации модема# Реинициализация модемаforce-init-chat "" AT OKТеперь нужно отредактировать файл /etc/ppp/options.ttySO (см.
листинг 17.14). В этом файле вы укажите параметры порта ttySO.Листинг 17.14. Файл/etc/ppp/options.ttySO# Максимальная скорость передачи данных38400# Аппаратный контроль передачиcrtscts# Блокировка устройства ttySOlock# Режим коммутируемой линииmodem# IP-адреса сервера и клиента соответственно192.168.1.1:192.168.1.207# IP-адрес сервера DNS. Этот параметр обязателен для Windows-клиентовms-dns 192.168.1.1380Практические примеры. Обратный звонок# Интервал отправления LCP-пакетовIcp-echo-interval 20# Количество не принятых LCP-пакетовlcp-echo-fallure 6# Размеры пакетовmtu 576mru 576Интервал отправления LCP-пакетов и количество не принятых LCPпакетов нужны серверу для определения функционирования клиента, тоесть с помощью этих параметров pppd определяет «жив» или нет клиент.Если на протяжении последних 120 секунд (20*6) клиент не прислал подтверждения, то сервер разорвет связь.Запустите mgetty, как обычно — через файл /etc/lnlttab:S O : 3 5 : r e s p a w n : / s b i n / m g e t t y -D -n 1 /dev/ttySO 38400Напомню, что SO — это просто идентификатор, и вы можете использоватьлюбое другое значение.
3,5 — это уровни запуска. Параметр -D программыmgetty указывает ей отключить все факсимильные возможности модема, апараметр -п 1 заставляет mgetty подымать трубку после первого звонка.Теперь нужно запустить (перезапустить) mgetty. Для этого выполнитекоманду init q. Также можно воспользоваться командой killall -I init.После этого на вашем модеме должна загореться лампочка DTR.
Еслиэтого не произошло, смотрите файл / v a r / l o g / m e s s a g e s — вы что-тосделали неправильно.Помните, в самом начале я упомянул некоторое «волшебное» слово.Допустим, что этим «волшебным» словом будет слово «пожалуйста» (please).Вот его-то и нужно записать в файл l o g i n . c o n f i g :please - - / u s r / s b i n / c a l l b a c k -s 3 8 4 0 0Я позволил себе немного пошутить относительно выбора этого самогослова. Разницы, конечно, нет никакой — вы можете в качестве этого словаустановить все, что вам угодно — даже свое имя. Обычно используютсяслова «callback» или «cbuser» (callback user). После этого снова следуетперезапустить mgetty.Вот, собственно, в чем заключается первый способ настройки.
Сейчасрассмотрим второй способ, а в пункте «Настройка клиентов» будем настраивать Windows-клиенты.17.3.3. Настройка сервера. Способ 2Второй способ, как я уже говорил, обладает неоспоримыми преимуществами. Во-первых, вам не нужно будет писать никакие сценарии дляWindows-клиентов. Во-вторых, вы сможете самостоятельно определить, какие пользователи будут использовать функцию callback, а какие — нет.Но и этот способ имеет свои недостатки. Хорошо, что существенныйнедостаток только один — невозможна авторизация, основанная на сценариях, как в первом способе, а иногда она бывает очень даже полезной.
Иеще один небольшой недостаток: нужно установить дополнительный патч к381Практические примеры. Обратный звонокдемону pppd, а так как патчи не всегда успевают за версиями pppd, топриходится использовать более старую версию pppd.Сначала нужно выкачать патч к pppd, который реализует поддержкуcallback. Он доступен по адресу: http://www.pbko.sk/~bobovsky/archiv/pppdcbcpS-callback/ine-contrib/ppp-2.x.n.CBCP.patch.
Числа х и п — это номераверсии демона pppd. Выкачивайте самую последнюю версию. Если у васверсии pppd старше, чем версия патча, вам придется установить болеестарую версию pppd. Различные версии pppd доступны по адресуftp://ftp.linuxcare.com.au/pub/ppp/Для обновления pppd (установки патча) используйте команду:patch -pi < р р р - 2 . 3 . 1 0 . С В С Р . p a t c hДанная команда обновляет исходные тексты pppd (предварительно ихнужно выкачать и установить). Эта же команда создает файлы:/etc/ppp/callback-users/etc/ppp/callback-client/etc/ppp/callback-serverВ первом из них нужно будет прописать всех пользователей, которымбудет доступна функция обратного звонка.
Второй нужен для работы у Linuxклиента функции callback. А третий управляет сервером обратного звонка.Затем перейдите в каталог с исходными текстами pppd и введите трикоманды:./configuremakemake i n s t a l lПосле установки pppd нужно настроить mgetty. Напомню, что программаmgetty должна быть собрана с поддержкой функции -DAUTO_PPP (автоматическая ррр-авторизация).Далее отредактируйте файл /etc/mgetty+sendfax/login, conf.
Он должен содержать одну строку:/AutoPPP/ — а_ррр /usr/sbin/pppd auth -chap +pap login callback-serverПосле этого пропишите своих пользователей в файле callback-users(см. листинг 17.15).Листинг 17.15. Файл/etc/ppp/callback-users# User list for callback# Username option# option — no callback# option * or empty user definied# option other admin definied: this number# in username * and ? wildcars valid, callback uses the best fit# Examples:# zotyo 67435 # user zotyo admin definied, number 67453# gates -- # gates not called back may *cbuser *user 320779382Практические примеры. Обратный звонокПервый пользователь — cbuser.
Согласно опции * — это пустое определение пользователя — для тестирования. Второй пользователь user — это реальное определение пользователя, телефон для обратного звонка — 320779. Всеостальные пользователи не будут использовать функцию callback — опция «-».С помощью команды chniod сделайте сценарии callback-server и callbackclient исполнимыми. После этого необходимо немного отредактироватьскрипт callback-server (см.
листинг 17.16).Листинг 17.16. Файл/etc/ppp/callback-users#!/bin/sh# Script callback-server# Script parameters: delay time in seconds, callback numberDELAY="$1"NUMBER="$2"/usr/sbin/chat -v -t 2 "" ATHOsleep $DELAY/usr/sbin/chat -v "" AT OK ATS39=5DT$NUMBER CONNECTДанная конфигурация уже должна работать, но иногда модем не успевает инициализироваться, поэтому после команды sleep SDELAY следует добавить еще одну команду sleep, например, sleep 25. Обратите внимание: используется тональный набор (АТ-команда DT). Напомню, что для импульсного набора используется команда DP (ATDP).Вот и все, осталось только проверить корректность работы сервера.17.3.4. Настройка клиентов. Способ 1Создайте новое соединение и приступите к его конфигурации.
Приэтом, на вкладке «Тип сервера» выключите все параметры, кроме программного сжатия данных. Единственныйдопустимый сетевой протокол —TCP/IP (см. рис. 17.2).Затем создайте в любом текстовом редакторе, например, в Блокноте,сценарий для обратного звонка (лисЯэроЩлтинг 17.17).:Х:Г^|£йТМ;Щ*?|ЩЩ|щ~щ(*4-Листинг 17.17. Сценарий для callbackп-a tilfffl;Рис. 17.2.
Свойства соединенияproc maindelay 1# это ваше «волшебное» словоAtransmit "please M"# Ожидание запроса номера# телефонаwaitfor "phone"# Передача номераЛtransmit "123456 М"# Ожидание вызоваwaitfor "RING"383Практические примеры. Обратный звонок# Ожидание соединения модемовw a i n f o r "CONNECT"endprocСохраните свое творение как файл||C:\PfogramFiles\Accessories\Callbacl4scpcallback.scp. В операционной системеWindows NT данный файл нужно записать в каталог \WINNT\SYSTEM32\RAS.После этого перейдите на вкладкуСценарии и выберите только что созданный сценарий (см. рис. 17.3).Затем перейдите на вкладку Общиеи нажмите на кнопку «Настройка». Впоявившемся окне перейдите на вкладку Подключение и нажмите на кнопку«Дополнительно».
Далее, в строке инициализации модема необходимо ввестиAT&C1SO=1 (см. рис. 17.4). КомандаРис. 17.3. Сценарий cal/back.scp&С1 устанавливает сигнал CD - - безнего этот способ работать не будет. Команда SO устанавливает количество звонков, после которых модем клиентабудет снимать трубку (1 звонок). Для модема Motorola Premier 33.6 установите такую строку инициализации:AT&F&COSO=1QOV1&D3\V4Более серьезный пример файла сценария callback вы найдете на прилагаемом компакт-диске в каталоге / m n t / c d r o m / d o c / c a l l b a c k .В операционной системе Windows NT обратный вызов настраиваетсянесколько иначе.
С этой целью откройте окно запуска удаленного доступа:Пуск -» Программы -> СтандартныеДополнительные параметры связи; • ' '•-» Удаленный доступ (Start ->ffifePrograms -» Accessories -» Remote!"в!!access). Нажмите на кнопку «Другое» («More»). Выберите пункт| .;;рГГменю «Параметры пользователя»"it(«Users preferences») и перейдите на::^<;| СтандартнаяJEj-<^вкладкуОтветныйвызов(«Callback»). Отметьте пункт «Да,::;j|SJATlc1sCfc1jтребуется ответный вызов по указанным номерам». Номер телефонной линии, на которой установленмодем, можно изменить, нажав наРис.
17.4. Дополнительные параметры связикнопку «Изменить».384Практические примеры. Обратный звонок17.3.5. Настройка клиентов. Способ 2Как я уже говорил, для второго способа не нужно создавать никакихсценариев для Windows-клиентов. И, как правило, никаких проблем с настройкой Windows здесь не возникает — нужно просто использовать обыкновенное соединение. Базовая настройка соединения производится так же,как и в первом случае (см. рис.
17.2).Однако при использовании второго способа могут возникнуть проблемыс настройкой Linux-клиентов. На Linux-клиентах должна быть установлената же версия pppd, что и на серверах. И так же, как и на сервере, еенеобходимо пропатчить. После обновления демона pppd нужно настроитьфайл / e t c / p p p / c a l l b a c k - c l i e n t (см. листинг 17.18).Листинг 17. IS. Файл/etc/ppp/callback-client#!/bin/sh# Script callback-client# Script parameters: delay time in secondsDELAY="$1"# Кладем трубку/usr/sbin/chat -v -t 2 "" \d+++\d\c OK ATHO OK# Вместо параметра $DELAY установите значение, которое подходит# для вашего модема# Подойдет delay 25 или даже delay 30sleep $DELAY# Ожидание callback/usr/sbin/chat -v "" ATZ OK "" RING ATA CONNECTВ файле ppp-on нужно вызывать демон pppd, что можно сделать следующим способом:/ u s r / s b i n / p p p d auth -chap +pap login callback13 Зак.