赞
踩
在编写脚本之前,要先安装好ppp相关驱动,pppd
已知pppd位于 /usr/sbin , chat 位于 /usr/sbin , options 位于 /etc/ppp 。
要编写脚本,就要切换目录到 /etc/ppp/peers,若没有peers目录则自行创建。因为是在/etc目录之下,需要使用sudo或者进入root模式才能创建或者编辑。安装ppp时,pppd就已经被固定到系统路径 /etc/ppp 找options, 到 /etc/ppp/peers 找脚本文件。可到ppp源码 ppp-2.4.7/pppd 下找pathnames.h 修改,如图:
所有的配置流程都是:
chat脚本的配置,options的脚本配置,该脚本会引用chat脚本,pppd应用程序会调用options脚本,如果需要用户、密码登陆,就要配置chat-secret或者pap-secret,该脚本也会被options脚本引用。
1.首先拷贝pppd和chat到/usr/sbin目录;
2.然后编写三个脚本,option脚本要注意的是串口设备名称,不要复制网上的脚本,一定要使用可用的串口设备名称。
pppd [ options ]
pppd应用程序会调用options脚本文件,得益于pppd程序的一个选项参数 call name
call name 和下面rasppp脚本中的选项一样,都是pppd的参数
它的解释是这样的:从/etc/ppp/peer/ name文件中读取其他选项该文件可能包含特权选项,如noauth,即使pppd不是由root运行。name字符串不能以/开头,也不能包含…作为一个路径名组件。
我们通常把这些选项放在name文件中,然后我们只需要pppd call name就可以了
# /etc/ppp/peers/rasppp # Usage: sudo pppd call rasppp # 连接调试时隐藏密码 hide-password # 该手机不需要身份验证 noauth # 用于呼叫控制脚本 connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-connect-chat' # 断开连接脚本 disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-disconnect-chat' # 调试信息,pppd将以可读的形式记录所有发送或接收的控制数据包的内容 debug # 4G模块对应的串口设备名称 /dev/ttyUSB4 # 串口波特率 115200 # 使用默认路由,IPCP协商成功后,在系统路由表中添加一条缺省路由,使用对等体作为网关。当PPP连接断开时,删除此表项。 defaultroute # 不使用默认IP:当没有指定本地IP地址时禁用默认行为,这是为了从主机名确定(如果可能)本地IP地址。 noipdefault # 不使用PPP压缩 novj novjccomp noccp #使用该选项,pppd将接受对等体对我们本地IP地址的想法,即使本地IP地址在选项中指定 ipcp-accept-local #通过该选项,pppd将接受对等体对其(远端)IP地址的想法,即使远端IP地址在选项中指定 ipcp-accept-remote #不要使用调制解调器控制线 local # 指定pppd应该为串行设备创建一个锁文件,以确保对该设备的独占访问,其他程序在发现这个文件后,就能得知相应的串口已经被使用。 lock #使用转储选项,pppd将打印所有已设置的选项值 dump # 保持pppd连接到终端。在pppd程序需要放到后台运行时,最好不要该选项 nodetach # 用户名 密码 user ctnet@mycdma.cn password vnet.mobi #电信需要用户名和密码,移动、联通拨号不需要,下文给出不同运营商的配置 # 硬件流量控制 crtscts #将用于身份验证的远程系统的假定名称设置为name remotename 3gppp #为ip-up、ip-pre-up和ip-down脚本提供额外参数。如果提供了这个选项,提供的字符串将作为这些脚本的第6个参数提供 ipparam 3gppp # 向对端请求最多2个DNS服务器地址 usepeerdns
# 连续5秒,收到以下字符,则退出执行 # 进行超时控制,增加对特殊情况的处理,加入下面字段 TIMEOUT 5 ABORT "BUSY" ABORT "ERROR" ABORT "NO ANSWER" ABORT "NO CARRTER" ABORT "NO DIALTONE" #一个chat脚本都是由字符串对来组成的。前面的字符串都是期望获取的串,紧跟的是发送的字符串 # 例如 ""AT,不管收到什么字符串,先发出字符串AT # OK \rATZ,发送ATZ,希望收到的是OK ""AT OK \rATZ # 建立连接,电信为空,下文给出各运营商配置 OK \rAT+CGDCONT=1,"IP","" # 拨号,#777是电信的拨号号码 OK-AT-OK ATDT#777 CONNECT \d\c
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
""\k"
#挂断电话
""+++ATH"
SAY "\nGood bye !\n"
3.执行pppd,成功获取ip。
sudo pppd call rasppp &
4.得到ip和dns后,关掉eth0,添加dns到/etc/resolv.conf,再用route命令添加默认网关为远端ip。
route add default gw xx.xx.xx.xx
5.此时就能ping通外网。
更多的设置可以去学习pppd和chat程序的选项参数~
Linux下man pppd、man chat就可以了
另外,在我的博客中也有两个程序的man手册的翻译
参考链接:https://blog.csdn.net/pjwshuai/article/details/124533452
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。