github库:https://github.com/ppp-project/ppp
为什么Linux需要额外的PPP模块?
Linux虽然自带网络服务,但是是最简单的网络服务。不包含解析PPP协议报文的功能,所以需要PPP模块来进行拨号的报文解析和密码认证等
拨号成功后再把网络信息设置进Linux系统
使用方法
开启:
/usr/bin/pppd \ #启动ppp服务unit 99\ #PPP接口号 99user admin\ #用户名 adminpassword 12345678\ #密码 12345678nodetach\ #前台运行holdoff 4\ #连接失败后等待4秒重试maxfail 0\ #最大失败次数,0无限制usepeerdns\ #使用服务器提供的 DNS 地址lcp-echo-interval 1\ #LCP心跳包间隔 1 秒lcp-echo-failure 60\ #60次LCP请求无响应,判定链路故障plugin /lib/libpppoe.so\ #加载 PPPoE 插件# simulate noipdefault\ #不添加网络配置到系统persist\ #连接断开后自动重连mtu 1492\ #设置最大传输单元MTU为 1492 字节(标准值)mru 1492\ #设置最大接收单元MRU为 1492 字节& #后台运行进程
主要设置这三项就行
unit 99 : PPP接口号 99
user admin : 用户名 admin
password 12345678 : 密码 12345678
-
simulate noipdefault项默认不开
这样ppp拨号成功后会自动把网络信息写进Linux
不然需要手动添加进路由表
ip route add default dev ppp99
-
工程下的options.c可以设置默认设置
关闭:
kill -SIGTERM pid进程号
pid进程号可以用 ps 查询,或者在/var/run/ppp/ppp.pid文件里查看
命令是通报它结束,而不是强制它结束
这样关闭ppp进程后,会自动发送ppp停止会话的报文。让服务器知晓,方便第二次连接