嵌入式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

[[email protected]  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

[[email protected]  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为传参形式,把参数写入到指定的文件内 例如:

[[email protected] scripts]# ./pppoe.sh pppoe-name  eth2  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 1fi

# Must have pppdif [ ! -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 1fi

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

if [ -r /etc/ppp/pap-secrets ] ; then   cp /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bakelse   cp /dev/null /etc/ppp/pap-secrets-bakfiif [ -r /etc/ppp/chap-secrets ] ; then   cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bakelse   cp /dev/null /etc/ppp/chap-secrets-bakfi

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

[[email protected] 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

[[email protected] 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)

[[email protected] 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

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

时间: 2024-10-23 18:14:10

嵌入式linux实现pppoe拨号上网的相关文章

树莓派实现PPPOE拨号上网

我们知道,如果树莓派安装了官方Raspbian系统,默认是将有线网口设置为DHCP模式的,也就是可以自动获取IP,如果通过网线直接连接家里的无线路由器,树莓派就可以正常上网了.但是,如果你的家中没有路由器,只有有线宽带,而且是通过运营商提供的账号和密码上网的,那你的这种上网方式就属于PPPOE拨号上网.此时如果想要树莓派通过这根网线上网,树莓派就需要做一些必要的配置.按照以下的步骤进行操作,你就可以让你的树莓派轻松实现PPPOE拨号上网. 1. 安装pppoe.pppoeconf和pppstat

cisco1941 pppoe拨号上网client端配置

近期公司新购进一台cisco  1941路由器用于网络升级,因专线未布置到位,暂时用于pppoe拨号上网,因设备有限,故Router洪当三个角色:拨号上网,DHCP服务器,DNS服务器,主要配置如下(G0/0 端口为外网端口,G0/1端口为内网端口): 拓扑很简单:Router --Switch--client PC 配置主要分为以下几个方面: 1.配置内部接口G0/1 interface GigabitEthernet0/1 ip address 192.168.0.1 255.255.255

嵌入式Linux系统---ppp拨号,4G模块上网【转】

本文转载自:http://blog.csdn.net/qq562029186/article/details/65438553 4G模块PPP拨号上网 方法1 所需文件: xxx-chat-connect,xxx-chat-disconnect ,xxx-ppp 复制以上三个文件到/etc/ppp/peers目录下 在 xxx-ppp 文件 修改你的串口设备名和pppd 拨号使用的 username,password. 在 xxx-chat-connect文件 修改你的 APN.APN/user

如何在CentOS6.5中进行PPPOE拨号上网

1.尽管CentOS多数作为伺服器来使用,但是也免不了有需要用到这种pppoe的拨号上网方式,其实在centos下实现这种方法还是很简单的,只需要几步即可完成. 2.环境需求: 一台安装了CentOS6.5的机器: 一根能正常使用的双绞线...... 一个ISP提供的可以正常使用的账号: 一个能接入ISP运营商网络的拨号接口...... centos6.5光盘提供的拨号软件和模块: ppp-2.4.5-5.el6.i686 rp-pppoe-3.10-10.el6.i686 3.拨号流程: 1)

MikroTik RouterOS安装后初始化配置(PPPOE拨号上网)

1.修改登入密码 路由器默认登入账号为admin,密码为空,强烈建议修改登入密码保证安全: 2.修改接口名称 选择Interface,切换到Ethernet标签,找到状态是R(run)的两个端口. 给网口修改名称方便识别 比如我们双击ether2端口,我们发现ether2网卡MAC地址和winbox标题栏显示的MAC地址一致,说明这是连接PC的端口,我们给它改名为lan, 那么剩下的另外一个ether1就是外网了,我们命名为wan 3.配置内网DHCP 我们在内网搭建一个DHCP Server,

RouterOS设置PPPOE拨号上网

背景:公司更换办公地址,网络设备利旧,将原来的设备搬迁到新办公地址继续使用,将网络更换为ADSL拨号上网,并绑定一个固定IP地址. 1. 分别设置内网和外网IP 说明:设置ether1为内网接口,设置ether5为外网接口,将服务商提供的网线接入到ether5口. 状态显示 R 表示端口可用. 2. 配置PPPOE Client 说明:配置PPPOE Client 可以,General页面设置名称以及绑定接口,在Dial Out界面配置账号.密码.以及Profile选项.默认DNS和默认路由可以

linux下利用PPPOE实现拨号上网

PPPOE实现拨号上网 PPPOE简介: 与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式ADSL 就使用了PPPoE协议. 随着低成本的宽带技术变得日益流行,DSL(Digital Subscriber Line)数字用户线技术更是使得许多计算机在互联网上能够酣畅淋漓的冲浪了.但是这也增加了DSL服务提供商们对于网络安全的担心. 通过ADSL方式上网的计算机大都是通过以太网卡(Ethernet)与互联网相连的.同样使用的

CentOS 7拨号上网(ADSL &amp; PPPoE)

步骤概述: 1.搜寻PPPoE相关软件,本人使用的是rp-pppoe yum search pppoe 2.使用yum安装rp-pppoe yum install rp-pppoe -y 3.开始配置PPPoE连接 pppoe-setup 4.输入ISP提供的账户 5.输入以太网卡代号,默认是eth0(注:CentOS 7已不是默认eth0,自行使用ifconfig命令即可找到) 6.配置:若长时间连线,连线会被自动中断(我不干,选no) 7.配置主DNS服务器 8.配置次DNS服务器 9.两次

Cisco路由配置:通过固定IP或拨号上网cisco路由配置

首先介绍固定IP上网配置: 现有客户需要使用思科的2811路由器上网,用户为10M光纤,申请了16个固定IP, IP为58.240.160.2-58.240.160.14, 默认网关是58.240.160.1.内网IP段192.168.1.0, 客户要实现192.168.1.10-192.168.1.20之间的IP可以上网,其余的不可以. 路由器e1/0接口为WAN外网接口,e1/1为LAN内网接口 拓扑图如下: Cisco2811#configure terminal Cisco2811(co