拨号上网:原文链接
一、上网拨号需要用到的脚本
- 拨号上网脚本wcdma:
#Copyright (c) 2019 WuYujun
#set debug ,send message to /var/log/messages
debug
#To keep pppd on the terminal
nodetach
lock
#set seriral
/dev/ttyUSB3
# set baudrate
115200
user "wyj"
password "wuyujun"
# set flowrate
crtscts
show-password
usepeerdns
noauth
noipdefault
novj
novjccomp
noccp
# Accept the peer's idea of our local IP address
ipcp-accept-local
# ipcp-accept-remote
ipcp-accept-remote
connect '/bin/chat -s -v -f /etc/ppp/peers/wcdma-chat-connect'
disconnect '/bin/chat -s -v -f /etc/ppp/peers/wcdma-chat-disconnect'
- chat脚本 (wcdma-chat-connect)
ABORT "BUSY"
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
TIMEOUT 120
"" AT
OK \rATZ
# Connection to the network
OK \rAT+CGDCONT=1,"IP","3gnet",,0,0
# Dial the number
OK-AT-OK ATDT*99#
CONNECT \d\c
- 断开连接(wcdma-chat-disconnect)
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
""\k"
""+++ATH"
SAY "\nGood bay\n"
二、上网拨号命令
有个时候会出现正在拨号情况
microcom -s 115200 /dev/ttyUSB2
ATH0
中断拨号
接下来就可以正常拨号了!
第一步:执行“pppd call wcdma”命令进行拨号
pppd call wcdma&
第二步:
ifconfig
第三步:设置DNS
route add default dev ppp0
第四步:
ping
三、添加上网操作代码
system("pppd call wcdma&");
system("ifconfig");
system("route add default dev ppp0");
system("ping baidu.com");
四、ppp拨号原理
既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动代码来提供.pppd(ppp daemon)提供基本的LCP,认证支持,和建立和配置IP的网络控制协议NCP.一个ppp会话分为四个步骤:连接建立、连接质量控制、网络层协议配置、连接终止;提供了密码认证协议(PAP)或者邀请握手认证协议(CHAP)来保证连接安全.使用PPP你可以把你的 Linux PC连接到一台ppp服务器上并存取该服务器所连接的网络资源就如同你是直接连接在该网络上一般。你也可以把你的Linux PC设为一台ppp服务器,这样一来其它电脑就可以拨入你的电脑并且存取在你区域网络里的资源。
关于linux下脚本拨号的过程:(其实可适用于linux下所有的拨号过程,当然实际过程没有这么简单,如果有兴趣,请阅读源码)
1.由pppd程序调用chat会话程序
2.chat会话程序负责拨号,启动服务器端的pppd程序,验证身份,然后chat会话程序结束
3.由pppd程序继续chat会话程序的工作,与服务器端的pppd程序进行握手,建立ppp连接