1. Подготовка к установке PPP

Присоедините модем к Sun, при выключенном питании как Sun так и модема. Включите питание модема и Sun, загрузите Sun.

1.1. Проверьте, установлены ли у Вас на Sun необходимые пакеты.

1.1.1. PPP:

$ pkginfo | grep "SUNW.*ppp"
system      SUNWapppr      PPP/IP Asynchronous PPP daemon configuration files
system      SUNWapppu      PPP/IP Asynchronous PPP daemon and PPP login service
system      SUNWpppk       PPP/IP and IPdialup Device Drivers
$

1.1.2. Если указанных пакетов нет, то установите их в следующем порядке:

SUNWpppk,
SUNWapppr,
SUNWapppu

1.2.1. UUCP:

$ pkginfo | grep "SUNWbnu"
system      SUNWbnur       Networking UUCP Utilities, (Root)
system      SUNWbnuu       Networking UUCP Utilities, (Usr)
$ 

1.2.2. Если указанных пакетов нет, то установите их в следующем порядке:

SUNWbnur,
SUNWbnuu

1.2. Если Вы доставляли пакеты SUNWpppk, SUNWapppr, SUNWapppu то перегрузите машину:

# reboot -- -r

или

ok boot -r

2. Конфигурирование модема и последовательного порта

Модем должен быть асинхронным и должен быть установлен в режим 8 бит, без контроля чётности, аппаратная синхронизация с компьютером обязательно через rts/cts. Если телефонная линия обеспечивает скорость до 14400 используйте скорость модем-компьютер 38400, если скорость по телефонной линии 28800, то все цифры 38400 в нижеследующих пунктах поменяйте на 57600 (предполагается, что у Вас ULTRA Sparc).

2.1. Модифицируйте файл /etc/ttydefs, добавьте в него строчку:

X38400:38400 hupcl crtscts:38400 hupcl crtscts::X38400

2.2. Вызовите программу admintool:

# admintool &

2.3. Нажмите Browse->Serial Ports

Два раза щёлкните по строчке, описывающей порт, к которому присоединён модем.

На появившейся панели "Admintool: Modify Serial Port" установите (нажмите):

Template: Modem - Dial in Only
Port: Service Enable
Detail: Expert
Options: Bidirectional
Expert Options: Create utmp Entry
                Connect on Carrier

Величины в правой части панели не меняйте.

Нажмите правой клавишей мыши на кнопку Baud Rate: и в появившемся меню выберите Other...

В появившемся окне " Admintool: Set Baud Rate" наберите:

X38400

нажмите OK, окно исчезнет.

На панели "Admintool: Modify Serial Port" нажмите Apply, и, после небольшой паузы, Cancel.

Закройте панель "Admintool: Serial Ports" через меню File->Exit.

Командой ps убедитесь, что у Вас стало два процесса ttymon:

$ ps -ef | grep ttymon
    root   223   219  0 10:10:02 ?        0:01 /usr/lib/saf/ttymon
    root   454     1  0 16:41:47 console  0:01 /usr/lib/saf/ttymon -g -h -p
internet console login:  -T sun -d /dev/console -l
  vitaly   486   479  1 16:56:35 pts/1    0:00 grep ttymon

2.4. Вы можете посылать команды на модем из Sun, используя устройство /dev/cua/a для порта A (/dev/cua/b для порта B), например

# echo "ATZ" > /dev/cua/a

Попытки адресоваться к устройству /dev/term/a (/dev/term/b) будут отвергнуты, т.к. это устройство открыто программой ttymon.

3. Конфигурирование PPP

3.1. Модифицируйте файл /etc/hosts, добавив в него IP адреса и имена хостов удалённых пользователей (считаем, что имя Вашей центральной машины "yourserver"):

127.0.0.1       localhost
192.9.200.1     yourserver        loghost
...............
192.9.200.100   ivanhome
192.9.200.101   romanhome
192.9.200.102   alexhome
................

3.2. Создайте (если его нет) файл /etc/asppp.cf со следующим содержимым:

# файл: asppp.cf
ifconfig ipdptp0 plumb yourserver down # 1-й модем
#ifconfig ipdptp1 plumb yourserver down # раскомментируйте, если есть 2-модем

defaults
	interface ipdptp*
	inactivity_timeout 120
	ipcp_async_map 0
#	debug_level 9                   # удалите # в первой позиции
					# строки для отладки

path
	peer_system_name ivanppp        # имя ivanppp должно быть
                                        # в файле /etc/passwd
	peer_ip_address ivanhome        # имя ivanhome должно быть
                                        # в файле /etc/hosts
path
	peer_system_name romanppp
	peer_ip_address romanhome

path
	peer_system_name alexppp
	peer_ip_address alexhome
.............

Параметр inactivity_timeout говорит о том, что, если в течении 120 секунд ни один IP пакет не пройдёт по интерфейсу, то соединение прекратится по инициативе Sun. Если Вы хотите, чтобы таймаут был равен бесконечности замените строку на:

        inactivity_timeout 0

3.4. Установите правильного владельца файла и атрибуты:

# chmod 744 /etc/asppp.cf
# chown root:sys /etc/asppp.cf

3.5. Выдайте команду ifconfig, для того, чтобы узнать ethernet адрес Вашей машины.

# /usr/sbin/ifconfig -a
lo0: flags=849 mtu 8232
	inet 127.0.0.1 netmask ff000000 
le0: flags=863 mtu 1500
	inet 192.9.200.1 netmask ffffff00 broadcast 192.9.200.255
	ether 8:0:20:22:27:3e

В данном случае адрес 8:0:20:22:27:3e

3.6. Создайте файл /etc/rc2.d/S99proxyarp со следующим содержимым:

ndd -set /dev/ip ip_forwarding 1
arp -s ivanhome 8:0:20:22:27:3e pub
arp -s romanhome 8:0:20:22:27:3e pub
arp -s alexhome 8:0:20:22:27:3e pub
.................

3.7. Сделайте его выполнимым:

# chmod +x /etc/rc2.d/S99proxyarp

3.8. Занесите в файл /etc/passwd следующие строки:

ivanppp:x:1200:1045:Ivan ppp login:/:/usr/sbin/aspppls
romanppp:x:1201:1045:Roman ppp login:/:/usr/sbin/aspppls
alexppp:x:1203:1045:Alex ppp login:/:/usr/sbin/aspppls
....................

В имени должно быть не больше 8 символов.

3.9. Занесите в файл /etc/shadow:

ivanppp::::::::
romanppp::::::::
alexppp::::::::
...........
Используйте команду passwd, чтобы завести пароли на соединение, например:
# passwd ivanppp
New password:AaG2ffRz
Re-enter new password:AaG2ffRz
#

3.10. Сообщите удалённым пользователям имена их машин, IP адреса, login- имена и пароли для написания login-скриптов, например, Ивану:

IP адрес:	192.9.200.100
имя машины:	ivanhome
login-имя:	ivanppp
пароль:		AaG2ffRz

Внимание! Эти имена и пароли необходимы только для установления соединения. После установления IP соединения, пользователи должны войти в систему как обычно - через telnet, ftp или http под своим именем (ivan, roman, alex). Всем удалённым пользователям можно присвоить одно входное имя и пароль, но тогда Вы лишаетесь возможности учёта времени и длительности PPP соединения, а также возможности запретить кому-либо PPP соединение не трогая других.

3.11. Перезагрузите машину. PPP стартует автоматически обнаружив конфигурационный файл. Удалённые машины могут входить по PPP.

3.12.Отключить PPP можно по команде:

# /etc/init.d/asppp stop

PPP стартуется командой:

# /etc/init.d/asppp start

- удалённые машины могут входить по PPP.

3.13. Отладка PPP:

Остановите PPP:

# /etc/init.d/asppp stop

В файле /etc/asppp.cf раскомментируйте строку:

	debug_level 9

В окне cmdtool выполните команду:

$ tail -f /etc/log/asppp.log

Вы увидите "хвост" log файла программы /usr/sbin/aspppd: /etc/log/asppp.log.

Стартуйте PPP в другом окне:

# /etc/init.d/asppp start

Войдите по PPP с удалённой машины, контролируйте процесс в том окне, где запущена команда tail -f /etc/log/asppp.log

Также для отладки полезны команды:

# ifconfig -a

# snoop -d ipdptp0

# netstat -nr

# ping 

3.14. Команду /etc/init.d/asppp start/stop необходимо выполнять с привелегиями root. Если Вы хотите разрешить её использование простым пользователям, то:

Оттранслируйте следующие программы:

pppstart.c:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

main() {
        setuid(geteuid());
        setgid(getegid());
        system("/etc/init.d/asppp start");
}

pppstop.c:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

main() {
        setuid(geteuid());
        setgid(getegid());
        system("/etc/init.d/asppp stop");
}

Для компиляции используйте:

# cc -o pppstart pppstart.c
# cc -o pppstop pppstop.c
# chown root pppstart pppstop
# chmod 4755 pppstart pppstop

Поместите pppstart, pppstop в /usr/bin. Теперь непривелегированный пользователь может стартовать и останавливать PPP.

4. Настройка клиентской части

Примерный сценарий:

send "ATZ\r"
expect "OK\r"
send "atdpтелефонныйномер\r"
expect "CONNECT\r"
send "\r"
expect "ogin:"
send "inanppp\r"
expect "assword"
send "AaG2ffRz\n"

После того, как соединение установлено, пользователь вызывает telnet и входит на ЛЮБОЙ компьютер Вашей сети (т.е. не обязательно на тот компьютер с которым установлено PPP соединение).


Copyright © 1996 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.
Перевод: Copyright © 1996 Виталий Филатов (vitaly@royint.com) All Rights Reserved.