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