HOWTO CallBack Server

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Содержание

[править] Введение

В этой статье описана настройка сервиса обратного дозвона, когда модем пользователя будет дозваниватся до удаленного сервера, пользователь введет логин, после чего сервер отключится и перезвонит по ранее указанному номеру для соединения.

[править] Настройка mgetty

  • Установите пакеты ppp и mgetty

emerge ppp mgetty

2) разбираемся с каталогом /etc/mgetty+sendfax

  • callback.config имеет такие строки:
Файл: /etc/mgetty+sendfax/callback.config
# перезвонить клиенту через 2 секунды (по умолчанию 20)
delay 2

# сервер перезвонит клиенту только один раз 
# (это если коннект не устанавливается по какой-либо причине, 
# например если клиент не указал у себя в строке инициализации модема строку &c0s0=1)
retry-time 65
max-time 60
  • dialin.config - пустой
  • login.config имеет следующее содержимое:
Файл: /etc/mgetty+sendfax/login.config
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap

# callback-users
rinus - - /usr/sbin/callback -S T55555555
kolya - - /usr/sbin/callback -S T55552222
vasya - - /usr/sbin/callback -S T55344455

каждому пользователю соответствует один номер, на который сервер будет перезванивать.

/etc/mgetty+sendfax/mgetty.config имеет следующее содержимое:

Файл: /etc/mgetty+sendfax/mgetty.config
port ttyS2
speed 115200
data-only y

port ttyS3
speed 115200
data-only y
#init-chat "" ATZ OK ATS43=8 OK \c

Примечание: Значение этих и других параметров в файле callback.conf можно почитать тут: http://www.osp.ru/pcworld/2003/09/088.htm

У меня 2 модема, сидят на /dev/ttyS2 и /dev/ttyS3

Еще нужно убедиться, что модем выдает сигналы RING при поступлении входящих звонков, или корректно работает встроенная функция автоматического поднятия трубки. Выдаваемые модемом строки "RING" должна перехватывать mgetty, чтобы, отсчитав заданное кол-во звонков, послать модему команду AT для поднятия трубки и установления модемного соединения. Модемы не всегда сразу правильно настроены, и для некоторых необходима строка инициализации (читайте документацию по модему, чтобы правильно его настроить). Например, строку "#init-chat "" ATZ OK ATS43=8 OK \c" стоит раскомментировать, если вы используете модем Zyxel U-336E, и хотите, чтобы он корректно поднимал трубку. (U-336E Plus не отвечает на входящий звонок)

Остальные файлы в данном каталоге нам не интересны.

[править] Настройка inittab

  • Редактируем /etc/inittab. Добавим в конец следующее:
Файл: /etc/inittab
S2:12345:respawn:/usr/sbin/mgetty -n 1 -D /dev/ttyS2 ttyS2
S3:12345:respawn:/usr/sbin/mgetty -n 1 -D /dev/ttyS3 ttyS3

Что здесь что, я думаю понятно. -n 1 брать трубку после одной посылки вызова. -D - не принимать факсы.

  • перезапустим init командой

kill 1 -1 или init q

Всё, модемы поднялись и слушают линию. На данном этапе можно на них позвонить, они должны снять трубку.

[править] Настройка ppp

Далее конфигурируем ppp. Переходим в каталог /etc/ppp В файле /etc/ppp/options оставляем это:

Файл: /etc/ppp/options
lock
modem
crtscts
asyncmap 0

После этого создаем файлы, описывающие наши модемы. Для моего случая их имена должны быть такие: options.ttyS2 и options.ttyS3 со следующим содержимым: В options.ttyS2

Файл: /etc/ppp/options.ttyS2
lock
auth
mtu 576
mru 576
192.168.10.1:
netmask 255.255.255.0
ms-dns 193.232.248.2
ms-dns 193.232.248.45
idle 300

В options.ttyS3

Файл: /etc/ppp/options.ttyS3
lock
auth
mtu 576
mru 576
192.168.10.1:
netmask 255.255.255.0
ms-dns 193.232.248.2
ms-dns 193.232.248.45
idle 300

В файл pap-secrets впишем логины и пароли пользователей, а также выдаваемые им адреса:

"rinus" * "jkdlsj" 192.168.10.10
"kolya" * "hjfeiu" 192.168.10.11
"vasya" * "jiefjf" 192.168.10.12

[править] Настройка iptables

В iptables разрешаем этим ip всё, что нужно. Я сделал так:
1. Сохраните текущие правила командой iptables-save > /etc/iptables.bak
2. Откройте /etc/iptables.bak в вашем любимом текстовом редакторе.
3. Добавьте следующие правила в подходящем порядке в соответствии с уже созданными правилами.

Firewall Rule:
-A INPUT -s 192.168.10.10/24 -j ACCEPT
# Это чтобы клиенты друг к другу не лазали :)
-A FORWARD -s 192.168.10.10/24 -d 192.168.10.10/24 -j DROP
-A FORWARD -s 192.168.10.10/24 -j ACCEPT
# Это для выхода в internet через модем на сервере:
-A POSTROUTING -s 192.168.10.10/24 -o ppp0 -j MASQUERADE

4. Активируйте все правила iptables-restore /etc/iptables.bak
Ну ещё можно разрешить к примеру выход в локалку и прочее.

[править] Настройка клиента MSWindows

С сервером пожалуй всё. Что касается виндового клиента.

Логин: rinus
Пароль: jkdlsj
  • В диспетчере устройств на вкладке дополнительно есть окошко для ввода команд инициализации модема. Пишем в неё:
&C0S0=1

Это чтобы модем ждал входящего звонка а не прекращал работу после получения команды

NO CARRIER.
  • И последнее - в свойствах соединения в закладке безопасность ставим галочку напротив вывести окно терминала.

[править] Тестируем

Итак, звоним на сервер. Модем снимает трубку. В винде вываливается окно терминала с приглашением login: Пишем свой логин, который мы прописали в /etc/mgetty+sendfax/login.config и жмём ввод. Сервер разрывает соединение. Окошко терминала не закрываем. Через какое-то время сервер должен позвонить, в окошке терминала появится строчка RING. После шуршания модемов опять появляется приглашение. На этот раз ничего не пишем, и нажимаем кнопочку done (готово). Далее происходит проверка логина и пароля пользователя (по файлу /etc/ppp/pap-secrets) и устанавливается ppp соединение.


И теперь кратенько опишем создание соединения в Linux на примере kppp. Создаём как обычно соединение, метод авторизации PAP. Теперь переходим на закладку Скрипт подключения, и добавляем примерно такие строки:

Expect     ogin:
Send       rinus #ваш логин
Expect     RING
Expect     CONNECT

на вкладке Модемы в настройках KPPP добавте в опцию Строка инициализации 2: AT&C0S0=1. Ok. Теперь осталось указать имя пользователя и пароль в самом первом окошке.

Надеюсь ничего не упустил, если что, спрашивайте и исравляйте.

[править] Автор

Личные инструменты