千家信息网

嵌入式linux实现pppoe拨号上网

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,一.交叉编译内核make menuconfig -> Device Drivers -> Network device support -> PPP (point-to-point protocol)
千家信息网最后更新 2024年12月04日嵌入式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安全错误 数据库的锁怎样保障安全 服务器返回配置查询条件不足 深信服代理服务器 《数据库设计与开发》 奉贤区高科技网络技术管理模式 软件开发企业主营业务成本 互联网信息网络安全公司 天津市主管网络安全的市长 龙华靠谱的服务器运维服务 如何正确的关闭一台服务器 智能共享储物柜软件开发 长宁区节能软件开发零售价格 张凯 上海网络安全 新电脑怎么连接外置服务器 工器具管理云服务器报价清单 西藏聚酒缘互联网科技有限公司 2022年网络安全教育直播课 163邮箱收发服务器 kylin搭建ftp服务器步骤 淘宝辅助软件开发 王思聪电脑为什么用服务器cpu 女大学生网络安全教育 常州市网络安全中心地址 软件开发可以报什么大赛 中美网络安全审查 web服务器开发工具 方舟服务器管理员武器代码 网络安全相关培训与会议 数据库编码重复 绝地求生怎么还服务器 电脑怎么连接前台数据库
0