|
Пошаговая настройка Dial-In сервера
Денис Колесниченко, СофтТерра
Подробная статья о настройке dial-in сервера.
Конфигурирование mgetty и ppp. Решение проблем.
- Установка программного обеспечения
- Настройка mgetty
- Настройка ppp
- Включение IP Forwarding
- Второй вариант настройки
- Если что-то не работает...
- Настройка Windows-клиентов
Операционная система: Linux Нам потребуются ppp-2.3.x
(желательно поновее) и mgetty-1.1.x. mgetty доложен быть собран с
опцией -DAUTO_PPP, если это не так, нужно пересобрать Я использую
ppp-2.4.0-3mdk.i586.rpm и mgetty-1.1.22-2mdk.i586.rpm (Linux Mandrake 7.2)
Если вы используете RedHat/Mandrake, установить ppp и mgetty
можно с помощью команд:
# mount -t iso9660 /dev/hdd /mnty/cdrom
#cd /mnt/cdrom/Mandrake/RPMS #rpm -Uvh mgetty* #rpm -Uvh ppp*
Некоторые замечания:
- CDROM является устройством /dev/hdd (Secondary Slave)
- Используется Linux Mandrake (при использовании RedHat пакеты
находятся в /mnt/cdrom/RedHat/RPMS)
- Не используется supermount (если у вас supermount активен, первую
команду вводить не нужно)
- Третья и четвертая команды устанавливают все семейство mgetty и ppp.
При использовании такого подхода устанавливаются все файлы - и никакой
заботы! Вы же можете установить только то, что вам нужно.
При корректной сборке/установке mgetty у вас должны быть
файлы
/etc/mgetty+sendfax dialin.config
login.config mgetty.config /etc/ppp
auth-up auth-down chap-secrets
ip-up ip-down options pap-secrets
Если их нет, нужно самостоятельно найти где они находятся. При
самосборке смотрите что и куда проинсталлировалось. В крайнем случае,
необходимые файлы нужно создать вручную.
/etc/mgetty+sendfax/dialin.config - обычно пустой (все
закомментировано). /etc/mgetty+sendfax/login.config - должен содержать
строчку
/AutoPPP/-
a_ppp /etc/ppp/ppplogin
Убедитесь, что эта строчка
не закомментирована. Если вы хотите, чтобы имена пользователей
записывались в log-файлы, отредактируйте эту строку так:
/AutoPPP/-
- /etc/ppp/ppplogin
Затем создайте
/etc/ppp/ppplogin
mesg n tty -echo /usr/sbin/pppd
silent auth -chap +pap login
В некоторых версиях ppp вместо
-chap нужно писать refuse-chap, а вместо +pap - require-pap Сделайте
/etc/ppp/ppplogin исполняемым # chmod +x /etc/ppp/ppplogin
В нашем примере мы используем PAP аутентификацию с
использованием пароля из /etc/passwd файла (см. ниже)
/etc/mgetty+sendfax/mgetty.config - должен такой:
# For US Robotics Sportster 28.8 with speaker off port
ttyS0 speed 28800 data-only y debug 3 init-chat "" ATZ OK
AT&F1M0E1Q0S0=0 OK answer-chat "" ATA CONNECT \c \r
# For Practical Peripheral 14.4 with fax disabled and
prolonged # carrier wait time (90 sec) port ttyS1 speed 14400
data-only y debug 3 init-chat "" ATZ OK
AT&F1M0E1Q0S0=0S7=90+FCLASS=0 OK answer-chat "" ATA CONNECT \c \r
# For USRobotics V.Everything port ttyS2 speed 57600
data-only y debug 3 init-chat "" AT OK
ATS7=50S0=1+S62=3+S64=2S39=10 OK
Для ZyXEL U336E можно
использовать такие параметры: init-chat "" ATZ OK
AT&F1M0E1Q0S0=0S OK answer-chat "" ATA CONNECT \c \r
Теперь нужно изменить /etc/inittab
# Run gettys
in standard runlevels 1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty
tty3 4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty
tty6
#added by me
S0:2345:respawn:/sbin/mgetty -x 3 ttyS0
S1:2345:respawn:/sbin/mgetty -x 3 ttyS1
S2:2345:respawn:/sbin/mgetty /dev/ttyS2
S0,S1,S2 - просто
идентификаторы - вы можете использовать любое имя. Нужно назначить
отдельное имя для каждого порта. S0-S2 я использовал для наглядности.
Теперь нужно запустить mgetty (перед выполнением этой
команды включите модемы) # init q Если при выполнении этой команды
модем(ы) не подключены или выключены, в /var/log/mesages вы получите много
ругательств от mgetty по этому поводу. Если на модеме загорелась
лампочка TR, то все настройки выполнены правильно и mgetty подхватил
модем.
Обычно для каждого порта в каталоге /etc/ppp создается файл
options.ttySx, где x - номер порта.
lock login auth
netmask 255.255.255.0 modem crtscts refuse-chap
require-pap mtu 576 mru 576 proxyarp myhost:ppp01
ms-dns CCC.CCC.CCC.CCC
Общие настройки для всех портов
можно вынести в файл /etc/ppp/options. myhost следует заменить на
реальное имя вашего Dial-In сервера. ppp01- произвольно выбранное имя
виртуального узла абонента (вы можете использовать другие имена,
например, igor, denis и т.д.). Имена узлов должны быть
уникальными, т.е. если вы используете ppp0 в options.ttyS0, то в
options.ttyS1 нужно использовать ppp01 и т.д. ms-dns определяет
DNS-сервер для клиентов Microsoft. Укажите IP DNS-сервера вашей сети.
Нам нужно использовать опцию proxyarp, т.к. мы будем назначать
IP-адреса внутри broadcast наших сетевых карт локальной сети. При этом
pppd будет делать вид будто бы виртуальный хост находится внутри нашего
сегмента ethernet. Вместо "refuse-chap" можно писать "-chap", а вместо
"require-pap" - "+pap"
Теперь отредактируем файл /etc/ppp/pap-secrets
#
Secrets for authentication using PAP # client
server
secret IP addresses
*
*
""
192.168.0.11 *
*
""
192.168.0.12 *
*
""
192.168.0.13
В нашем примере используется три модема для
входящих звонков, поэтому нужно сделать три записи. Пароли мы будем
брать из /etc/passwd (или /etc/shadow)
Вносим изменения в наш /etc/hosts
192.168.0.11
ppp01 ppp01.mydomain.com 192.168.0.12 ppp02 ppp02.mydomain.com
192.168.0.13 ppp03 ppp03.mydomain.com
mydomain.com нужно
заменить на реальное имя домена. При желании эти записи можно внести
также и в локальную зону DNS.
Делаем /usr/sbin/pppd программу setuid "rood" # chmod
u+s /usr/sbin/pppd
Включаем IP Forwarding Разрешение пересылки IP
устанавливается в /etc/sysconfig/network файле, примерно так:
FORWARD_IPV4=yes Ваше ядро должно быть скомпилировано для
поддержки IP_FORWARD Введите команду # echo "1" >
/proc/net/ip_forward
Теперь вы готовы к работе!
Этот вариант может оказаться даже более простым, чем первый.
Настройки файлов /etc/options и /etc/options.ttySx остаются прежними,
кроме myhost:pp01 нужно заменить на Server_IP:Client_IP
Например, 192.168.0.1:192.168.0.11 Нужно изменить содержание
файла /etc/ppp/pap-secrets
# user1 сервер.домен
"" * user2 сервер.домен "" * #
user1 - имя пользователя, зарегистрированного в системе
сервер.домен - замените на реальное имя сервера входящих звонков
"" - пароли брать из /etc/passwd (/etc/shadow) * - абонент может
аутентифицироваться с любого IP. При желании можно назначить другой
пароль. В этом случае (если этот сервер используется также и в
качестве почтовика) для dial-up'a и POP-сервиса будут использоваться
различные пароли. Внимание! Пароли в /etc/ppp/pap-secrets содержатся в
открытом виде, а не кодируются с помощью MD5 (или DES) как в файле
/etc/shadow (/etc/passwd)
Файл /etc/hosts править не нужно. Вот и все.
Лучший совет - смотрите /var/log/messages - там много всего
интересного.
Если у вас появляются сообщения вида: modprobe: can't
locate module char-major-24
то надо прописать в /etc/conf.modules
alias
ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias
ppp-compress-26 ppp_deflate
Обыкновенное удаленное соединение, информацию об IP и DNS брать у
провайдера. Тип сервера: PPP Дополнительные параметры: только
"Программное сжатие данных" Допустимые протоколы: только "TCP/IP"
Линки по теме: PPP-HOWTO DNS-HOWTO NET3-HOWTO |