Centos 配置 pppoe 服务器,centospppoe二.对服务器网卡进行


首先,硬件平台需提供两块网卡,一块用于静态地址做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包负责会话阶段的数据传输。

相关内容

    暂无相关文章