Помогите поднять collback server на gentoo
riv1329 23 Августа, 2005 - 18:01
Уже очень давно пытаюсь решить эту проблему для линукс вообще. Нашел кучу описаний как это сделать на Freebsd, на линуксе только устаревшие, ссылающиеся на патчи, которых уже давно нет в Интернете... Пожалуйста, помогите поднять callback server на gentoo по возможности наиболее штатным/красивым образом, или хотя бы направление, куда копать. Сразу оговорюсь, что с другой стороны будут Windows. Т.е. если быть более точным нужно поднять CBCP Server, но как это сделать не знаю.
Заранее спасибо.
»
- Для комментирования войдите или зарегистрируйтесь
Поможем
1) emerge ppp mgetty
2) разбираемся с каталогом /etc/mgetty+sendfax
callback.config - пустой
dialin.config - пустой
login.config имеет следующее содержимое:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login
# callback-users
rinus - - /usr/sbin/callback -S T55555555
kolya - - /usr/sbin/callback -S T55552222
vasya - - /usr/sbin/callback -S T55344455
каждому пользователю соответствует один номер, на который сервер будет перезванивать.
mgetty.config имеет следующее содержимое:
port ttyS2
speed 115200
data-only y
port ttyS3
speed 115200
data-only y
У меня 2 модема, сидят на ttyS2 и ttyS3
Остальные файлы в данном каталоге нем не интересны.
3) Редактируем /etc/inittab. Добавим в конец следующее:
S2:12345:respawn:/usr/sbin/mgetty -n 1 -D /dev/tts/2 ttyS2
S3:12345:respawn:/usr/sbin/mgetty -n 1 -D /dev/tts/3 ttyS3
Что здесь что, я думаю понятно. -n 1 брать трубку после одной посылки вызова. -D - не принимать факсы.
4) перезапустим init командой kill 1 -1 или init q
Всё, модемы поднялись и слушают линию. На данном этапе можно на них позвонить, они должны снять трубку.
5) Далее конфигурируем ppp.
Переходим в каталог /etc/ppp
В файле option оставляем это:
lock
modem
crtscts
asyncmap 0
После этого создаем файлы, описывающие наши модемы. Для моего случая их именя должны быть такие: options.tts.2 и options.tts.3
со следующим содержимым:
В options.tts.2
lock
login
auth
mtu 576
mru 576
192.168.10.1:192.168.10.9
netmask 255.255.255.252
ms-dns 193.232.248.2
ms-dns 193.232.248.45
idle 300
В options.tts.3
lock
login
auth
mtu 576
mru 576
192.168.10.1:192.168.10.10
netmask 255.255.255.252
ms-dns 193.232.248.2
ms-dns 193.232.248.45
idle 300
Отличаются только адресом, выделяемым клиену. Я долго ломал голову с именами этих файлов (см http://gentoo.ru/node/285 ). Во всех описаловах, которые я только находил, они назывались option.ttyS2 и option.ttyS3, но при использовании файловой системы устройств udev или devfs они должны называться так, как я написал.
Синтаксис этих файлов подробно расписан в этих статьях.
В файл pap-secrets впишем логины и пароли пользователей. Я не заморачивался с этим и прописал один логин и пароль для всех своих пользователей, благо их у меня не много:
"pppuser" * "" *
Пароль для него будет браться из /etc/shadow
6) Создадим пользователя в системе с именем pppuser и паролем password:
useradd -d / -s /bin/false pppuser
passwd pppuser
Retype new UNIX password:
New UNIX password:
7) В iptables разрешаем этим ip всё, что нужно. Я сделал так:
iptables -A INPUT -s 192.168.10.8/255.255.255.252 -j ACCEPT
iptables -A FORWARD -s 192.168.10.8/255.255.255.252 -j ACCEPT
# Это чтобы клиенты друг к другу не лазали :)
iptables -A FORWARD -s 192.168.10.8/255.255.255.252 -d 192.168.10.8/255.255.255.252 -j DROP
# Это для выхода в internet через модем на сервере:
iptables -t nat -A POSTROUTING -s 192.168.10.8/255.255.255.252 -o ppp0 -j MASQUERADE
Ну ещё мона разрешить там выход в локалку и прочее.
8) С сервером пожалуй всё. Что касается виндового клиента.
Логин: pppuser
Пароль: password
В диспетчере устройств на вкладке дополнительно есть окошко для ввода команд инициализации модема. Пишем в неё:
&C0S0=1
Это чтобы модем ждал входящего звонка а не прекращал работу после получения команды NO CARRIER.
И последнее - в свойствах соединения в закладке безопасность ставим галочку напротив вывести окно терминала.
Итак, звоним на сервер. Модем снимает трубку. В винде вываливается окно терминала с приглашением login:
Пишем свой логин, который мы прописали в /etc/mgetty+sendfax/login.config
Сервер разрывает соединение. Окошко терминала не закрываем. Через какое-то время сервер должен позвонить, в окошке терминала появится строчка RING.
После установления соединения опять появляется приглашение. На этот раз ничего не пишем, и нажимаем кнопочку done (готово). Далее происходит проверка логина и пароля пользователя (по файлу /etc/ppp/pap-secrets) и устанавливаетя соединение.
Надеюсь ничего не упустил, если что, спрашивайте и исравляйте.
Rinus, огромное
Rinus, огромное спасибо за такой развернутый ответ, я несомненно воспользуюсь этой информацией - работа уже идет, callback очень нужен.
А не знает ли кто-нибудь, как поднять настоящий cbcp сервер. Чтобы Windows клиетн распознал что сервер собирается сделать Callback и сам спросил у пользователя номер. Windows Умеет так делать, в интернете есть ссылки и статьи уходящие к загадочному патчу на pppd, после кторого мол так все и начинает работать. К сожалению патч не обновлялся с 2001 года, а то что написано в статьях у меня повторить не получилось.
И ещё...
В дополнение к своему how-to: в файл /etc/mgetty+sendfax/callback.config вписываем следующие строчки:
delay 5
retry-time 65
max-time 60
Первая строка - перезвонить клиенту через 5 секунд (по умолчанию 20)
Вторая и третья - хитрый ход, чтобы сервер перезванивал клиенту только один раз (это если коннект не устанавливается по какой-либо причине, например если клиент не указал у себя в строке инициализации модема строку $c0s0=1)
Значение этих и других параметров в файле callback.conf можно почитать тут: http://www.osp.ru/pcworld/2003/09/088.htm
:. posted on ru.gentoo-wiki.com
С разрешения Rinus оформлена статья на ru.gentoo-wiki.com.
Спасибо.
07/21 22:43:46 yS2 mgetty:
07/21 22:43:46 yS2 mgetty: interim release 1.1.35-Feb22
07/21 22:43:46 yS2 check for lockfiles
07/21 22:43:46 yS2 locking the line
07/21 22:43:46 yS2 can't get group 'modem': Success
07/21 22:43:46 yS2 lowering DTR to reset Modem
07/21 22:43:47 yS2 send: \dATQ0V1H0[0d]
07/21 22:43:47 yS2 waiting for ``OK'' ** found **
07/21 22:43:47 yS2 send: ATS0=0Q0&D3&C1[0d]
07/21 22:43:47 yS2 waiting for ``OK'' ** found **
07/21 22:43:48 yS2 waiting...
07/21 23:15:08 yS2 wfr: waiting for ``RING''
07/21 23:15:08 yS2 wfr: waiting for ``RING''
07/21 23:15:13 yS2 send: ATA[0d]
07/21 23:15:13 yS2 waiting for ``CONNECT''
07/21 23:15:25 yS2 found action string: ``NO CARRIER''
07/21 23:15:25 ##### failed A_FAIL dev=ttyS2, pid=13103, caller='none', conn='', name=''