Linux下搭建 PPPoE Server 问题总结

注:本记录适用于Debian系列Linux操作系统。在Ubuntu 14.10 以及 Linux Mint 17下验证成功。

在综合课程设计的搭建 PPPoE Server 环节中,本人以及组员碰到各种问题。在此总结,以备日后需要。

搭建过程 安装和配置PPPoE程序

PPPoE程序在Debian操作系统中应该是自带的。可以使用 pppoe-server -h 命令查看版本。可以使用 sudo apt-cache search pppoe 查找相关软件。

配置文件存放在 /etc/ppp 文件夹中。先设置 options 文件:

设置 ms-dns的值。要设置成一个可以使用的DNS服务器的IP地址,比如 114.114.114.114 这是Windows主机拨号连接时会分配的DNS地址。

注释掉+pap,取消-pap的注释,这表示不使用pap认证方式。同时,取消+chap的注释,表示使用chap认证方式。

接下来设置 chap-secrets 文件:

按照文件注释的内容,分别填入:用户名 服务器名 密码 IP地址,例如,在最后插入一行:

testing * password *

表示用户名为testing,服务器名为任意,密码为password,IP为任意的IP。

下来,编辑 pppoe-server-options 文件(如果没有,则新建一个1)
在pppoe-server-options里加入:

auth require-chap logfile /var/log/pppd.log

这样就配置完毕了。

设置系统的ip策略 开启ip转发功能

使用超级用户的身份,注意,必需是超级用户身份,sudo都没有这个权限,执行:

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

如果单单是执行这个命令,只会暂时开启IP转发功能。重启后会自动关闭。如果想一直打开,则应该编辑 /etc/sysctl.conf 文件,取消 net.ipv4.ip_forward=1 的注释,再执行 sudo sysctl -p 就可以永久打开IP转发功能了。

设置iptables的IP策略

以超级用户身份执行:

iptables -A POSTROUTING -t nat -s 10.10.10.0/24 -j MASQUERADE

注:-s 参数后面的网络地址是一会儿将要开启的pppoe-server设置的网络地址,这个地址可以根据需要自己设定,只要iptables和pppoe-server匹配就好。

运行PPPoE Server

输入:

sudo pppoe-server -I wlan0 -L 10.10.10.1 -R 10.10.10.100 -N 100

注:

-I 参数用于指定监听哪个网络端口。可以使用ifconfig命令查看当前工作的端口名称。由于本人的笔记本电脑使用无线网络,所以是wlan0端口。

-L 参数用于指定在一个PPP连接中,PPPoE服务器的IP地址。由于本人假设的以太网网络地址为10.10.10.0/24,所以就使用网络地址的第一个IP地址作为服务器的地址了。

-R 参数用于指定当有客户连接到服务器上时,从哪个IP地址开始分配给客户。

-N 参数用于指定至多可以有多少个客户同时连接到本服务器上。

如果一切顺利,在Windows上建立拨号连接,用户名和密码分别为testing和password,应该就可以连接到linux下的PPPoE Server上并且正常上网了。

PPPoE 协议过程分析 过程图解

PPPoE协议主要有以下几个过程:

Created with Raphaël 2.1.2客户客户服务器服务器PADIPADOPADRPADS

解释

主机广播发起分组(PADI),分组的目的地址为以太网的广播地址0×ffffffffffff,CODE(代码)字段值为0×09,SESSION-ID(会话ID)字段值为0×0000。PADI分组必须至少包含一个服务名称类型的标签(标签类型字段值为0×0101),向接入集中器提出所要求提供的服务。

接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为0×07,SESSION-ID字段值仍为0×0000。PADO分组必须包含一个接入集中器名称类型的标签(标签类型字段值为0×0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。

主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组(PADR)。其中CODE字段为0×19,SESSION_ID字段值仍为0×0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。

接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65,SESSION-ID字段值为接入集中器所产生的一个唯一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS分组确认后,双方就进入PPP会话阶段。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/52c589a2a3d9d212b4082282bf8babec.html