Персональный
сайт
Игоря
Сысоева


 
english
обо мне
 
sysoev.ru
 
nginx
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
 

Провайдим с помощью mgetty

 

10.06.1999

В нашем далёком от совершенства мире большинство средств коммуникации напрочь не понимают спартанский диалог "ogin:/assword:", выдаваемый getty. К ним относятся, например, фидошные звонилки, ну и, конечно, факсы. Кроме того, можно упростить входящие PPP- и UUCP-соединения, если обрабатывать их сразу с помощью pppd и uucico, а не вызывать эти команды через login. Для того, чтобы избежать этот диалог, можно установить mgetty, обладающую такими полезными свойствами:

  • После того, как mgetty выдаёт стандартный "login:", она может распознать LCP-кадры и вызвать, например, pppd. Таким образом, мы можем провести PAP или CHAP аутентификацию, минуя диалог "ogin:/assword:". В принципе, как мы уже видели, подобное умеет делать и getty.

    Для этого нужно собрать mgetty с ключом -DAUTO_PPP. Если Вы будете устанавливать mgetty из порта, то она соберётся с этим ключом.

  • Если после соединения mgetty обнаруживает, что соединение произошло с факс-аппаратом или факс-модемом, то mgetty может принять факс.

  • Перед выдачей приглашения "login:" mgetty может выдать "**EMSI_REQA77E", и если на другой стороне находится какой-либо фидошный пакет и он начнёт фидошную сессию, то mgetty это поймёт и может вызывать, например, ifcico.

    Для этого нужно собрать mgetty с ключом -DFIDO.

  • Для некоторых пользователей mgetty может вызывать не login, а что-нибудь иное, например, для всех пользователей, имена которых начинаются на UU, mgetty может вызывать uucico. В этом случае нам не нужно заводить специального пользователя для каждого uucp-клиента.

  • И, наконец, mgetty гораздо интеллектуальнее в работе с модемом, чем стандартная getty.

Для того, что бы собрать mgetty из порта, Вам нужно выполнить следующие команды:

cd /usr/port/comms/mgetty+sendfax
make

После успешной сборки Вы можете установить mgetty командой:

make install

Во время установки Вам будет задан ряд вопросов касательно порта и модема, и если Вы ответите на них вменяемо, то получите вполне рабочую конфигурацию. Я не буду останавливаться на этом, подробности Вы можете найти на сайте mgetty. Отмечу лишь, что, если Вы устанавливаете mgetty на устройство, скажем, cuaa1, а до этого на ttyd1 у Вас было getty, то после установки Вам необходимо будет изменить строку для ttyd1 в файле /etc/ttys:

ttyd1 "/usr/libexec/getty std.57600"  dialup  off insecure

В самом конце этого файла Вы найдёте новую строку для cuaa1, добавленную туда при установке:

cuaa1 "/usr/local/sbin/mgetty"        unknown on insecure

После того, как все изменения сделаны, нужно перестартовать init:

kill -1 1

Для того, что бы mgetty распознавала LCP-кадры нужно раскомментировать строку в /usr/local/etc/mgetty+sendfax/login.conf:

#/AutoPPP/ -    a_ppp   /usr/sbin/pppd auth +chap +pap login debug

А ещё лучше немного изменить на

/AutoPPP/  -    a_ppp   /usr/sbin/pppd auth \
                 refuse-chap require-pap login debug
+pap — это старый способ записи параметра require-pap. Кроме того, мы запрещаем CHAP по соображениям, описанным в статье "Аутентификация PAP и CHAP".

Когда pppd запускается mgetty, параметр login делает такие записи в файл /var/log/wtmp:

max    cuaa1  :PPP             Mon Jun  7 20:20 - 20:35  (00:15)
a_ppp  cuaa1  14400/ARQ/V42b   Mon Jun  7 20:20 - 20:20  (00:00)
Такое поведение параметра login присуще только pppd, входящему в комплект FreeBSD. О других отличиях читайте в статье "Сравнение версии pppd, входящей в дистрибутив FreeBSD, c обычной версией"

(C) Игорь Сысоев
http://sysoev.ru