Помогите поднять collback server на gentoo

Уже очень давно пытаюсь решить эту проблему для линукс вообще. Нашел кучу описаний как это сделать на 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
New UNIX password:
Retype 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=''

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".