Присоедините модем к 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
Модем должен быть асинхронным и должен быть установлен в режим 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.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=849mtu 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.
Примерный сценарий:
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.