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