Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Настройка callback-сервера на базе Linux.

Автор : Sunil Thomas Thonikuzhiyil ([email protected])
Перевод : Александр Куприн

Введение

Смысл организации dialin-сервера PPP в том, что пользователи устанавливают PPP-соединение с удаленным сервером, дозваниваясь по телефонным линиям с помощью модема. Кроме этого, можно сделать так, чтобы Linux-машина делала обратный звонок пользователю, дозвонившемуся к ней. Этот документ объясняет, как шаг-за-шагом настроить callback-сервер (сервер с функцией обратного дозвона) на базе Linux.

Требования

Мой сервер работает под Debian Potato (ядро 2.4.17). Модем подключен к ttyS0 (COM1) и функционирует и как dialin (принимая звонки), и как callback-модем. Другая моя машина (клиент) работает под Debian Potato и Win98. Внешний модем подключен к ttyS1. Предполагается, что и на сервере и на клиенте установлен минимум программного обеспечения для дозвона к интернет-провайдеру. На сервере, в дополнение к этому, нужно установить пакет mgetty+sendfax.

Идея

В двух словах, callback-сервер работает следующим образом. Сперва я (клиент) дозваниваюсь через модем к моему callback-серверу. Модем на сервере настроен на прием входящих звонков. После установки соединения, сервер предлагает клиенту пройти аутентификацию. Я подключаюсь к нему как особый callback-пользователь. После этого модем на сервере обрывает связь и звонит мне по номеру, который закреплён за моей машиной (клиентом). Модем на клиентской машине уже готов принять обратный звонок и, после установления соединения, происходит повторная авторизация. Теперь я регистрируюсь как обычный PPP-пользователь. Всё -- соединение окончательно установлено.  

Конфигурация dialin-сервера

Для того, чтобы всё вышеизложенное заработало, необходимо сконфигурировать сервер так, чтобы он мог принимать входящее PPP-соединение.

Вот что надо сделать:

1) Создайте нового пользователя pppuser

Измените запись в /etc/passwd относящуюся к pppuser на:
pppuser:x:1001:1001:,,,:/home/pppuser:/usr/sbin/pppd

2) Чтобы последовательный порт мог принимать входящие сообщения, добавьте в /etc/inittab следующую строку:

T0:23:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0

Перезапустите init, выполнив команду  'init q'.
Это разрешит принимать входящие сообщения через ttyS0.

3) Перейдите в подкаталог /etc/mgetty (Там расположен конфигурационный файл mgetty. В дистрибутиве Redhat всё это располагается в /etc/mgetty+sendfax)
Отредактируйте login.config, добавив строку:

/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options

Закомментируйте все остальные строки

4) В конфигурационном файле /etc/ppp/options пропишите следующее:

         -detach
         asyncmap 0
         modem
         crtscts
         proxyarp
         lock
         require-pap
         refuse-chap
         ms-dns 192.168.50.100 #укажите ip-адрес вашего dns-сервера
         usepeerdns
5) Создайте файл options.ttyS0 в /etc/ppp со следующим содержимым:
     192.168.0.100:192.168.0.2
     noauth
Два ip-адреса, указанные выше -- это адрес вашего сервера и адрес клиента, который он должен получить от сервера. Измените их согласно вашим сетевым настройкам. Если ваш модем подключён к ttyS1, то имя редактируемого файла -- options.ttyS1.

6) Измените права доступа к pppd (в некоторых дистрибутивах у pppd уже есть suid-атрибут)

  chmod u+s /usr/sbin/pppd

7) Создайте алиас для ppp, добавив в /etc/profile такую строку

 alias ppp=/usr/sbin/pppd -detach'
Теперь попытайтесь дозвониться к серверу со стороны клиента. Для этого, если вы используете MS Windows, выберите "Мой компьютер", затем "Удалённый доступ к сети", "Новое соединение" и заполните необходимые данные.  Войдите как pppuser и проверьте, работает ли корректно dialin-сервер. Проверьте "пингуется" ли сервер. После этого, вы можете проверить ip-адрес, присвоенный клиенту, воспользовавшись программой winipcfg.

Конфигурация callback

После того, как настройка dialin-сервера завершена, будет несложно настроить callback.

Вот, что нужно сделать.

1) Создать нового пользователя back. (Если кто-то запутался, то речь идёт о настройках на сервере. Прим.перев.)

2) Создать пустой файл с именем callback.conf в /etc/mgetty/. (Если нужно, можете добавить в этот файл строки инициализации для вашего модема. Но обычно его оставляют пустым.)

3) В /etc/mgetty/login.config добавляется следующая строка:

back - - /usr/sbin/callback -S 2561

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

Конфигурация клиентов

1) MS Windows 98

Откройте папку "Мой компьютер", далее "Удалённый доступ к сети", "Новое соединение" и укажите данные, необходимы для дозвона к PPP-серверу. Кроме этого, в настройках модема на закладке "Подключения" нажмите кнопку "Дополнительно" и в строке инициализации  модема укажите следующее:

  &c0s0=1

Затем в свойствах модема на закладке "Параметры" включите элемент (checkbox) "Открыть окно терминала до набора номера". (Названия пунктов взяты из Windows 98 Russian SE. Прим. перев.)

Вы можете оставить поля с именем пользователя и паролем пустыми.

Начните дозваниваться к серверу. После дозвона в открывшемся окне терминала вы увидите приглашения для аутентификации.

Войдите в систему как 'back' (специальный пользователь для обратного дозвона).

Теперь модем со стороны сервера оборвёт связь, подождёт несколько секунд и позвонит вам. После установки callback-соединения вам предложат пройти повторно авторизацию. Введите логин pppuser и пароль. Нажмите "продолжить" на окне терминала. Теперь вы в системе. Проверьте снова "пингуется" ли сервер.

Возможно, для регистрации надо написать скрипт, но я ещё не пробовал это сделать. Процедура регистрации может отличаться в разных версиях Wiindows. И помните, очень важно установить строку инициализации для модема (&c0s0=1).

2) Linux

Конфигурирование Linux-клиента выглядит немного сложнее. Вот, что нужно было сделать с моей машиной (Debian, ядро 2.4.17)

1) Создать файл /etc/ppp/options с таким содержимым (В оригинале стояло /etc/options, но это, скорее всего, опечатка. Должно быть /etc/ppp/options. Хотя, не имея Debian под рукой -- гарантировать не могу. Прим.перев.):

        lock
        defaultroute
        noipdefault
        modem
        115200
        crtscts
        debug
        passive
        asyncmap 0
2) Создать файл ppp-callback в /etc/ppp/peers/ и прописать в нём следующее:
    ttyS1 19200 crtscts
    connect '/usr/sbin/chat -v -f /etc/ppp/chat-callback'
    noauth
3) Создать файл /etc/ppp/chat-callback, где указать
        ABORT BUSY
        ABORT VOICE
        ABORT "NO DIALTONE"
        ABORT "NO ANSWER"
        "" ATZ
        OK ATDT2562             # Телефонный номер сервера
        CONNECT \d\d
        ogin: \q\dback
        TIMEOUT 90
        RING AT&C0S0=1
        ogin: \q\dpppuser
        assword: \q\dpasswordforppuser
В скрипте измените значения номера телефона, логина и пароля на те, которые вы будете реально использовать. (Просмотрите документацию на ваш модем, возможно, для него понадобятся дополнительно параметры инициализации. Не исключено, что нужно будет заменить ATZ на что-то типа AT&FX2.)

4) Создайте скрипт /usr/bin/pppcall и напишите в нём следующее

  #!/bin/bash
  /usr/sbin/pppd -detach call ppp-callback &

Сделайте его исполняемым
Теперь вы можете позвонить на сервер, используя скрипт pppcall

(Обращаю ваше внимание на то, что автор статьи напутал с именами файлов. В оригинале статьи в пункте 2) имя файла -- pppcalback. В пункте 4) с ключом call было указано имя pppcall. Более подробно смотрите man по pppd(8), ключ call. Прим.перев.)

Дополнительная информация

Следующие документы помогли мне понять и написать вышеизложенное:
1) Callback mini howto (http://linuxdoc.org/HOWTO/mini/Call-back.html) (Руcский перевод можете найти здесь (http://linux.yaroslavl.ru/Howto/Howto-mini/call-back-mini-HOWTO.html). Прим.перев.)
2) Linux callback (http://www.bdcol.ee/linux/callback.shtml)
3) Страницы справочного руководства по pppd
4) Mgetty+Sendfax Archive/Documentation (http://www.leo.org/~doering/mgetty/)

Если вы обнаружили проблемы при настройке callback-сервера, обязательно сообщите мне об этом. Комментарии и предложения приветствуются.


Обсудить данную тему на нашем форуме "Все о Linux"