当前位置: > CentOS > CentOS教程 >

Centos 配置 pppoe 服务器

时间:2017-03-20 12:00来源:linux.it.net.cn 作者:IT
首先,硬件平台需提供两块网卡,一块用于静态地址做NAT使用,一块用于对pppoe用户接入的响应,下面是对pppoe服务器进行的配置安装

一.检查并配置ppp软件

#rpm-qa|grepppp
如果没有安装,可以使用以下命令进行安装:

#yuminstallppprp-pppoe

通过网络来自动安装。

二.对服务器网卡进行配置

服务器配置的两块网卡,一块用来设置静态IP,用作NAT(eth1),一块用来进行对pppoe用户接入的响应(eth0)。
需要修改以下配置脚本(有桌面的centOS可以在桌面上进行IP的设置,比较方便)。
#cd/etc/sysconfig/network-scripts
#viifcfg-eth1
#AdvancedMicroDevices[AMD]79c970[PCnet32LANCE]
DEVICE=lan
IPADDR=192.168.0.10
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=211.98.2.4
DNS2=8.8.8.8
HWADDR=xx:xx:xx:xx:xx:xx
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPV6INIT=yes
NM_CONTROLLED=yes
TYPE=Ethernet

#viifcfg-eth0
TYPE="Ethernet"
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=dhcp
DEVICE=wan
ONBOOT=yes
三.配置pppoe服务器

修改option配置,添加以下内容,其它的删除。

#vi/etc/ppp/options

local
crtscts
nobsdcomp
nodeflate
nopcomp
配置pppoe-server-options

#vi/etc/ppp/pppoe-server-optionsauth

require-pap
require-chap
login
lcp-echo-interval10
lcp-echo-failure2
logfile/var/log/pppoe.log
ms-dns211.98.2.4
ms-dns8.8.8.8
defaultroute


创建用户及密码

vi/etc/ppp/chap-secrets

#vichap-secrets
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses
pppoe*pppoe*
这里配置的一个帐号与密码都是pppoe

下面开启pppoe服务器

#/usr/sbin/pppoe-server-Ieth4-L172.16.0.10-R172.16.0.20-N100
I:指定响应PPPOE请求的端口,本例中是在eth0口上。
L:指定PPPOE服务器的IP地址。
R:分配给客户端的地址池起始地址

N:分配给客户端IP地址的个数
将此命令添加到开机启动中。
#vi/etc/rc.local
/usr/sbin/pppoe-server-Ieth4-L172.16.0.10-R172.16.0.20-N100

现在到客户机器上测试拨号成功。

四,客户机上外网

客户拨号成功后还不能上外网,因为服务器那边没有进行数据包的转发。所以需配置iptables进行数据转发

添加防火墙规则,做nat转换
#iptables-APOSTROUTING-tnat-s172.16.0.0/24-jMASQUERADE
#iptables-AFORWARD-ptcp--syn-s172.16.0.0/24-jTCPMSS--set-mss1256
#sysctl-wnet.ipv4.ip_forward=1
#echo1>/proc/sys/net/ipv4/ip_forward
#serviceiptablessave
第一条:添加nat,转换来自172.16.0.0/24网段的ip
第二天:修改mtu,根据自身需求改了(可忽略)
第三条:修改转发文件(可忽略)
第四条:打开转发
第五条:保存iptables配置
当然,配置上述后有些用户还是无法接入外网,有可能是centos默认没有安装启动防火墙功能,所以出现上述的问题需要打开防火墙功能:

#/etc/init.d/iptablesstart
下面是pppoe建立的原理过程
PPPoE的验证过程
PPPoE的验证过程包括2个阶段,Discovery阶段和PPPSession阶段。
Discovery阶段,包含4个步骤:

Step1:PADI
PPPoE客户端发送主动发现初始包(PPPoEActiveDiscoveryInitiation,PADI),以太头中的目的地址是以太广播地址FF:FF:FF:FF:FF:FF,PPPOE头中的CODE为0x09,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG,整个PPPOE包不能超过1484字节;

Step2:PADO
服务器端PPPoE进程在网络接口侦听到PADI包后,发送主动发现提议包(PPPoEActiveDiscoveryOffer,PADO),用来回应客户机的PADI包,以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x07,SESSION_ID值必须为0,负载部分必须包含一个AC-Name类型的TAG,用来指示本AC的名称,一个在PADI包中指定的Service-Name的TAG,另外可以包含其他Service-Name的TAG。如果AC不对该客户机提供服务,AC就不回应PADO包。

Step3:PADR
PPPoE客户端收到PADO包后,在PADO包中选择一个(可能有多个PPPoE服务器,通常选取最快的一个)发送主动发现请求包(PPPoEActiveDiscoveryRequest,PADR),以太头中的目的地址是所选取的PADO包的源以太头地址(即PPPoE服务器的MAC地址),PPPOE头中的CODE为0x19,SESSION_ID值必须为0,负载部分必须只包含一个Service-Name类型的TAG表示请求的服务类型,另外可以包含其他TAG。
Step4:PADS

MAC地址匹配的PPPoE服务器收到PADR包后,发送主动发现会话确认包(PPPoEActiveDiscoverySession-confirmation,PADS),将产生一个SEESSION_ID值用来标志本次PPP会话,以PADR包方式发送给客户机。以太头中的目的地址是客户机的MAC地址,PPPOE头中的CODE为0x65,SESSION_ID值必须为所生成的那个SESSION_ID,负载部分必须只包含一个Service-Name类型的TAG,表示该服务类型被PPPoE服务器接受,另外可以包含其他TAG。如果PPPoE服务器不接受PADR中的

Server-Name,PADS中则包含一个Service-Name-Error类型的TAG,这时SESSION_ID设置为0。

PPPSession阶段:
当客户端与服务器端远成发现阶段之后,即进入会话阶段,在PPP会话阶段,PPP包被封装在PPPOE以太帧中,以太包目的地址都是单一的,以太协议为0x8864,PPPOE头的CODE必须为0,SESSION_ID必须一直为发现阶段协商出的SEESION_ID值,PPPOE的负载是整个PPP包,PPP包前是两字节的PPP协议ID值。
在Session阶段,主机或服务器任何一方都可发PADT(PPPoEActiveDiscoveryTerminate)报文通知对方结束Session。

PPPoE的身份验证发生在会话(PPPSession)阶段。可以这样更解,rp-pppoe包负责Discovery及会话终止PADT,ppp包负责会话阶段的数据传输。


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容