![]() |
CallBack под OS FreeBSD |
|
|
|
|
|
|
|
|
|
Настройка Callback п╕д FreeBSDВ ╤нтернет╕ ╕сну╓ величезна к╕льк╕сть матер╕ал╕в про те, як треба настроювати ppp з'╓днання з провайдером користуючись FreeBSD. Найперше сл╕д зазначити Хендбук, який да╓ багато детальних порад, та сайт ╤горя Сисо╓ва, який, не зважаючи на те, що автор не займа╓ться pppd вже к╕лька рок╕в, не втратча╓ сво╓╖ актуальност╕ по ц╕й тем╕. Нажаль ц╕ джерела не дають ╕нформац╕╓ про встановлення з'╕днання з провайдером через callback. Необх╕дн╕сть використання послуги callback поста╓ через необх╕дн╕сть ощадити дуже сутт╕в╕ грош╕ за користування телефонною л╕н╕╕ю, не думаю, що це вимага╓ додаткових пояснень. www.opennet.ru пропону╓ к╕лька статей як╕ пояснюють як настро╖ти callback. Ус╕ вони використовують pppd для встановлення першого з'╕днання з провайдером та для прийняття дзв╕нку в╕д провайдера. Використання такого п╕дходу не дало результат╕в для мого провайдера - оск╕льки в╕н через раз вида╓ р╕зне пов╕домлення запросу на лог╕н та пароль ╓ не реагу╓ на аутентикац╕ю pap-chap через pppd. З ╕ншого боку використання ppp (user ppp) з правильним ppp.conf файлом да╓ можлив╕сть п╕дключитися до провайдера незалежно в╕д того, як в╕н запрошу╓ користувача ╕дентиф╕кувати себе, та чи п╕дтриму╓ цей провайдер аутентикац╕ю PAP-CHAP. Тут ╓ необх╕дним в╕дзначити важлив╕ моменти про провайдера, з'╓днання з яким встановлювалось. Щодо послуги callback: послуга активу╓ться на сайт╕, на який мможна зайти за допомогою гостьового (безкоштовного) п╕дключення, на сайт╕ встановлю╓ться номер, по якому провайдер передзвоню╓ до користувача, який бажа╓ користуватися послугою callback. Задля того, щоб провайдер передзвонив, необх╕дно встановити ppp з'╓днання з ним, але при введенн╕ ╕мен╕ користувача необх╕дно додати :c на к╕нц╕ (див нижче у приклад╕ ppp.conf). Назива╓ться цей провайдер Svit Online, я до нього п╕дключаюсь у м╕ст╕ Ки╓в╕. Незважаючи на це, в статтю включен╕ ╕нструкц╕╖ для б╕льш загального п╕дключення до провайдера за допомогою послуги callback. Оск╕льки н╕що не забороня╓ використовувати user ppp для того щоб запросити провайдера передзвонити користувачев╓ ╕ пот╕м "ловити" дзв╕нок в╕д провайдера за допомогою вже pppd, користувач ма╓ можлив╕сть скористатися б╕льшою к╕льк╕стю можливостей user ppp для встановлення з'╕днання. Для того, щоб подзвонити провайдеру ╕ встановити з ним ppp з'╓днання спершу треба внести необх╕дн╕ зм╕ни до файлу /etc/ppp/ppp.conf: Створю╕ться в╕дпов╕дний розд╕л, що в╕дпов╕да╓ за провайдера, що п╕дтриму╓ callback. В результат╕ /etc/ppp/ppp.conf виглядатиме приблизно таким чином:
#
#-rw------- 1 root wheel 1418 5 лип 23:18 ppp.conf
#
default:
set log Phase Chat LCP IPCP CCP tun command
set device /dev/cuaa0
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT \
OK-AT-OK ATE1Q0 OK ATL1 OK \\dATDP\\T TIMEOUT 50 CONNECT"
allow user YOUR_USER_NAME
# Client side PPP
GT-no_callback:
set phone PROVIDER_TEL_NUMBER
set login
set authname "user"
set authkey "********"
set timeout 120
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
enable dns
GT:
set phone PROVIDER_TEL_NUMBER
set login
set authname "user:c"
set authkey "*******"
set timeout 120
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
enable dns
callback:
load GT # load in the GT config
set callback auth cbcp e.164 YOUR_PHONE_NUMBER
set cbcp YOUR_PHONE_NUMBER
Файл /etc/ppp/ppp.conf ма╓ належати користувачу root та мати доступ 600. Маючи файл /etc/ppp.conf як показано вище (при умов╕, що ви зм╕нили слова YOUR_USER_NAME, user, ********, PROVIDER_TEL_NUMBER та YOUR_PHONE_NUMBER на Ваш лог╕н на Вашому комп'ютер╕, лог╕н до провайдера, пароль, номер телефону провайдера та номер Вашого телефону) ви можете встановити з'╓днання з провайдером за допомогою наступно╖ команди: ppp -a GT-no_callback (для того, щоб таке з'╓дання можна було встановити без прав суперкористувача (root) необх╕дно бути членом групи network (див. файл /etc/group) Розрива╓ться таке з'╓днання командою: killall ppp П╕сля встановлення цього з'╓днання буде зм╕нено файл /etc/resolv.conf так, що в ньому з'являться IP адреси первинного та другорядного DNS сервер╕в провайдера. Тому раджу це з'╓днання встановити хочаб один раз. Оск╕льки таке з'╓днання не використову╓ callback, використовувати його п╕сля першого разу нам (в межах ц╕╓╖ статт╕) не ц╕каво. Як вже зазначено вище - м╕й провайдер передзвонить, якщо до ╕мен╕ користувача додати :c на к╕нц╕. Тому, якщо запустити команду: ppp -b GT буде встановлене ppp з'╓днання з провайдером, яке в╕н роз╕рве ╕ передзвонить (за зазначеним на сайт╕ номером). Для б╕льш загального випадку, якщо провайдер може отримати в╕д користувача номер (на який треба передзвонити) п╕д час першого з'╓днання скористу╓мось розд╕лом настройок /etc/ppp/ppp.conf з назвою callback. Цей розд╕л використову╓ ус╕ настройки розд╕лу GT та п╕сля встановлення з'╓днання переда╓ провайдеру номер, за яким провайдер ма╓ передзвонити. ╢ два способи передач╕ ╕нформац╕╖ про callback до провайдера через ppp, тож використаймо ╖х обидва для впевненност╕. Можна поекспериментувати - закоментувати той чи ╕нший. Тож для того, щоб ╕н╕ц╕ал╕зувати callback в╕д провайдера необх╕дно запустити наступну команду: ppp -b callback П╕сля запуску ц╕╓╖ команди буде встановлене ppp з'╓днання з провайдером, яке провайдер роз╕рве, отримавши необх╕дну йому ╕нформац╕ю. В консол╕ буде видане пов╕домлення що встановлення з'╓днання не вдалось. Невдовз╕ провайдер передзвонить, ╕ треба буде прийняти в╕д нього з'╓днання... вручну. Для цього, до того як задзвонить телефон (паралельний до модему) треба виконати наступне -- запустити ppp, вв╕йти у терм╕нальний режим, та в╕дпов╕сти на вх╕дний дзв╕нок. В консол╕ це вигляда╓ приблизно так: %ppp Working in interactive mode Using interface: tun0 ppp ON localhost> term deflink: Entering terminal mode on /dev/cuaa0 Type `~?' for help ... Дал╕, коли буде отримано вх╕дний дзв╕нок, ви побачите: RING якщо ви це побачили треба набрати: ata Це команда модему в╕дпов╕сти на вх╕дний дзв╕нок. Дал╕, п╕сля того, як ви побачити строчку, яка почина╓ться на PPP (заглавними л╕терами - це важливо) треба прокласти до провайдера default route (тобто встановити, за якою адресою операц╕йна система ма╓ звертатися, якщо вона не зна╓ адреси мережевого ресурсу). Це робиться командою: add default HISADDR Точн╕с╕нько як в /etc/ppp/ppp.conf ! Все - з'╓днання встановлено за допомогою callback. П╕сля цого ppp можна перевести у бекграунд, або просто залишити консоль, в як╕й робилися вс╕ згадан╕ вище операц╕╖. Роз╕рвати з'╓днання можна як ╕ ран╕ше командою: killall ppp . Цей спос╕б - хоча ╕ ╓ зовс╕м незручним, да╓ можлив╕сть вручну прощупати процеси, як╕ в╕дбуваються п╕д час встановлення з'╓днання користуючись послугою callback. Можливо ╕ варто все це в╕дтворити, для того, щоб краще зрозум╕ти що в╕дбува╓ться... Весь процес пода╓ться в деталях, для того, щоб побачити, ус╕ моменти, як╕ щоразу повторюються. В╕дм╕тивши ╖х, можна "навчити" операц╕йну систему реагувати на них так само, як у наведеному вище алгоритм╕ реагу╓ оператор. Так ми п╕дходимо до автоматизац╕╖ процесу встановлення ppp з'╓днання з провайдером з використанням callback. Виходячи з усього, написаного вище - для того щоб встановити з'╓днання з провайдером користуючись callback необх╕дно подзвонити провайдеру (для того, щоб передати ╕нформац╕ю про абонента, який бажа╓ встановити з'╓днання користуючись callback), в╕дпов╕сти на вх╕дний дзв╕нок, встановити по ньому ppp з'╓днання, та встановити на цьому з'╓днанн╕ defaultroute. Оск╕льки процедура задана ╕ не зм╕ню╓ться - ╖╖ можна автоматизувати. Для того щоб подзвонити провайдеру вже все готово. Залишилось лише подбати про автоматичне в╕дпов╕дання на вх╕дний дзв╕нок та встановлення робочого ppp з'╓днання. В╕дпов╕сти на вх╕дне з'╓днання можна за допомогою pppd використовуючи простий chat скр╕пт: # #-r-xr-x--- 1 root network 111 28 сер 01:21 callback.script # #!/bin/sh # #accept incoming connection "" AT OK ATL1 OK ATZ TIMEOUT 125 RING ATA "}" "\\с" Цей скр╕пт збер╕га╓ться у файл╕ /etc/ppp/callback.script До цього файлу мають мати доступ користувач╕ групи network. В л╕ву колонку знесено те, що оч╕ку╓ться в╕д модему, а у прав╕й колонц╕ даються йому команди (за винятком строки TIMEOUT 125 - це ╓ заданням зм╕нно╖). Протестувати цей скр╕пт можна програмою chat без використання модему, за допомогою наступно╖ команди: chat -v -s -f /etc/ppp/callback.script При цьому на екран консол╕ будуть видаватися пов╕домлення в╕д chat про те що в╕н оч╕ку╓, ╕ дати йому це можна з клав╕атури. Для того, щоб pppd запускав цей скр╕пт необх╕дно мати наступного вигляду файл /etc/ppp/options:
#
#-rw------- 1 root wheel 481 27 сер 21:28 options
#
/dev/cuaa0 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/callback.script"
noipdefault # remote PPP serve must supply your IP address
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
defaultroute # put this if you want that PPP server will be
# your default router
asyncmap 0
debug
важливим ╓ те, що цей файл ма╓ належати користувачу root та мати доступ 600, ╕накше pppd не запуститься. /dev/cuaa0 не треба м╕няти лише у тому випадку, якщо модем, який викроистову╓ться для п╕д'╓днання до ╤нтернет п╕дключений до першого посл╕довного порту (COM1). Про те, що означають вс╕ ц╕ строки написано багато до мене, ╕ я повторювати не буду, варто лише звернути увагу на на строку яка почина╓ться з connect - у н╕й зада╓ться скр╕пт, який буде використовуватись при встановленн╕ з'╓днання, це якраз той скр╕п, який описано вище. Якщо приведений файл /etc/ppp/options на м╕сц╕, pppd (здатний в╕дпов╕сти на вх╕дний дзв╕нок) запуска╓ться просто - командою: pppd Але для того щоб проавайдер подзвонив потр╕бно зробити перше з'╓днанян з ним - так як описано вище. Тому об'╓дна╓мо дзв╕нок до провайдера та отримання вх╕дного дзв╕нка в╕д нього у наступний скр╕пт:
#
#-r-xr-x--- 1 root network 120 27 сер 21:30 callback
#
#!/bin/sh
#
# dial for callback
ppp -b callback
# answering...
pppd
if [ "$?" = "0" ]; then
exit 0
fi
exit 1
Цей скр╕пт збер╕га╓ться у файл╕ /etc/ppp/callback , належить користувачу root ╕ ╓ доступним користувачам з групи network. На цьому все! Тепер, для того, щоб встановити з'╓днання з провайдером, користуючись послугю callbak достатньо запустити команду: /etc/ppp/callback Роз╕рвати з'╓днання, або перервати його у процес╕ становлення (якщо заглючив модем, або якщо Ви забули його включити) можна командою: killall pppd Вс╕ команди запускаються користувачем, який належить до групи network. Ще можна створити красив╕ кнопочк╕, як╕ встановлюють з'╓днання з провайдером та розривають його та розм╕стити ╖х на десктоп╕ для користувача, який може не мати ан╕ крапл╕ уяви про те, що ╕ як в╕дбува╓ться коли в╕н ╖х натиска╓. Л╕тература: 1. FreeBSD Handbook: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/index.html 2. Персональний сайт ╤горя Сисо╓ва: http://www.sysoev.ru 3. Стаття на www.opennet.ru про настройку callback: http://www.opennet.ru/base/modem/cbcp_pppd.txt.html 4. Л╕ст╕нг стандартних терм╕нальних команд модему: http://fan.nb.ca/cfn/info/help/com-prog/modemcommandslist.html Updated 2004 Sep 10by Stan. |