PPP(Point to Point Protocol)协议即点对点协议是标准的Internet协议我们可以利用ppp拨号连接到Internet也可通过建立拨号服务器提供ppp拨入服务例如有些机构有多个外地部门在本地已连通Internet而外地部门有拨号到中心机房连上Internet的需求则要求中心机房有一台拨号服务器能提供ppp接入服务而用目前比较流行的Linux操作系统来做则显得轻松有余本文以RedHat Linux为基础详细讨论如何安装配置ppp拨号服务器
一软件及网络环境
Redhat 内核pppd局域网Linux 服务器IP设为服务器名称为jsred分配给拨号用户的固定IP为主机名为admin
二服务器端的安装
)安装pppd
在Linux服务器上查看有没有安装pppd缺省安装是在/usr/sbin/子目录下如果存在再查看系统内核有没有提供对ppp的模块支持如没有可以进到/usr/src/liunx 子目录用make menuconfig或make config对内核进行配置在PPP支持选项上选上模块标志然后重新编译内核用如下命令
make dep; make clean; make zlilo; rdev R /vmlinuz
)安装调制解调器
在物理线路正确连接后打开Modem的电源运行minicom来测试Modem是否已经正确安装输入minicom s 命令设置Modem相关参数首先查看缺省串行口缺省为 /dev/modem根据你所用的串行口将之改为/dev/ttyS或/dev/ttyS其次设置通信速率如果minicom 与Modem连接成功进入会话状态输入ATS=如果紧接着在下一行出现OK 且Modem 的AA灯亮起modem进入自动应答状态表明minicom与Modem通讯正常Modem可以正常工作了否则修改串口设置重复上述步骤也可用当地的ISP的电话号码拨号看能否正确连接一般是先有拨号音然后是嘈杂声再就是握手表示接通出现登录提示画面可证明Modem已正确安装
如果遇到Modem能接通网卡不能工作或网卡能工作而Modem接不通则要查看是否由于Moem与网卡或其它设备中断沖突引起的一般检测串行口所占用的中断号输入
# cat /proc/interrupts 命令查看当前串口占用的中断号例
: timer
: keyboard
: serial
可以看到当前串口占用的中断是也可以用setserial 命令来给串口设置地址和中断号(IRQ) 例如# /sbin/setserial/dev/ttys irq 赋给串口一(COM)中断值为或#/sbin/setserial/dev/ttys auto_irq 赋给串口任意一个空闲中断号
)创建登录终端
在Unix中将设备看成是一个特殊文件来进行访问控制通过特殊文件可以访问特定的设备Linux也不例外 Linux的标准虚拟终端有mingettyagetty等本文介绍用mgetty 作为ppp客户登录进来的虚终端你可以通过网上搜索得到该软件Redhat 自带RPM包mgettyirpm安装命令为rpm ivh mgettyirpm 安装完成后在/sbin子目录下有二进制文件mgetty然后进到/etc子目录在inittab文件之后加上一句
s::respawn:/sbin/mgetty D s ttyS
保存用init q命令重启进程用ps aux命令可看到类似于
? S :/sbin/mgetty D s ttyS
表明该终端已准备好可以接受用户的拨入请求了
)创建或修改PPP相关配置文件
基于对拨号安全性的考虑pppd默认要求进行主客户机的身份自验证即对等验证除非使用root用户帐号拨号或服务器没有连上Internet因此为了使pppd能正常工作需要在服务器端设置相应的主客户机验证信息
)编辑/etc/ppp/options文件在其中加入
detach
crtscts
netmask
asyncmap
proxyarp
其中Asyncmap 表示在对远程机进行串行联接时连接可能将ASCII控制码()用于特殊的用途所以这些代码不能作为数据包的一部分进行传送这就要告诉pppd不要直接用这些控制码而用特殊的两字符的转义序列来代替它们Asyncmap 表示不需要对任何控制码进行转义处理
基于TCP/IP协议的以太网并不直接利用IP地址而是利用网卡MAC地址来传送数据包Proxyarp告诉它在远程主机的Arp表中增加一项列出本地机的地址和远程机的网卡MAC地址Netmask可以根据具体子网划分修改为相应的子网掩码值
)创建/etc/ppp/yS或/etc/ppp/yS文件对相应端口进行设置在该文件中加入一行jsred:admin或:在/etc/hosts文件中为拨入进来的客户机登记一项 admin
)编辑/etc/ppp/papsecrets文件由于拨号采用PAP验证时需在该文件中设置相应主客户机信息及PAP验证密码在该文件中设置如下
admin jsred
第一项为客户机名称或IP第二项为拨号服务器名称或IP第三项为PAP密码由于我们使用标准的password文件来进行身份验证因而将这里的密码置空第四项为动态分配给客户机的IP地址
)建立pcguest拨号用户帐号创建登录Shell
用户通过电话拨号进来以什么样的身份和权限进入网络呢?这就要为拨入用户建立相应的帐号和登录Shell如# adduser pcguest
在选择其Shell时不要选/bin/bash而是填入/etc/ppp/ppploginppplogin为拨入用户的登录Shell文件相当于Novell网用户的登录脚本它为拨号用户初始化登录环境
脚本如下#! /bin/sh
/usr/sbin/pppd auth chap +pap login :
第一行表示脚本的其余部分用/bin/sh去解释该脚本第二行的+pap login表示客户端和服务器端采用PAP的验证方式但使用/etc/password文件的内容用分隔的两项(IP地址)列出ppp拨号服务器和分配给客户机的IP地址
将该文件置为可执行模式 chmod ppploginpppd默认只能由root用户执行为了使普通用户能够执行pppd需要运行命令#chmod u+s /usr/sbin/pppd
最后别忘了在/etc/shells文件中加进一句话/etc/ppp/ppplogin然后存盘退出
)启用Linux的IP转发功能为客户机通过拨号服务器上Internet铺平道路
Redhat 默认是屏蔽IP转发的功能为启用IP转发功能修改文件/etc/nf将 netipvip_forward = 改为netipvip_forward= 保存退出重启Linux服务器服务器端设置工作完成
三客户端的安装
在Windows 客户机上安装拨号网络新建一连接项选中该连接项单击鼠标右键弹出菜单单击属性打开服务器标签的TCP/IP配置对话窗口在指定IP地址栏填入拨号服务器分配给远端客户的IP地址如在主控名称服务器地址栏中输入Internet上有效的DNS服务器的IP地址如果该Linux服务器能提供DNS服务也可填入Linux服务器的IP地址保存退出双击连接项进入拨号状态当终端窗口中出现登录提示输入pcguest用户名及相应密码再点击继续按钮则一个稳定快速的PPP连接就建立了
四测试
测试用户有没有拨进服务器可以在Linux服务器的控制台终端输入
# who
root ttyp Apr :
pcguest ttyS Apr :
上面的pcguest即为通过ttyS终端登录的ppp客户
或输入命令# ifconfig
你会发现除了以太网卡eth本地环路lo外还多一个ppp项表明客户已成功拨入打开客户端的浏览器如Netscape或IE看能否正常访问Internet站点