千家信息网

嵌入式linux实现pppoe拨号上网

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一.交叉编译内核make menuconfig -> Device Drivers -> Network device support -> PPP (point-to-point protocol)
千家信息网最后更新 2026年10月31日嵌入式linux实现pppoe拨号上网

一.交叉编译内核

make menuconfig -> Device Drivers -> Network device support -> PPP (point-to-point protocol) 中,选中所有ppp选项。退出,保存配置,修改Makefile重新执行make zImage. 将arch/mips/boot/下的zImage下载到开发板上重启系统。

二.交叉编译pppoe server

下载ppp-2.4.5.tar.gz 、rp-pppoe-3.10.tar.gz 在 /opt 目录下。

tar -zxvf ppp-2.4.5.tar.gz
cd ppp-2.4.5

[root@root ppp-2.4.5 ]# ./configure CC=mipsel-linux-gcc AR=mipsel-linux-ar BANLIB=mipsel-linux-ranlib --host=mipsel

-------------------------------------------------------------------------

Configuring for Linux

Creating Makefiles.

Makefile <= linux/Makefile.top

pppd/Makefile <= pppd/Makefile.linux

pppstats/Makefile <= pppstats/Makefile.linux

chat/Makefile <= chat/Makefile.linux

pppdump/Makefile <= pppdump/Makefile.linux

pppd/plugins/Makefile <= pppd/plugins/Makefile.linux

pppd/plugins/rp-pppoe/Makefile <= pppd/plugins/rp-pppoe/Makefile.linux

pppd/plugins/radius/Makefile <= pppd/plugins/radius/Makefile.linux

pppd/plugins/pppoatm/Makefile <= pppd/plugins/pppoatm/Makefile.linux


pppd/plugins/pppol2tp/Makefile <= pppd/plugins/pppol2tp/Makefile.linux

-------------------------------------------------------------------------

再直接 make CC=mipsel-linux-gcc

编译成功后在pppd目录下会生成pppd把这文件拷贝到usr/sbin目录下。

cd /opt
tar -zxvf rp-pppoe-3.10.tar.gz
cd rp-pppoe-3.10/src

[root@root src]# ./configure CC=mipsel-linux-gcc AR=mipsel-linux-ar BANLIB=mipsel-linux-ranlib --host=mipsel

-------------------------------------------------------------------------

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... yes

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether /opt/crosstool/mipsel-linux/bin/mipsel-linux-gcc accepts -g... yes

checking for /opt/crosstool/mipsel-linux/bin/mipsel-linux-gcc option to accept ISO C89... none needed

checking for mipsel-ranlib... no

checking for ranlib... ranlib

configure: WARNING: using cross tools not prefixed with host triplet

checking how to run the C preprocessor... /opt/crosstool/mipsel-linux/bin/mipsel-linux-gcc -E

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for ANSI C header files... yes


checking for sys/wait.h that is POSIX.1 compatible... yes

checking for Linux 2.4 kernel-mode PPPoE support... cross-compiling, default:
no
checking packing order of bit fields... no defaults for cross-compiling

-------------------------------------------------------------------------

解决方法:进入src下直接./configure,然后修改下面的makefile和libevent下的makefile,gcc为mipsel-linux-gcc

直接 make
编译成功后configs目录下是rp-pppoe所需的配置文件,把这些文件全部复制到目标机的/etc/ppp目录下(没有就自己建一个)。

src目录下会产生pppoe,pppoe-server,pppoe-sniff,pppoe-relay。把这些程序下载到目标机/usr/sbin目录下。

三.配置

1)rp-pppoe-3.10/configs目录下是rp-pppoe所需的配置文件,把这些文件全部复制到目标机的/etc/ppp目录下(没有就自己建一个)。
2)拨号相关的脚本程序共有6个,在rp-pppoe-3.10/scripts中。
pppoe-setup:配置程序,把输入的帐号密码等信息存入配置文件。
pppoe-start:拨号程序,连接网络。
pppoe-stop:断开。
pppoe-status:查看连接状态。
pppoe-connect:连接网络,被pppoe-start所调用。
pppoe-init:初始化,被其他程序调用。
把这些脚本也放到/usr/sbin目录下。

四.测试

./pppoe-setup (下面是一些说明供参考)

>> Enter your PPPoE user name: --此处输入拨号帐号的用户名
>> Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where n is a number. (default eth0): --输eth0(视情况而定)
>> Enter the demand value (default no): --输no
>> Enter the DNS information here: --输IP(eg:69.45.45.34)(视当地运营商的DNS服务器IP而定)
>> Please enter your PPPoE password: --输网通用户口令
>> Choose a type of firewall (0-2): --输0 (0为不要防火墙)
>> Accept these settings and adjust configuration files (y/n)? --输y

执行pppoe-start后。如果这个时候就使用pppoe-start开始连接的话,很大情况下你会得到timeout的提示,那我们该怎么做呢?需要在dev目录下创建一个pts的文件夹,进入pts,创建节点mknod 0 c 136 0; mknod 1 c 136 1。每次链接都需要建立,蛮麻烦的吧,所以还是把这几条指令写进启动脚本吧。相信这样的话,一般您都会得到一个connected!的提示,说明ADSL已拨号成功,可以ping 下baidu看通不。

五.修改脚本

为了方便不用pppoe-setup,自己写一个脚本pppoe.sh为传参形式,把参数写入到指定的文件内 例如:

[root@root scripts]# ./pppoe.sh pppoe-name eth3 pppoe-passwd

#!/bin/sh

U="$1"
E="$2"
PWD1="$3"

PPPD="/usr/sbin/pppd"
CONFIG="/etc/ppp/pppoe.conf"

if [ ! -r "$CONFIG" ] ; then
echo "Oh, dear, I don't see the file '$CONFIG' anywhere. Please"
echo "re-install the PPPoE client."
exit 1
fi

# Must have pppd
if [ ! -x $PPPD ] ; then
echo "Oops, I can't execute the program '$PPPD'. You"
echo "must install the PPP software suite, version 2.3.10 or later."
exit 1
fi

sed -i "s/USER=.*/USER=$U/" $CONFIG
sed -i "s/ETH=.*/ETH=$E/" $CONFIG
sed -i "s/FIREWALL=.*/FIREWALL=NONE/" $CONFIG
sed -i "s/DNSTYPE=.*/DNSTYPE=SERVER/" $CONFIG
sed -i "s/PIDFILE=.*/PIDFILE=/var/run/pppoe-$E.pid/" $CONFIG
sed -i "s/DEMAND=.*/DEMAND=no/" $CONFIG
sed -i "s/DNS1=.*/DNS1=""/" $CONFIG
sed -i "s/DNS2=.*/DNS2=""/" $CONFIG
sed -i "s/PEERDNS=.*/PEERDNS=yes/" $CONFIG
cp $CONFIG $CONFIG-bak

if [ -r /etc/ppp/pap-secrets ] ; then
cp /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bak
else
cp /dev/null /etc/ppp/pap-secrets-bak
fi
if [ -r /etc/ppp/chap-secrets ] ; then
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bak
else
cp /dev/null /etc/ppp/chap-secrets-bak
fi

egrep -v "^$U|^\"$U\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets
echo "\"$U\" * \"$PWD1\"" >> /etc/ppp/pap-secrets
egrep -v "^$U|^\"$U\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets
echo "\"$U\" * \"$PWD1\"" >> /etc/ppp/chap-secrets

[root@root scripts]#/usr/sbin/pppoe-connect /etc/ppp/pppoe.conf

Using interface ppp0

Connect: ppp0 <--> /dev/pts/13

Warning - secret file /etc/ppp/chap-secrets has world and/or group access

CHAP authentication succeeded: Access granted

CHAP authentication succeeded

local IP address 192.168.2.2

remote IP address 192.168.2.1

primary DNS address 8.8.8.8


secondary DNS address 4.4.4.4

[root@root scripts]#/usr/sbin/pppoe-status

pppoe-status: Link is up and running on interface ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:192.168.2.2 P-t-P:192.168.2.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1

RX packets:7 errors:0 dropped:0 overruns:0 frame:0

TX packets:30 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:61 (61.0 B) TX bytes:1447 (1.4 KiB)

[root@root scripts]#route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.2.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0

0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 ppp0

-----------------------------------------------------------------------

目录 文件 配置 程序 脚本 编译 成功 目标 情况 网络 帐号 而定 交叉 提示 输入 很大 这样的话 不用 信息 内核 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有格互联网科技 为想互联网科技怎么样 互联网科技有限公司图片 广州凡科互联网科技 郑州华宇互联网科技 互联网 科技服务平台 佩信高科技互联网 互联网科技公司需要的职位 天速互联网络科技有限公司 中国互联网十大科技股排名 中和天地互联网科技有限公司 工业互联网山东科技大学 云南省自由互联网科技有限公司 卡尔迅互联网科技有限公司 上海同邻互联网科技有限公司规模 吉林省码上互联网科技电话 普陀区互联网教育科技管理办法 米泉互联网科技专业怎么样 互联网对科技影响 山东亿川互联网科技有限责任公司 云信互联网科技有限公司 猪兼强互联网科技 阿里巴巴算科技企业还是互联网 威龙国际互联网科技公司 互联网安防科技感 山东大美朱楼互联网科技有限公司 扫呗互联网科技有限公司 神州科技互联网有限公司 保山浩联互联网科技有限公司 科技美学互联网 艺术
0