Очередная практическая статья. Именно такие статьи мы пытаемся переводить
в первую очередь, поскольку а)именно "массового" знания о том,
как что-либо зделать "под Linux'ом", и не хватает в первую очередь
и б)это соответствует девизу Linux Gazette -- "С песней по Linux [...making
Linux just a little more fun!]".
Но особенно приятно то, что письма наших читателей помогают другим нашим
читателям! Вот такое письмо я получил (и страшно им горжусь:):
Просто пишу, чтоб выразить свою благодарность Алексею Чайкину (ну
и Вам, Сергей, за статью в целом :-) [должен заметить, что я тут и
не главный:) -- статью переводил Владимир Меренков, ему и спасибо -- С.
Скороходов]). Я студент одного из Московских вузов, сейчас мы как
раз "долбаем" системное администрирование. С помощью cvs удаётся
контролировать многое, есть конечно и свои минусы - на больно новых атлонах
не запоминаются мощные, большие деревья, но эту проблему обходят с помощью
линков на конкретные узлы дерева, в общем, теперь не страшно пускать за
свой компьютер самого злостного недоброжелателя.=) А благодаря Алексею
у меня появилось несколько новых идей, связанных с загрузкой через дискету.
Это ведь с помощью обычного моунта можно просто "носить" свою
систему на дискетке! =)) И какие бы изменения не были бы в ней сделаны,
CVS всё восстановит..
Спасибо.
Как всегда, жду вопросов и замечаний по адресу suralis-s@mtu-net.ru.
Если не лень, то сразу пишите, можно ли использовать Ваши письма в рассылке.
Смысл организации 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, добавив строку:
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 под рукой -- гарантировать не могу. Прим.перев.):
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 и напишите в нём следующее
Сделайте его исполняемым
Теперь вы можете позвонить на сервер, используя скрипт pppcall
(Обращаю ваше внимание на то, что автор статьи напутал с именами файлов.
В оригинале статьи в пункте 2) имя файла -- pppcalback. В пункте
4) с ключом call было указано имя pppcall. Более подробно смотрите
man по pppd(8), ключ call. Прим.перев.)
Если вы обнаружили проблемы при настройке callback-сервера, обязательно
сообщите мне об этом. Комментарии и предложения приветствуются.
Sunil Thomas Thonikuzhiyil
Я работаю консультантом по информационным технологиям в Kerala Legislative
Assembly Trivandrum, Индия. "Запал" на Linux в 1996. Имею степень магистра
по информатике (Masters in Computer Science) в Cochin University. Интересуюсь
всеми видами операционных систем. В свободное время люблю послушать индийскую
классическую музыку.
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (suralis-s@mtu-net.ru).
Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.