作者HKILL
摘要
PPP是在串连连接上运行 IP以及其它网络协议的一种协议串列连结可以是直接的串列连接(使用无数据机缆线)或是使用数据机以及电话线路所造出的连结使用 PPP 你可以把你的 Linux PC 连接到一台 PPP 服务器上并存取该服务器所连接的网络资源就如同你是直接连接在该网络上一般你也可以把你的 Linux PC 设为一台 PPP服务器这样一来其它电脑就可以拨入你的电脑并且存取在你区域网络里的资源因为 PPP 是一种点对点的系统因此你也可以使用两台 Linux PC 上的 PPP 把网络连结在一起(或是把区域网络连结到网间网络上)( ::)
By lanf
一什么是PPP协议
既然是拨号上网就不能不提到PPP(pointtopoint protocol)协议PPP协 议具有以下特点
是应用最广泛的广域网协议
通过提供连接控制协议(LCP)和网络控制程序(NCP)协议家族来配置网络性能和网络设备从而解决了Internet互联的问题
一个PPP会话分为四个步骤(连接建立连接质量控制网络层协议配置连接终止)
提供了密码认证协议(PAP)或者邀请握手认证协议(CHAP)来保证连接安全
简而言之PPP是在串连连接上运行 IP以及其它网络协议的一种协议串列连结可以是直接的串列连接(使用无数据机缆线)或是使用数据机以及电话线路所造出的连结使用 PPP 你可以把你的 Linux PC 连接到一台 PPP 服务器上并存取该服务器所连接的网络资源就如同你是直接连接在该网络上一般你也可以把你的 Linux PC 设为一台 PPP服务器这样一来其它电脑就可以拨入你的电脑并且存取在你区域网络里的资源因为 PPP 是一种点对点的系统因此你也可以使用两台 Linux PC 上的 PPP 把网络连结在一起(或是把区域网络连结到网间网络上) 最主要的差异当然是速度 - 标准的以太网路连线是 Mbps(每秒百万位元)而在拨号上网这方面最大是 kbps(每秒千位元)的速度(ISDN据说可以达到kbps)同时依据 PPP 连线的型态某些应用以及服务在使用上可能会有些限制
当然对于我们用户来讲它也是一个server/client模型的应用这个快速指南包括怎么在Linux下创建PPP server(客户端假设为windows)在Linux下怎么去拨号上网(当然是客户端)
二服务器
如果用户只想做为客户端拨号上网则可以直接跳过本小节但是如果做为网络应用的设计人员就必须知道怎么搭建PPP服务器
kernel必须支持如果是Kernelx以上的默认安装肯定支持PPP启动时可以看到PPP的信息
获取pppd的源码版本越高越好适合Kernelx以上有ppptargz
下载地址如果你在当地有搜索引擎自己找最近的
ftp//csanueduau/pub/software/ppp/
假设安装到/usr/local/ppp目录下则
bash$ cp ppptargz /usr/local/
bash$ cd /usr/local/
bash$ tar zxvf ppptargz
bash$ cd ppp
按照READMElinux操作不外乎是
/configure
make kernel
make
make install
(必须在安装目录/usr/local/ppp/下操作)
安装完后运行pppd不必带参数如果有乱码则成功了一半 J
cd /etc/ppp (没有该目录则创建一个)
编辑options文件看起来象这样
asyncmap
netmask
proxyarp
lock
crtscts
modem
mtu (改数视Linux的网络参数而定用ifconfig可以看到它)
mru (=mtu就行了)
注意以上各行的意义参照pppd的说明档几乎不需要改动
给每个用户设立一个自动登陆的shell
如用户ppp (adduser 加入)问对应的bash时敲ppplogin
ppplogin文件如下
exec /usr/sbin/pppd passive /dev/ttyS netmask
proxyarp : xxxx
注意xxxx是ppp的登录后获得的IP比如你可以指定为等等
尝试登录及享受成功
为了简单假设客户端是windows准备从另一台Windows/机器登录Windows中先设好拨号网络(如果没有modem可以用Null modem代替试验其实就是串口+Cable推荐先使用Null modem尝试)服务器类型必须是PPP启动拨号程序(在连接modem配置选项里设拨号前后出现终端窗口)连接后出现终端窗口输入登录名及口令(可能先要按几下回车)OK出现乱码! 按F继续一会儿又有终端窗口及乱码F继续等一会就连接好了然后就可以正常的网络通信了如果客户端也是linux见下面小节
三客户端
不同的linux厂家在xwindow下都有自己的拨号程序例如蓝点linux下的KDE拨号就很方便但是由于是快速手册我不可能列出各种软件的使用如果你有更好的方法请加入的论坛发表你的观点这里我介绍最常用的在RedHat下的脚本拨号法我假设你用的是RedHat以上版本
.找出modem在计算机的哪一个串口上modem如果通电MRHS灯应该亮但是TR灯不亮敲入下列命令
bash$> echo AT>/dev/ttyS
如果TR灯亮则modem连接在COM如果不亮则试/dev/ttyS亮则COM依此类推
.用脚本拨号在/usr/doc/ppp/scripts目录下有例子我们将其拷贝到正确的目录下执行
Bash$> cp /usr/doc/ppp/scripts/pppon /usr/sbin
Bash$> cp /usr/doc/ppp/scripts/pppoff /usr/sbin
Bash$> cp /usr/doc/ppp/scripts/pppondialer /etc/ppp
Bash$> cd /usr/sbin
Bash$> chmod +x pppon
Bash$> chmod +x pppoff
Bash$> cd /etc/ppp
Bash$> chmod +x pppondialer
然后根据你的ISP作出相应的改动比如pppon和pppondialer两个可执行文件
pppon文件只需要看我加入中文说明的地方
#!/bin/sh
#
# Script to initiate a ppp connection This is the first part of the
# pair of scripts This is not a secure pair of scr ipts as the codes
# are visible with theps command However it is simple
#
# These are the parameters Change as needed
TELEPHONE= # ISP提供的上网电话号码
ACCOUNT=ynguo #账号名称
PASSWORD=faintyou #登录密码注意修改本文件权限以便保密
LOCAL_IP= #本地IP地址表示由ISP动态分配
REMOTE_IP= #远端IP地址一般为
NETMASK= #子网掩码地址
#
# Export them so that they will be available atppp ondialer time
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials th e phone and logs
# in Please use the absolute file name as the$PATH variable is not
# used on the connect option(To do so on aroot a ccount would be
# a security hole so dont ask)
#
DIALER_SCRIPT=/etc/ppp/pppondialer
#
# Initiate the connection
#
# I put most of the common options on this command Please dont
# forget thelock option or some programs such as mgetty will not
# work The asyncmap and escape will permit the PPP link to work with
# a telnet or rlogin connection You are welcome to make any changes
# as desired Dont use thedefaultroute option if you currently
# have a default route to an ethernet gateway
#
exec/usr/sbin/pppd debug lock modem crtscts/dev/tty S
asyncmapA escape FF kdebug$LOCAL_IP:$REMOTE_ IP
noipdefault netmask$NETMASK defaultroute connect$DI ALER_SCRIPT&
pppondialer文件
#!/bin/sh
#
# This is part of the pppon script It will perform the connection
# protocol for the desired connection
#
exec chatv
TIMEOUT
ABORT
BUSY
ABORT
NO ANSWER
ABORT
RINGING
RINGING
AT
OK+++cOK ATH
TIMEOUT
OK ATDT$TELEPHONE <