㈠ linux下ppp拨号过程中APN等参数是如何传入
参考模型共分七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通常我们会依据协议所完成的功能将它与这七层进行对照,PPP协议就属于数据链路层。
PPP协议主要包括三部分:LCP(Link Control Protocol)链路控制协议、NCP(Network Control Protocol)和PPP的扩展协议(如Multilink Protocol)。随着网络技术的发展,网络带宽不再是瓶颈,所以PPP扩展协议的应用越来越少,因此往往人们在叙述PPP协议时经常会忘记它的存在。而且大部分网络教材上会将PPP的认证作为PPP协议的一个主要部分,实际上这是一个错误概念的引导。PPP协议默认是不进行认证配置参数选项的协商,它只作为一个可选的参数,当点对点链路的两端需要进行认证时才需配置。当然在实际应用中这个过程是不可忽略的,例如我们使用计算机上网时,需要通过PPP协议与NAS设备互连,在整个协议的协商过程中,我们需要输入用户名和密码。因此当别人说PPP协议主要包括LCP、认证和NCP协议三个部分时,不要认为他的说法有误,而只是不够准确罢了。
LCP链路控制协议用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。
NCP协议的数据报文是在网络层协议阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可以进行网络层的通信,也即是在点对点的链路上可以开始传送网络层的数据报文了,最常用的NCP协议为IPCP协议,主要是用来通信双方的网络层地址。
1.3 PPP状态转移
1)发起
数据通信设备的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需要发送LCP数据报文来配置链路(测试链路)。
2)建立至可用
一旦LCP得配置参数选项协商完成后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项来决定链路两端设备所采用的认证方式。协议缺省情况下双方是不进行认证的,而直接进入到NCP配置参数选项的协商,直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。实际情况中,都会进行认证。
3)拆除
当任何一端受到LCP或NCP得链路关闭报文时(一般而言协议是不要求NCP有关闭链路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的);物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。
2、PPP数据帧封装格式
2.1 PPP数据帧封装格式
PPP数据帧的封装格式如下图所示:
1) 每个PPP数据帧都是以一个标志字节起始和结束的,该字节填充0x7E(协议缺省);
2) 紧接着起始标志字节后面的是地址域,占1个字节,该字节填充为0xFF(协议缺省);
3) 地址域后是控制域,占1个字节,该字节填充为0x03(协议缺省);
4) 就PPP协议而言,最值得关注的应该是它的协议域和信息域。协议域用来区分PPP数据帧中信息域中所承载的报文的内容,占2个字节。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也即是要求低字节的最低位为“1”,高字节的最低位为“0”。协议域的具体的取值如下表所示:
协议域类型
说明
ISO标准
0x0*** - 0x3***
信息域中承载的是网络层的数据报文
0x4*** - 0x7***
信息域中承载的是与NCP无关的低整流量
0x8*** - 0xb***
信息域中承载的是网络控制协议(NCP)的数据报文
0xc*** - 0xf***
信息域中承载的是链路控制协议(LCP)的数据报文
最典型的几种
取值
0xc021
信息域中承载的是链路控制协议(LCP)的数据报文
0xc023
信息域中承载的是PAP协议的认证报文
0xc223
信息域中承载的是CHAP协议的认证报文
0x8021
信息域中承载的是网络控制协议(NCP)的数据报文
0x0021
信息域中承载的是IP数据报文
5) 信息域的最大程度不能超过1500字节(包括填充域的内容)。1500字节等于PPP协议中配置参数选项MRU(Maximum Receive Unit)的缺省值。信息域如果不足1500字节时可被填充,但不是必须得,如果填充则需通信双方的两端能辨认出有用和无用的信息方可正常通信。
6) CRC校验域主要是对PPP数据帧传输的正确性进行检测的。
2.2 LCP数据报文的封装方式
2.2.1 LCP数据报文的封装方式
LCP数据报文是在链路建立阶段被交换的,它作为净载荷被封装在PPP数据帧的信息域中,此时PPP数据帧的协议域固定填充为0xC0 21,在整个链路建立阶段的整个过程中信息域的内容是在变化的,它包括很多类型的报文,所以这些报文也要通过相应的字段来区分,LCP数据报文的一般封装方式如下图所示:
1) 代码域,占1个字节,主要用来标志LCP数据报文的类型。如下表所示:
2) 标识域,占1个字节,主要用来匹配请求和相应报文。一般而言在进入链路建立阶段时,通信双方无论哪一端都会连续的发送几个配置请求报文(Config-Req报文),而这个几个请求报文的数据域可能是完全一样的,而仅仅是标识域不同罢了。当对端收到该配置报文后,无论使用哪种报文来回应对方,都必须要求回应报文中的ID要与接收报文中的ID一致。当通信设备收到回应后就可以将回应与发送时的进行比较来决定下一步的操作。
3) 长度域,占2个字节。长度域=(代码域+标识域+长度域+数据域)。其所示字节数之外的字节将被当做填充字节而忽略掉,而且该域内容不能超过MRU的值。
4) 数据域,主要填充一些配置参数选项。
2.2.2 LCP数据报文的分类
从上面可以看出,一共包括12种LCP数据报文,可以依据格报文的功能又将其具体细化为以下三类:
1)链路配置报文,主要用来建立和配置一条链路。包括Config-Request、Config-Ack、Config-Nak、Config-Reject四种报文;
2)链路终止报文,主要用来终止一条链路。包括Terminate-Request、Terminate-Ack两种报文;
3)链路维护报文,主要 用来维护和调试链路。其余所有的报文。
2.2.3 LCP链路配置报文
LCP链路配置报文与链路终止报文、链路维护报文有明显区别,它主要是用来协商链路的配置参数选项的,因此这种报文的数据域还要携带许多被配置参数选项。配置参数选项的格式如下图所示:
当通信双方建立链路时,无论哪一方都需要发送Config-Request报文并携带每一端自己所希望协商的配置参数选项。下表为一些可选的配置参数选项:
类型值
参数选项
类型值
参数选项
0x00
Reserved
0x05
Magic-Number
0x01
Maximum-Recieve-Unit
0x06
CBCP
0x02
Async-Control-Character-Map
0x07
Protocol-Field-Compress
0x03
Authentication-Protocol
0x08
Address-and-Control-Field-Compress
0x04
Quality-Protocol
0x0D
Multilink-Protocol
配置参数选项的协商过程中,可能发生两种情况:
1) 接收方无法识别发送方所发送的配置参数类型
接收方不识别类型域中填充的内容,这时接收方就会给发送方发送一个Config-Reject消息以告诉对方自己不支持它所发送的参数类型,此时Config-Reject报文中填充自己不支持的参数选项。发送方收到Config-Reject消息后就可以去掉那些不被接收方支持的配置参数,重新组包发送Config-Request报文给接收方,直到收到接收方发来的Config-Ack消息就算协商成功。
2)接收方识别发送方所发送的配置参数类型,但不认可其参数值
接收方识别发送方所发送的配置参数类型,但不认可其参数值,这时接收方就会给发送方发送一个Config-Nak消息,该报文中填充自己所能够支持的参数值,发送方在受到Config-Nak消息后就可以从中获得接收方所支持的参数值,重新组包发送Config-Request报文给接收方,直到收到接收方发来的Config-Ack消息就算协商成功。
2.3 认证协议
PPP协议提供了可选的认证配置参数选项,缺省情况下点对点通信时的两端是不进行认证的。认证方式是在LCP阶段协商确认的,在LCP链路配置报文中,不可一次携带多种认证方式,必须二者择其一(PAP/CHAP)。
PAP(Password Authentication Protocol密码认证协议)认证时二次握手,直接在网络上传送明文的用户名和密码,因此该协议安全性不高。
CHAP(Challenge Hand Authentication Protocol挑战性握手认证协议)认证是三次握手,只在网络上传送验证方和被验证方的主机名,并不传送密码,且由验证方主动发起。因此相比之下CHAP比PAP更安全。
2.4 NCP协议
NCP协议的数据报文是在网络侧协议阶段被交换的,在这个阶段所需的一些配置参数选项协商完成后,就可以进行网络层的通信。NCP协议主要包括IPCP、IPXCP等,最常见的就是IPCP协议。
IPCP控制协议主要是完成IP网络层协议通信所需配置参数选项的协商。IPCP 在运行的过程中,主要是完成点对点通信设备的两端动态的协商IP地址。IPCP的数据报文同LCP的数据报文类似,只不过LCP协议是在链路建立阶段协商配置参数选项,IPCP是在网络层协议阶段协商配置参数选项。在实际的数据报文交换过程中IPCP数据报文仅涉及以下几种:Config-Request、Config-Ack、Config-Nak和Config-Reject。
根据两端设备的配置选项可将IPCP的协商过程分为“静态”和“动态”。静态、动态是相对的概念,两者的区分是在于互连设备IP地址的获取过程。
静态协商,即不协商,点对点的通信设备两端在PPP协商之前已配置好了IP地址,所以无须在网络层协议阶段协商IP地址,而双方唯一要做的就是告诉对方自身的IP地址,最理想的情况如下图所示:
动态协商,即一端配置为动态获取IP地址,另一端通过手动方式配置IP地址,且允许给对端分配IP地址,最理想的情况如下图所示:
IPCP阶段完成后,PPP链路即正常建立,可进行点对点通信。
㈡ linux下怎么用脚本返回ppp0接口的IP地址
要是只是想区分两个接口拨的PPPOE接口名的话。。。
可以指定linkname这是PPPD里面的一个选项。。。
不同的以太网口指定不同的linkname就可以了
拨号成功后会在/var/run/下面生成一个你设定的PPP-linkname的文件
比如PPP-1,里面有对应的PPPOE接口名如PPP1
这样就可以区分了。。。要是想定死为PPP0的话可能只有修改源代码了。。。
㈢ 如何用Linux做PPPOE服务器
Linux自身的网络设置
Linux做PPPOE服务器,在操作上虽然也可以在图形界面中是为网卡设置IP地址,但是真正实现网卡IP地址等信息的准确可靠,还是要在相应的文件中作设置,我们本次要设置两块网卡,编辑好的文件内容如下:
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# more ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="0.0.0.0"
DEVICE="lan"
HWADDR="00:0C:29:33:69:86"
ONBOOT="yes"
NETMASK="0.0.0.0"
[root@localhost network-scripts]# more ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="10.70.10.11"
DEVICE="wan"
HWADDR="00:0C:29:33:69:90"
ONBOOT="yes"
NETMASK="255.255.0.0"
GATEWAY="10.70.0.1"
Linux做PPPOE服务器的设置过程中,我们重点看一下ifcfg-eth1的配置文件,其中ONBOOT="yes"是必须的,可以保证系统启动网卡自动连接到网络上,网关的信息是我们手工添加进出去,保证有网关可以正常的访问外部网络,ifcfg-eth0文件中只要保证ONBOOT="yes"就可以了,当然象在routeros中一样,我们将外网口的名字定义为wan,将内网口的名字定义为lan。
Linux做PPPOE服务器设置
一)检查本机有没有安装PPPOE服务
[root@localhost network-scripts]# rpm -q rp-pppoe
rp-pppoe-3.5-35
以上信息说明安装了
二)配置必要的参数
为了使Linux中的配置过程比较好理解,我们以routeros下的配置过程作为参考。
1、了解pppoe-server-options
这个文件有点类似于ROUTERS下的profile文件,在这个文件中定义了使用哪种验证方式:require-chap,为用户分配的DNS服务器地址是多少:
ms-dns 219.146.0.130
ms-dns 222.175.169.91
完整的pppoe-server-options文件如下所示
[root@localhost ppp]# more pppoe-server-options
# PPP options for the PPPoE server
# LIC: GPL
require-chap
login
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 219.146.0.130
ms-dns 222.175.169.91
2、添加用户名和密码
在相同的目录下有一个chap-secrets文件,在这里面可以添加用户名和密码
[root@localhost ppp]# more chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
abc * abc *
3、允许本地验证
也就是修改options文件,将而来默认的lock改为local即可。
[root@localhost ppp]# more options
#lock
local
4、开启PPPOE服务
[root@localhost ppp]# more pppstart
pppoe-server -I lan -L 192.168.0.1 -R 192.168.0.5 -N 10
像以前一样,我将这条命令做成了一个脚本,这样操作测试其中的参数比较方便,我简单介绍一下Linux做PPPOE服务器当中这条命令中的各个参数的意思。
I:指定响应PPPOE请求的端口,本例中是在lan口上。
L:PPPOE服务器的IP地址,这是客户端所填的PPPOE服务器的地址。
R:这是分配给客户端的地址池起始地址,本例中从192.168.0.5开始
N:地址池的IP地址递增几个,本例中添增10,也就是从192.168.0.5开始,到192.168.0.14结束。
做完以上的设置,我们再梳理一下routeros下建立PPPOE服务的步骤
1、添加一个地址池
2、添加一个profile文件
3、添加拨号用户
4、启动pppoe服务
对照一下,可以看出我们在Linux中将以上步骤都完成了,也就是说PPPOE服务准备好了,客户端PPPOE拨号,顺利的话就可以拨号成功了。当然现在客户端还不能上网,设置Linux做PPPOE服务器的这个时候,还没有启用NAT,我们用IPTABLES软件来实现,写一个这样的脚本即可:
echo "1" >> /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wan -j SNAT --to 10.70.10.23
第一行的作用是启用IP转发,第二行是启动IPTABLES进行NAT转换,下面是对各个参数的解释
-t nat表示进行NAT转化
-s 192.168.0.0/24表示源地址为192.168.0.0/24这个网段
-j SNAT --to 10.70.10.23表示将源地址都转化成10.70.10.23这个外网地址
同样的,我们可以对照routeros系统里NAT的设置来理解这条命令。启动NAT以后,这台PPPOE服务器就功能完整了,客户端不仅可以拨通服务器,拨通后还可以上网。
㈣ SIM9001模块在嵌入式LINUX下怎么用ppp进行拨号上网移植了很多脚本都是😓
无法识别sim卡,查看是什么原因造成的并解决:1、查看手机卡槽或者sim卡有没有损坏:可以插入其他手机卡尝试,再将手机本身的sim卡放到其他手机上看看,如果是卡槽损坏,建议更换卡槽,如果是sim卡损坏,请前往营业厅更换sim卡。2、网络延迟造成的不读sim卡:可以打开手机的飞行模式,五秒后再关闭,或者重启一下手机。3、所处在地方信号不好无法搜寻到信号读取sim卡,可以换个地方再搜寻。4、卡贴损坏或者手机已经升级:卡贴是需要对应着手机版本使用的,请更换卡贴。
㈤ 在linux下写了一个拨号脚本,如何判断脚本是否运行成功
open、close移动到循环里,每次 system ifconfig 之后再打开读文件,读完就关闭。
㈥ linux下gprs模块ppp拨号上网成功后怎么操作
GPRS有modem口和AT口
拨号用MODEM,发送AT用AT口。
如果只有一个口那就没办法了,只能断开连接才能继续AT,
㈦ 嵌入式linux ppp拨号上网时, 输入pppd call cmnet 后无反应,ifconfig查看无ppp0,求高手指教
这样得到的内容太模糊了,大家没有办法帮您。
建议你开两个终端,然后一个终端执行
tail -f /va/log/message
一个终端执行
adsl-connet
得到message的日志内容,才能分析解决的办法
㈧ 如何设置Linux服务器为PPP拨入服务器
我按下面这个配置成功了,你可以试下:
一、安装的前提条件
1.确保安装了网卡并工作正常
使用命令
#ifconfig eth0
查看网卡状态,然后关闭ifdown eth0,注意一定要关闭ifdown eth0
2.在系统中不要设置默认路由(网关),让ADSL拨号后自动获得
如果已经设置了默认路由,使用以下方法删除:
在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:
#/etc/rc.d/init.d/network restart
3.已经安装了pppd软件包
如果存在文件 /usr/sbin/pppd,则说明已经安装了pppd;
如果未安装,从RedHatLinux 6.2安装光盘上安装ppp-2.3.11-
4.i386.rpm这个软件包
二、安装PPPOE客户端软件
Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe 这个软件包。从http://www.roaringpenguin.com/pppoe/这个网站上,不仅可以下载
RedHat 62平台下的rp-pppoe的二进制软件包,而且可以下载源代码软件包。
1.二进制软件包的安装:
A.下载二进制软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2-1.i386.rpm
B.进行安装
以root执行:
#rpm -Uvh rp-pppoe-3.2-1.i386.rpm
2.从源代码进行安装:
从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A.下载源代码软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz
B.解压缩
#tar xvfz rp-pppoe-3.2.tar.gz
#cd rp-pppoe-3.2
C.进行编译和安装
运行脚本
#./go
将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、配置PPPOE客户端软件
安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:
#/usr/sbin/adsl-setup
当出现
>>> Enter your PPPoE user name :
输入ADSL帐号的用户名
当出现
>>> 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 ,这是ADSL相连的网卡的名字
当出现
>>> Enter the demand value (default no):
输入 no
当出现
>>> Enter the DNS information here:
输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
当出现
>>> Please enter your PPPoE password:
输入ADSL帐号的密码
当出现
>>> Choose a type of firewall (0-2):
输入 0 ,不使用防火墙
当出现
>>> Accept these settings and adjust configuration files (y/n)?
如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。
四、启动PPPOE客户端软件
使用命令
/usr/sbin/adsl-start 启动PPPOE客户端软件,进行连接,如果成功,将出现
Connected;
如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息
/usr/sbin/adsl-stop 关闭和ISP的连接
/usr/sbin/adsl-status 查看当前连接的状态
如果想在Linux系统启动时自动启动ADSL连接,输入以下命令
#chkconfig --add adsl
将在当前的运行级下加入ADSL的自启动脚本
五、测试
当连接成功后,使用命令
#ifconfig -a
在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。
使用命令
#netstat -nr
查看路由表信息,这时的默认路由应该是上面获得的IP地址。
如果没有默认路由,我们可以手动增加:
#route add default gw 上面获得的IP地址
使用命令
#nslookup www.sina.com.cn
如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器
最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
六、其它说明
1、RedHat Linux 7.1已经集成了rp-pppoe这个软件包,只不过版本有些低,如果你不在意版本高低,可以直接进行三后面的步骤。
2、以后要拔号上网时,只要:
ifdown eth0
ifup ppp0
/usr/sbin/adsl-start
㈨ linux下的ppp的脚本怎样编写
说明:将以下脚本拷贝到vi中,保存,修改权限执行,得到你想要的结果。
#!/bin/bash
cd /etc/named
cp honey.com.zone /tmp/honey.com.zone.bk
awk '/^@ IN NS nsl.honey.com./ {print "@ IN NS nsl.ashaur.com";next} \
/^www IN A 192.168.1.7/ {print "www IN A 192.168.1.6";next} \
{print}' honey.com.zone >/tmp/honey.com.zone.tmp
cp /tmp/honey.com.zone.tmp /etc/named/honey.com.zone
㈩ wireshark怎样抓linux ppp拔号
你的系统镜像中有的,你挂上,设置本地镜像,然后用那些命令就可以安装了,简单点的话联网,找不到的话增加其它镜像源,然后用那些命令安装,还得确定一点,你的