uClinux PPPoE拨号功能实现
1.uClinux内核设置
(对于 2.4.x 内核)
Network device support --->
PPP (point-to-point protocol) support
PPP support for async serial ports
PPP support for sync tty ports
另外有俩压缩 (compression) 选项以及 PPP over Ethernet 选项选上无妨, 却也不
是必需的. 它们仅在配置了内核 模式的 PPPoE (kernel mode PPPoE) 之后会被 rp-pppoe
用到。
2.拨号程序编译
系统需要两个应用程序pppd和pppoe,pppd来自uClinux-dist2005中user目录;
pppoe使用rp-pppoe-3.8.tar.gz(也可以使用uClinux-dist2005中的)。如何交叉编译就不
再详述。不外乎make CC=arm-elf-gcc 或 修改 Makefile文件,还有CC=arm-elf-gcc
./configure。中间肯定还有 一些问题,根据提示慢慢改吧。最后生成pppd和pppoe两个
flat格式的执行文件。使用uClinux-dist的源代码,可能还需要在CFLAGS上加-
D__uClinux__ 和 -DEMBED 类似的定义。具体先看一下源码中有那些预定义设置,最后做
决定。
3.拨号配置和拨号命令
两个文件放入/bin目录(其他目录也可以这里用/bin目录举例),新建/etc/ppp/目录并
在其中建立如下文件:
chap-secrets
pap-secrets
上面两个文件的内容是一样的,用来存储拨号用户名和口令,向采用chap形式的拨号
服务器拨号时拨号程序会使用chap-secrets文件。用户名和口令是加密形式在网络中传输的。
pap模式是以明文传输的。文件内容如下
username * password
options文件好像可以不要,普通linux系统安装好后好像就lock一个单词在里面。
拨号命令
普通linux下的拨号命令脚本太过复杂,嵌入式系统shell不一定能运行起来,提取关
键命令如下:
/bin/pppd pty '/bin/pppoe -I eth0 -T 80 -U -m 1412' noipdefault noauth
default-asyncmap defaultroute hide-password nodetach usepeerdns mtu
1492 mru 1492 noaccomp nopcomp novj novjccomp user houen lcp-echo-interval
20 lcp-echo-failure 3&
拨号是否成功,用ifconfig查看是否有ppp设备。
dns获取会保存在/etc/ppp 目录中 做个/etc/resolv.conf链接到ppp目录中就可以了
4.拨号服务架设
在linux中编译安装rp-pppoe-3.8.tar.gz。安装过程见其readme。
1)系统配置
配置文件都在/etc/ppp目录中,按照pppoe-server-options-example的内容配置
pppoe-server-options文件。
2)用户配置
需要拨入的用户明存在chap-secrets文件中格式如下
“username” * “password” *
最后一个*必须的。
3)拨号服务器运行
pppoe-server -L 192.168.2.1 -R 192.168.2.5
按照上面命令客户端若拨号上来,服务端会产生ppp设备,ip地址是.1的,客户端则
会是.5。 如果客户端断开又拨客户端的ip会不断的递增。服务器不会变。
5.拨号相关演示系统架设和访问
假设”嵌入式设备”要访问”要访问的机器” 设置如下:
拨号服务器的转发设置
echo 1 > /proc/sys/net/ipv4/ip_forward
要访问的机器的路由设置
微软系统:route add 192.168.2.0 mask 255.255.255.0 192.168.1.100
Linux : route add -net 192.168.2.0 netmask 255.255.255.0 gw