ЧАСТЬ III: Звоним на Linux


Для начала, нам нужно настроить параметры ядра - проверяем, установлена ли поддержка ppp. Если поддержка не включена (ни внутри ядра, ни в виде модуля), то нам нужно пересобрать ядро (Kernel-HOWTO). Хорошо. Теперь у нас правильное ядро, и нам нужно поставить программное обеспечение. Поддержка call-back - это часть программ mgetty-sendfax и ppp. Вы можете найти их в вашем дистрибутиве. Т.к. в процессе call-back происходит двойная аутентификация, мы должны создать пользователя, от имени которого запускается ppp на сервере.

pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin

Затем меняем пароль. Информацию о пароле надо добавить в файл /etc/ppp/pap-secrets (подробнее см. man pppd):

pppuser * password_for_pppuser *

Этот пользователь не имеет програмной оболочки - вместо этого запускается файл /etc/ppp/ppplogin. Мы можем сделать его самостоятельно. Например, при помощи vi /etc/ppp/ppplogin:

#!/bin/sh

exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2

где 192.168.1.1 - адрес сервера, 198.168.1.2 - адрес нашей машины. Выставляем атрибуты файла, делая его запускаемым. Мы используем демон ppp, поэтому нам надо задать параметры его работы. Редактируем файл /etc/ppp/options:

netmask 255.255.255.0

proxyarp

lock

crtscts

modem

Опция proxyarp очень важна, если вы хотите иметь доступ в Интернет. Остальные опции используются для управления модемом. Если вы уберете опцию proxyarp, то вы сможете работать только с локальной сетью сервера. См. PPP-HOWTO и man pppd для более подробной информации. Теперь нам надо настроить модем. Чтобы наш сервер был готов к приему звонков, добавим строку в файл /etc/inittab (для COM2):

s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100

Для COM1 она выглядит примерно так:

s0:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100

Дайте команду init q. Если в журналах не появилось сообщений об ошибках, переходим к следующему шагу. Мы должны вернуться в каталог /etc/ppp и создать файл options.ttyS1 (для модема на COM1 - options.ttyS0):

IP_local: IP_remote

для нашей сети это будет:

192.168.1.1:192.168.1.2

Теперь проверим файл /etc/mgetty+sendfax/login.config


на предмет наличия в ней строки:

/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach kdebug 7 debug

Остальные строки могут начинаться с #.

И наконец, чтобы ppp работало от пользователя pppuser, мы должны установить флаг suid для pppd:

chmod u+s /usr/sbin/pppd

это даст:

-rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd

Я думаю, что очень неплохо добавить эту команду в cron, потому что у меня возникли проблемы с правами после перезапуска моего сервера. Наш сервер будет работать в качестве маршрутизатора. Нам надо разрешить ядру пересылать IP-пакеты. Для этого в файл /etc/rc.d/rc.local добавим следующую строку:

echo "1" > /proc/sys/net/ipv4/ip_forward

Если у вас дистрибутив RedHat или ему подобный, то вы можете изменить в файле/etc/sysconfig/network строку FORWARD_IPV4=false на FORWARD_IPV4=true.

Для проверки позвоним на Linux, используя для этого скрипт. Если мы делаем это из MS Windows, поставим галочку "вызвать окно терминала после соединения". Входим как pppuser с его паролем. Надеюсь, что все будет работать нормально.


Содержание раздела