职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 859|回复: 1

linux上搭建pppoe服务器(局域网)

[复制链接]
秋秋 发表于 2012-2-16 11:59 | 显示全部楼层 |阅读模式
搭建pppoe,成功了的话,就觉得TM超级简单,在centos更是5步左右就能搞定

1、yum install rp-pppoe
安装pppoe,安装完成后,会有pppoe-server命令

2、安装完成后,会在动在/etc/ppp目录下生成pppoe-server-options文件,文件内容如下,照着改就可以了
写道
# PPP options for the PPPoE server
# LIC: GPL
require-pap
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
logfile /var/log/pppoe.log


3、添加用户名密码,修改/etc/chap-secrets文件,添加下列一行
写道
pppoe * "123456" *
很通俗,用户名:pppoe,密码是:123456

4、添加防火墙规则,做nat转换
写道
iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -j MASQUERADE

iptables -A FORWARD -p tcp --syn -s 10.10.10.0/24 -j TCPMSS --set-mss 1256

echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -w net.ipv4.ip_forward=1
第一条是添加nat,转换来自10.10.10.0/24网段的ip
第二天是修改mtu,根据自身需求改了
第三条打开转发
第四条是修改转发文件

5、启动pppoe
写道
pppoe-server -I eth0 -L 10.10.10.1 -R 10.10.10.100-200
这条命令的作用是:-I eth0  在eth0端口上检测pppoe discover包
-L 10.10.10.1    虚拟网关的意思,就是pppoe服务器端虚拟网关ip
-R 10.10.10.100-200  分配虚拟IP,分别是10.10.10.100到10.10.10.200
还有一些其他的参数你可以参考一下,直接man pppoe-server自己看了,每个参数都有默认值

成功完成上述步骤,就完成了搭建pppoe服务器端了,下面就是windows验证了
我的是windows xp系统,win7或者路由器应该都没问题
不过要改下验证方式,在“属性”--》“安全”--》“高级--设置”--》将“数据加密”改为“可选加密”,然后勾选上chap或者pap验证就可以了
输入用户名密码,不可意外就可以连接成功了

不过只是局域网的,意义并不大。

顺带贴一下pppoe建立的原理过程
写道
PPPoE 的验证过程
PPPoE 的验证过程包括 2 个阶段,Discovery 阶段和 PPP Session 阶段。
Discovery 阶段,包含 4 个步骤:
Step 1: PADI
PPPoE 客户端发送主动发现初始包(PPPoE Active Discovery Initiation,PADI),以太头中的目的地址是以太广播地址 FF:FF:FF:FF:FF:FF,PPPOE 头中的 CODE 为 0x09,SESSION_ID 值必须为 0,负载部分必须只包含一个 Service-Name 类型的 TAG 表示请求的服务类型,另外可以包含其他 TAG,整个 PPPOE 包不能超过 1484 字节;
Step 2: PADO
服务器端 PPPoE 进程在网络接口侦听到 PADI 包后,发送主动发现提议包(PPPoEActive Discovery Offer, PADO),用来回应客户机的 PADI 包,以太头中的目的地址是客户机的MAC 地址,PPPOE 头中的 CODE 为 0x07, SESSION_ID 值必须为 0,负载部分必须包含一个 AC-Name 类型的 TAG,用来指示本 AC 的名称,一个在 PADI 包中指定的Service- Name 的 TAG,另外可以包含其他 Service-Name 的 TAG。如果 AC 不对该客户机提供服务,AC 就不回应 PADO 包。
Step 3: PADR
PPPoE 客户端收到 PADO 包后,在 PADO 包中选择一个(可能有多个 PPPoE 服务器,通常选取最快的一个)发送主动发现请求包(PPPoEActive Discovery Request,PADR),以太头中的目的地址是所选取的 PADO 包的源以太头地址(即 PPPoE 服务器的 MAC 地址),PPPOE 头中的 CODE 为 0x19,SESSION_ID 值必须为 0,负载部分必须只包含一个 Service-Name 类型的 TAG 表示请求的服务类型,另外可以包含其他 TAG。
Step 4: PADS
MAC 地址匹配的 PPPoE 服务器收到 PADR 包后,发送主动发现会话确认包(PPPoE Active Discovery Session-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。


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


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

  


无处不在 发表于 2012-2-16 11:59 | 显示全部楼层
推荐链接
见证又一个准百万富翁的诞生!
3G培训就业月薪平均7K+,不3K就业不花一分钱!

20-30万急聘多名天才Java/MTA软件工程师

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-19 19:34 , Processed in 0.133741 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表