diff options
Diffstat (limited to 'share/doc/handbook/ppp.sgml')
-rw-r--r-- | share/doc/handbook/ppp.sgml | 372 |
1 files changed, 372 insertions, 0 deletions
diff --git a/share/doc/handbook/ppp.sgml b/share/doc/handbook/ppp.sgml new file mode 100644 index 0000000..8fc2125 --- /dev/null +++ b/share/doc/handbook/ppp.sgml @@ -0,0 +1,372 @@ +<!-- $Id: m_ppp.sgml,v 1.1 1995/04/10 02:36:13 jfieber Exp $ --> +<!-- The FreeBSD Documentation Project --> + +<sect><heading>Setting up a PPP link</heading> + +<p><em>Contributed by &a.gena;.</em> + +Before you start setting up PPP on your machine make +sure that pppd is located in /usr/sbin and directory /etc/ppp +exists. + +pppd can work in two modes: +<enum> +<item> as a "client" , i.e. you want to connect your machine to outside +world via PPP serial connection or modem line. + +<item> as a "server" , i.e. your machine is located on the network and +used to connect other computers using PPP. +</enum> +In both cases you will need to set up an options file ( /etc/ppp/options +or ~/.ppprc if you have more then one user on your machine that uses +PPP ). + +You also will need some modem/serial software ( preferably kermit ) +so you can dial and establish connection with remote host. + +<sect1><heading>Working as a PPP client</heading> + +<p>I used the following /etc/ppp/options to connect to CISCO terminal server PPP +line. +<verb> +crtscts # enable hardware flow control +modem # modem control line +noipdefault # remote PPP server 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 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 +</verb> + +To connect: +<enum> +<item> Dial to the remote host using kermit ( or other modem program ) +enter your user name and password ( or whatever is needed to enable PPP +ont the remote host ) + +<item> Exit kermit. ( without hanging up the line ) + +<item> enter: +<verb> +/usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200 +</verb> +( put the appropriate speed and device name ) +</enum> + +Now your computer is connected with PPP. If the connection fails for some +reasons you can add the "debug" option to the /etc/ppp/options file +and check messages on the console to track the problem + +Following /etc/ppp/pppup script will make all 3 stages automatically: +<verb> +#!/bin/sh +ps ax |grep pppd |grep -v grep +pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` +if [ "X${pid}" != "X" ] ; then + echo 'killing pppd, PID=' ${pid} + kill ${pid} +fi +ps ax |grep kermit |grep -v grep +pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` +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 +</verb> + +/etc/ppp/kermit.dial is kermit script that dials and makes all +necessary authorization on the remote host. +( Example of such script is attached to the end of this document ) + +Use the follwing /etc/ppp/pppdown script to disconnect the PPP line: +<verb> +#!/bin/sh +pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` +if [ X${pid} != "X" ] ; then + echo 'killing pppd, PID=' ${pid} + kill -TERM ${pid} +fi + +ps ax |grep kermit |grep -v grep +pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` +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 +</verb> + +Check if PPP is still running (/usr/etc/ppp/ppptest): +<verb> +#!/bin/sh +pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'` +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 +</verb> + +Hangs up modem line (/etc/ppp/kermit.hup): +<verb> +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 +</verb> + +<sect1><heading>Working as a PPP server</heading> + +<p>/etc/ppp/options: +<verb> +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 +</verb> + +Following /etc/ppp/pppserv script will enable ppp server on your machine +<verb> +#!/bin/sh +ps ax |grep pppd |grep -v grep +pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` +if [ "X${pid}" != "X" ] ; then + echo 'killing pppd, PID=' ${pid} + kill ${pid} +fi +ps ax |grep kermit |grep -v grep +pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` +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 +</verb> + +Use this /etc/ppp/pppservdown script to stop ppp server: +<verb> +#!/bin/sh +ps ax |grep pppd |grep -v grep +pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` +if [ "X${pid}" != "X" ] ; then + echo 'killing pppd, PID=' ${pid} + kill ${pid} +fi +ps ax |grep kermit |grep -v grep +pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` +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 +</verb> + +Following kermit script will enable/disable autoanswer mode +on your modem (/etc/ppp/kermit.ans): +<verb> +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 mod +inp 5 OK +echo \13 +exit +</verb> + +This /etc/ppp/kermit.dial script is used for dialing and authorizing on remote host. +You will need to customize it for your needs. +Put your login and password in this script , also you'll need +to change input statement depending on responces from your modem +and remote host. +<verb> +; +; 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: +</verb> + +<!-- +################################################################### +Gennady B. Sorokopud ( gena@NetVision.net.il ) 24/10/94 12:00 +--> + |