Linux&Android PPP相关FAQ 

 目录

Linux&Android PPP相关FAQ.. 1

一、         文档说明... 3

二、         常见调试技术... 4

1.      查看PPP log信息... 4

2.      查看拨号IP. 4

3.      查看路由、配置路由... 4

4.      Ping ip和网址... 4

5.      设置DNS. 5

三、         问题记录... 6

1.      Linux下拨号失败... 6

2.      Android下无法建立数据业务... 6

3.      Linux和Android下有IP能ping地址不能ping域名... 6

4.      Linux和Android下有IP能不能ping域名和地址... 7

5.      客户多网卡无法上网... 7

附录A:双网卡路由配置案例... 8  

一、             文档说明

本文档主要是记录linux下PPP相关的易错点和典型客户支持记录。

客户在linux和Android下使用PPP进行数据业务一般会易遇到如下几类问题:

1)  Linux下拨号失败

2)  Android下无法建立数据业务

3)  Linux和Android下有IP能ping地址不能ping域名

4)  Linux和Android下有IP能不能ping域名和地址

5)客户多网卡无法上网  

二、             常见调试技术

1.     查看PPP log信息

1)Linux下:

tail -f /var/log/syslog

tail -f /var/log/messages

2)Android下:

logcat -s pppd

2.     查看拨号IP

1)Linux 下:

ifconfig

2)Android下:

netcfg

3.     查看路由、配置路由

1)查看路由:

route

2)配置路由:

route add

3)Examples:

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0

向"eth0"添加一条指向网络192.56.76.x的路由。其中的C类子网掩码并不必须,因为192.*是个C类的IP地址。在此关键字"dev"可省略。

route add default gw mango-gw

加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有分组将通过网关"mango-gw"进行传输。

4.     Ping ip和网址

1)ping IP地址:

ping 8.8.8.8

2)ping域名:

ping www.baidu.com

5.     设置DNS

1)直接修改配置文件:

/etc /resolv.conf

2)Examples:

/system/etc/ppp # vi /etc/resolv.conf

nameserver 8.8.8.8

nameserver 8.8.4.4

三、            
问题记录

1.     Linux下拨号失败

问题

Linux下调用pppd call quectel-ppp返回失败

现象1

提示:Connect script failed

分析

脚本连接错误,可能是脚本格式问题。

解决方法

在linux下执行:dos2unix 脚本文件名

现象2

拨号log出现,但是获取不到IP

分析

检查卡是否欠费、是否没有插卡、是否没连天线或者信号过弱

解决方法

针对以上分析排除针对解决

2.     Android下无法建立数据业务

问题

Linux下调用pppd call quectel-ppp返回失败

现象1

拨号ppp log显示error

分析

APN错误(国内公网卡APN随便设,错的可以但是不能没有;专网卡需要专门的APN,不可填错;国外需要根据运营商要求写入正确APN)

解决方法

添加正确APN

现象2

拨号log出现,但是拨号一直失败,获取不到IP

分析

检查卡是否欠费、是否没有插卡、是否没连天线或者信号过弱

解决方法

针对以上分析排除针对解决

现象3

从logcat看不到拨号信息,或者ril信息里很多error

分析

可能RIL由于error导致重启,检查是否ril确实是重启了

解决方法

提交重启log,研发分析

现象4

Android打电话发短信等功能OK,但是无法获取IP

分析

检查数据业务开关是否开启;APN是否设置;检查init.rc里面是否正确设置数据业务对应service

解决方法

可能数据业务没有开启,需要开启数据业务;APN没有设置需要填写正确APN;添加正确service

现象5

电话、短信、信号显示、数据业务均不能正常使用

分析

检查RIL是否正确集成

解决方法

不正确则重新集成

3.     Linux和Android下有IP能ping地址不能ping域名

问题

通过ifconfig可以查看到ppp0有IP,并且可以ping网址却不能ping域名

现象1

通过ifconfig可以查看到ppp0有IP,并且可以ping网址却不能ping域名

分析

这种情况是DNS没有设置或者DNS设置有问题,可以检查/etc/resolv.conf确认

解决方法

修改/etc/resolv.conf添加DNS再试。

正常情况下应该是已经设置成功的,linux发行版本的ip-up会配置DNS,Android的ip-up我们做了处理也会设置DNS。

4.     Linux和Android下有IP能不能ping域名和地址

问题

通过ifconfig可以查看到ppp0有IP,但是不能ping网址也不能ping域名

现象1

通过ifconfig可以查看到ppp0有IP,但是不能ping网址也不能ping域名

分析

这种情况很可能是路由设置问题。需要使用route检查路由是否存在并且是否正确

解决方法

如果不存在路由信息那必然是有问题的;如果存在路由信息,但是没有默认路由应该也是不对的,因为我们脚本里将ppp0加为了默认路由。

5.     客户多网卡无法上网

问题

客户设备使用多个网卡,使用无线模块上网出现失败情况

现象1

客户设备使用多个网卡,使用无线模块上网出现失败情况

分析

由于多个网卡同时存在,则可能出现路由设置出现问题,当路由配置错误则导致数据走不出去。

解决方法

参考附录A

6.    
PPP拨号断开,不上报NO CARRIER

问题

断开PPP,不上报NO CARRIER

现象1

客户在LCP阶段协商认证方式的时候,模块请求PAP,被MCU拒掉以后,模块发送了终止帧。但是,在PPP过程中,没有看到NO CARRIER上报,而模块确实是退出了PPP状态。如果客户打开了回显,这时有回环的错误。

分析

监控模块TX,确认模块是有上报NO CARRIER。

用客户的脚本测试调查了,客户的脚本的确会在terminate终断后还继续向模块发送请求。

解决方法

将客户的脚本中的nolock选项改为lock并增加modem选项(modem选项应该是pppd默认选项,可以不加,加了更保险)

附录A:双网卡路由配置案例

1、我机器有线网卡是eth0,ppp拨号生成ppp0,信息如下:

root@joe-OptiPlex-790:~# ifconfig

eth0     
Link encap:以太网 
硬件地址 d4:be:d9:9a:01:5d

inet 地址:192.168.10.46  广播:192.168.10.255  掩码:255.255.255.0

inet6 地址: fe80::d6be:d9ff:fe9a:15d/64
Scope:Link

UP BROADCAST RUNNING MULTICAST 
MTU:1500  跃点数:1

接收数据包:897703 错误:10 丢弃:0 过载:0 帧数:5

发送数据包:42177 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:1000

接收字节:84285024 (84.2 MB)  发送字节:20817523
(20.8 MB)

中断:20 Memory:e1a00000-e1a20000

ppp0     
Link encap:点对点协议

inet 地址:10.4.24.116  点对点:10.64.64.64  掩码:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST 
MTU:1500  跃点数:1

接收数据包:5 错误:0 丢弃:0 过载:0 帧数:0

发送数据包:4 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:3

接收字节:55 (55.0 B)  发送字节:58
(58.0 B)

2、路由配置要求是这样的:

192.168.10.0网段(即我的局域网)的数据走eth0,访问外网走ppp0。

3、配置操作

1)修改前

root@joe-OptiPlex-790:~# route

内核 IP 路由表

目标            网关            子网掩码        标志  跃点   引用  使用 接口

default         192.168.10.1    0.0.0.0         UG   
0      0        0 eth0

10.64.64.64     *               255.255.255.255 UH    0     
0        0 ppp0

192.168.10.0    *               255.255.255.0   U    
0      0       
0 eth0

2)删除默认路由

因为该默认路由是走eth0,外网要走ppp0,所以该路由不正确,故删除。

root@joe-OptiPlex-790:~# route del default

root@joe-OptiPlex-790:~# route

内核 IP 路由表

目标            网关            子网掩码        标志  跃点   引用  使用 接口

10.64.64.64     *               255.255.255.255 UH    0     
0        0 ppp0

192.168.10.0    *               255.255.255.0   U    
0      0        0 eth0

root@joe-OptiPlex-790:~# ping www.baidu.com

ping: unknown host www.baidu.com

root@joe-OptiPlex-790:~# ping 8.8.8.8

connect: Network is unreachable

3)添加默认路由,让外网数据走ppp0

root@joe-OptiPlex-790:~# route add default gw
10.4.24.116

root@joe-OptiPlex-790:~# route

内核 IP 路由表

目标            网关            子网掩码        标志  跃点   引用  使用 接口

default         10.4.24.116     0.0.0.0         UG   
0      0        0 ppp0

10.64.64.64     *               255.255.255.255 UH    0     
0        0 ppp0

192.168.10.0    *               255.255.255.0   U    
0      0        0 eth0

root@joe-OptiPlex-790:~# ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_req=1 ttl=36
time=405 ms

64 bytes from 8.8.8.8: icmp_req=2 ttl=36
time=434 ms

^C

--- 8.8.8.8 ping statistics ---

2 packets transmitted, 2 received, 0% packet
loss, time 1001ms

rtt min/avg/max/mdev =
405.474/419.767/434.060/14.293 ms

5) 
添加路由让局域网数据走eth0

从路由中已经可以看到如下信息:

192.168.10.0    *               255.255.255.0   U    
0      0        0 eth0

该路由就是将192.168.10.0网段数据走eth0,因此此路由无需添加,如果该路由不存在则可使用以下命令添加:

route add -net 192.168.10.0 netmask
255.255.255.0 gw 192.168.10.46 dev eth0

linux&android PPP 相关知识的更多相关文章

  1. Android View相关知识问答

    Android View相关核心知识问答 Activity Window View之间的三角关系 你真的了解View的坐标吗? 在渲染前获取 View 的宽高 5种手势工具类 浅析Android的窗口

  2. LINUX涉及网络相关知识

    才接触到网络的老铁,是否比较晕呢? 简单记录一下网络相关知识吧(IPV4)! A0. 网络号.主机号 A1.网络地址分类: A2. 保留地址: A3. 子网掩码作用:(子网掩码.IPV4地址做“与”运 ...

  3. Linux的CPU相关知识

    超线程和多线程的区别? 超线程从硬件层面理解,即一个CPU的部件(可以理解为核)同时执行多条指令,表现就是同时执行多个线程.多线程是软件层面的概念,比如CPU只有一个核,通过线程调度可以在一个时间段内 ...

  4. linux shell脚本相关知识

    最近的项目中,有一个编写linux shell脚本的任务.由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多.下面是linux shell脚本中常用的知识总结. 1基础语法 ...

  5. Android.mk相关知识

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  6. Sdcard插拔、状态广播监听,Android文件系统,Android存储器相关知识总结

    一 SDcard广播监听,注册,取消注册的实现 (1)根据实际需要监听的事件,添加action,并注册,一般在onCreate中添加 //在IntentFilter中选择你要监听的行为 IntentF ...

  7. linux下分区相关知识

    Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码.以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1.hda2.hda3.hda4,而逻辑分区占用 ...

  8. Android——dpi相关知识总结

    1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸...... nexus4手机是4.7英寸 As ...

  9. Android拍照相关知识总结

    1.调用系统的照相机程序 Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(inte ...

随机推荐

  1. C一次将整个文件读入内存

    最近工作,有个需求需要将YUV的整个文件读入内存,然后处理这些YUV数据,一种比较有效的方法如下: #include <stdio.h> #include <stdlib.h> ...

  2. 分析苹果代充产业链 汇率差+退款造就三线城市千万富翁‍_中新游戏研究_Joynews中新游戏

    分析苹果代充产业链 汇率差+退款造就三线城市千万富翁‍_中新游戏研究_Joynews中新游戏 CNG:近日有媒体曝出8月22日这一天,有一家淘宝店卖出了351张面值4000南非南特的App Store ...

  3. 【opencv基础】OpenCV从Mat中提取某些行或列

    这两个函数返回的是指向原矩阵内部位置的指针,类似于浅拷贝: code cv::Mat align_mean(cv::Mat mean, cv::Rect facebox, float scaling_ ...

  4. 【linux基础】core dump debug

    1.check core dump; ulimit -c or ulimit -a nvidia@tegra-ubuntu:~$ ulimit -a core data seg size (kbyte ...

  5. opencv-python教程学习系列5-处理鼠标事件

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步. 系列教程参照OpenCV-Pytho ...

  6. 51Nod 1066:Bash游戏 (巴什博弈)

    1066 Bash游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次最少拿1颗,最多拿K颗,拿到 ...

  7. 《DSP using MATLAB》Problem 4.20

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  8. gem install没有反应 解决办法

    在虚拟机上执行gem install redis 没有反应: 百度方法如下: #移除官方镜像,增加淘宝镜像 gem sources --add https://ruby.taobao.org/ --r ...

  9. (考研)散列表和hashcode和hashmap

    package tt; import java.util.HashMap; import java.util.Map; public class a0 { public static void mai ...

  10. day23 python学习 类 人狗大战

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 面向过程 优点是:极大的降低了 ...