28.3. Цөмийн PPP-г ашиглах
Хэсгүүдийг анхлан хувь нэмэр болгон оруулсан Геннадий Б. Сорокопуд ба Роберт Хафф.
28.3.1. Цөмийн PPP тохируулах
Та өөрийн машин дээр PPP-г тохируулж эхлэхээсээ өмнө
pppd
нь
/usr/sbin
санд байгаа болон
/etc/ppp
сан байгаа эсэхийг шалгаарай.
pppd
нь хоёр горимд ажиллах чаддаг:
«Клиент» маягаар — та өөрийн машиныг
гаднах ертөнц уруу PPP цуваа холболтоор эсвэл модемийн шугамаар
холбохыг хүсдэг.
«Сервер» маягаар — Таны машин сүлжээн
дээр байгаа бөгөөд бусад компьютеруудыг PPP ашиглан холбоход
хэрэглэгдэнэ.
Аль ч тохиолдол байлаа гэсэн та тохируулгуудын файлыг
(/etc/ppp/options
эсвэл
хэрэв та PPP ашиглаж байгаа өөрийн машин дээрээ нэгээс илүү олон хэрэглэгчидтэй бол
~/.ppprc
) тохируулах хэрэгтэй
болно.
Та залгаж алсын хосттой холболт тогтоохын тулд
танд бас зарим модем/цуваа програм хангамж
(comms/kermit
-г аль болох эрхэмлэх)
хэрэгтэй болно.
28.3.2. pppd
-г клиент маягаар ашиглах
Based on information provided by Трев Ройдхауз.
Дараах /etc/ppp/options
файл нь
Cisco терминал серверийн PPP шугам уруу холбогдоход хэрэглэгдэж болох юм.
crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address
# if the remote host does not send your IP during IPCP
# negotiation, remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
:remote_ip
# put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to local_ip
:remote_ip
defaultroute # put this if you want that PPP server will be your
# default router
Холбогдохын тулд:
Алсын хост уруу Kermit
(эсвэл өөр бусад модемийн програм) ашиглан залгаж өөрийн хэрэглэгчийн нэр болон нууц үгийг
(эсвэл алсын хост дээр PPP-г идэвхжүүлэхэд шаардлагатай
тэр зүйлийг) оруулна.
Kermit-с гарна (шугамыг таслалгүйгээр).
Доор дурдсаныг оруулна:
#
/usr/sbin/pppd /dev/tty01
19200
Тохирох хурд болон төхөөрөмжийн нэрийг ашиглахаа мартуузай.
Одоо таны компьютер PPP-тэй холбогдлоо. Хэрэв холболт амжилтгүй
болбол та /etc/ppp/options
файлд
debug
тохируулгыг нэмж асуудлыг олохын тулд
консолын мэдэгдлүүдийг шалгана.
Дараах /etc/ppp/pppup
скрипт нь
бүх 3 алхмыг автомат болгоно:
#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200
/etc/ppp/kermit.dial
нь Kermit
скрипт бөгөөд гадагш залгаж бүх шаардлагатай нэвтрэлт таниулалтыг алсын хост дээр
хийдэг (энэ баримтын төгсгөлд ийм скриптийн жишээ хавсаргагдсан болно).
Дараах /etc/ppp/pppdown
скриптийг ашиглаж
PPP шугамыг салгаж болно:
#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptest
pppd
ажиллаж байгаа эсэхийг шалгахын тулд
/usr/etc/ppp/ppptest
-г ажиллуулна. Энэ нь
иймэрхүү харагдах ёстой:
#!/bin/sh
pid=`pgrep pppd`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0
Модемийг салгаж буцааж залгахын тулд
/etc/ppp/kermit.hup
-г ажиллуулна. Энэ нь
доор дурдсаныг агуулах ёстой:
set line /dev/tty01 ; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit
Энд kermit
тушаалын оронд
chat
тушаал хэрэглэх өөр арга байна:
Дараах хоёр мөр нь pppd
холболтыг
хийхэд хангалттай байдаг.
/etc/ppp/options
:
/dev/cuad1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP serve must supply your IP address
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain your.domain
# put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to local_ip
:remote_ip
defaultroute # put this if you want that PPP server will be
# your default router
/etc/ppp/login.chat.script
:
Тэмдэглэл:
Дараах нь нэг мөрөнд байх ёстой.
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDTphone.number
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: login-id
TIMEOUT 5 sword: password
Эдгээр нь суулгагдаж зөв болж өөрчлөгдсөний дараа таны хийх ганц зүйл бол
pppd
-г иймэрхүү маягаар ажиллуулах явдал юм:
#
pppd
28.3.3. pppd
-г сервер маягаар ашиглах
/etc/ppp/options
файл нь доор дурдсантай төстэйг
агуулах ёстой:
crtscts # Hardware flow control
netmask 255.255.255.0 # netmask (not required)
192.114.208.20:192.114.208.165 # IP's of local and remote hosts
# local ip must be different from one
# you assigned to the Ethernet (or other)
# interface on your machine.
# remote IP is IP address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem line
Дараах /etc/ppp/pppserv
скрипт нь
pppd-г сервер маягаар ажиллахыг
заах болно:
#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200
Серверийг зогсоохын тулд энэ /etc/ppp/pppservdown
скриптийг ашиглана:
#!/bin/sh
pgrep -l pppd
pid=`pgrep pppd`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
pgrep -l kermit
pid=`pgrep kermit`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noans
Дараах Kermit скрипт нь
(/etc/ppp/kermit.ans
) таны модем дээр автомат
хариулагчийг нээх/хаах болно. Энэ нь иймэрхүү харагдах ёстой:
set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mode
inp 5 OK
echo \13
exit
/etc/ppp/kermit.dial
гэсэн нэртэй скрипт
нь гадагш залгаж алсын хост дээр нэвтрэлт таниулахад хэрэглэгддэг. Та үүнийг
өөрийн хэрэгцээнд зориулан өөрчлөх хэрэгтэй болно. Өөрийн нэвтрэх нэр
болон нууц үгийг энэ скриптэд оруулах хэрэгтэй; та бас оролтын илэрхийллийг
таны модем болон алсын хостоос ирэх хариунуудаас хамааран өөрчлөх хэрэгтэй болно.
;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end: