移植pppoe拨号客户端
- 一、概述
- 二、移植过程
- 1、内核配置
- 2、pppd工具编译
- 3、pppoe工具编译
- 三、配置pppoe参数
- 四、创建节点信息
- 五、pppoe服务器搭建
一、概述
PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。由于协议中集成PPP协议,所以实现出传统以太网不能提供的身份验证、加密以及压缩等功能,也可用于缆线调制解调器(cable modem)和数字用户线路(DSL)等以以太网协议向用户提供接入服务的协议体系。
本质上,它是一个允许在以太网广播域中的两个以太网接口间创建点对点隧道的协议。
以Linux系统常用的pppd为例,支持PPP接口上面的IP、IPv6和IPX网络层协议。
它使用传统的基于PPP的软件来管理一个不是使用串行线路而是使用类似于以太网的有向分组网络的连接。这种有登陆和口令的标准连接,方便了接入供应商的记费。并且,连接的另一端仅当PPPoE连接接通时才分配IP地址,所以允许IP地址的动态复用。
PPPoE是由UUNET、Redback Networks和RouterWare所开发的。发表于RFC 2516说明中。(来源于:百度百科)
pppoe拨号上网,一般出现在家庭网络中,运营商人员将宽带接入到家庭后,会在光猫上进行配置pppoe拨号功能,输入账号密码进行登录,这样你的电脑或其他设备连接网络时,就不需要进行拨号就可以上网了,这是因为光猫里做了拨号的功能,并且现在的光猫具有路由器的功能,下面接入电脑时,会使用dhcp功能进行分配ip地址进行上网。
二、移植过程
移植过程主要是一下几个部分:内核需要支持PPPoE功能,编译pppd,编译pppoe。
1、内核配置
这一部分是内核配置,需要内核支持pppoe:
使用make menuconfig命令配置内核,可以参考一下下面的配置,将pppoe相关的选项都选中。
配置完成后,记得将内核重新编译和重新烧写到设备里。
2、pppd工具编译
因为需要交叉编译,需要用到ppp源码,可以在网上进行下载:https://download.samba.org/pub/ppp/
我这里下载的版本是ppp-2.4.1版本;下载完成后进行解压,进入ppp-2.4.1目录执行:
./configure
make CC=arm-linux-gcc // 交叉编译链替换成自己的
执行完成后,在pppd目录下就会生成pppd可执行程序。将pppd拷贝到开发板上的/usr/sbin目录下,记得赋予执行权限。在移植完内核和pppd后,可以在板子上执行pppd,正常情况下会出现乱码,就说明移植成功了。
3、pppoe工具编译
pppoe的编译跟pppd类似,下面就具体说一下编译步骤。首先也是去网上下载rp-pppoe源码,网上文章中提到的官网地址,我这边登录不进去,不清楚是不是还在维护,这里提供给大家另外一个地址,也有可能是官方网站的:https://src.fedoraproject.org/repo/pkgs/rp-pppoe/ 在这个网站上自己可以下载想要的版本源码文件:
下载后进行解压,我下载的是3.8版本的,进入rp-pppoe-3.8/src目录执行:
./configure
配置后,需要手动修改Makefile文件中的编译链,因为在configure文件中对交叉编译链进行配置不生效,将文件中的gcc和ar修改为自己对应的编译链。记得将libevent目录下的Makefile文件也要修改。
修改后就可以进行编译了,执行make后,会生成pppoe-relay、pppoe-server、pppoe-sniff、pppoe可执行程序,将这些程序一起拷贝到开发板/usr/sbin目录下。
还有一些配置文件一块拷贝过去,在scripts目录下,将pppoe-init、pppoe-stop、pppoe-start、pppoe-setup、pppoe-status、pppoe-connect拷贝到开发板/usr/sbin目录下。
在开发板端文件系统的etc目录下新建一个ppp文件夹,再把rp-pppoe文件夹下的configs文件夹下的所有文件拷贝至刚新建的ppp中。
三、配置pppoe参数
所有的工具都拷贝到开发板中后,执行pppoe-setup开始配置:
第一个需要配置的是pppoe服务器上分配的账号名称,按照实际分配的进行填写。
第二个配置的是网络网卡名称,按照自己实际的网卡名称填写。
第三个是链接按需出现配置,直接输入no即可。
第四个是配置dns,我这里填写的是114.114.114.114,不清楚的话,也可以填写server。
第五个配置密码:
第六个是配置防火墙,0是不开启防火墙
最后输入y保存到配置文件即可,配置工作到此结束,后面会提示你使用pppoe-start命令进行拨号连接。
四、创建节点信息
在执行pppoe-start时,需要确认是否有/dev/pts节点目录,如果没有的话就需要手动创建。
进入pts,创建节点mknod 0 c 136 0; mknod 1 c 136 1。 136代表什么呢?我查阅了一番,最终在linux内核文档中找到了:
五、pppoe服务器搭建
如果是测试上面搭建的设备端环境是否能正常工作,就需要搭建一个测试环境:pppoe服务器。
该工作我放到了另外一篇文章中去介绍,敬请期待!