28.3. Цөмийн PPP-г ашиглах
Өмнөх | Бүлэг 28. PPP болон SLIP | Дараах

## 28.3. Цөмийн PPP-г ашиглах

Хэсгүүдийг анхлан хувь нэмэр болгон оруулсан Геннадий Б. Сорокопуд ба Роберт Хафф.

### Сануулга:

Энэ хэсэг нь зөвхөн FreeBSD 7.X хувилбаруудад зориулагдсан.

### 28.3.1. Цөмийн PPP тохируулах

Та өөрийн машин дээр PPP-г тохируулж эхлэхээсээ өмнө `pppd` нь `/usr/sbin` санд байгаа болон `/etc/ppp` сан байгаа эсэхийг шалгаарай.

`pppd` нь хоёр горимд ажиллах чаддаг:

1. «Клиент» маягаар — та өөрийн машиныг гаднах ертөнц уруу PPP цуваа холболтоор эсвэл модемийн шугамаар холбохыг хүсдэг.

2. «Сервер» маягаар — Таны машин сүлжээн дээр байгаа бөгөөд бусад компьютеруудыг 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

Холбогдохын тулд:

1. Алсын хост уруу Kermit (эсвэл өөр бусад модемийн програм) ашиглан залгаж өөрийн хэрэглэгчийн нэр болон нууц үгийг (эсвэл алсын хост дээр PPP-г идэвхжүүлэхэд шаардлагатай тэр зүйлийг) оруулна.

2. Kermit-с гарна (шугамыг таслалгүйгээр).

3. Доор дурдсаныг оруулна:

   `#` `/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 ATDT`phone.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:

Өмнөх | Дээш | Дараах
28.2. Хэрэглэгчийн PPP ашиглах | Эхлэл | 28.4. PPP холболтуудын алдааг олж засварлах

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.