ЧАСТЬ 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 с его паролем. Надеюсь, что все будет работать нормально.