Linux Ubuntu系统之PPP拨号经验分享
近期,工作需要,我负责开发PPP拨号模块。
说起拨号,算算时间,我已经做过2次了, 暴露年龄了,呵呵。
第一次是刚毕业做的PPOE拨号,给电信做拨号软件,在河北石家庄工作过一段时间,基于windows xp。
第二次是在移动网优,3G手机路测,即著名的TD-SCDMA,基于AT指令控制手机驱动。
这次,是用的PPPD拨号,在Linux系统下。
pppd 拨号模块,Linux系统是自带的, 就像windows下自带的RAS拨号一样,打印机等很多应用需要通过拨号方式进行通信的。
Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-161-generic x86_64)
pppd 2.4.5
参考文档,配置4个文件:
/etc/ppp/peers/myvpn 账号信息
remotename myvpn
linkname myvpn
ipparam myvpn
pty "pptp *** --nolaunchpppd --loglevel 0"
lock
nodeflate
name ***
usepeerdns
require-mppe
noauth
require-mppe-128
defaultroute
mtu 1416 #特别关键!!!
/etc/ppp/chap-secrets VPN用户名密码
user pass
/etc/ppp/options 默认设置项
lcp-echo-failure 10 # (from /etc/ppp/options)
lcp-echo-interval 10 # (from /etc/ppp/options)
lock
crtscts
nodeflate
persist
asyncmap 0
noauth
hide-password
noipx
/etc/ppp/options.pptp 设置项
lock
noauth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate
require-mppe-128
ipparam myvpn
defaultroute
个人总结的技巧:
- 一定要升级python3.4 --> python3.7?
我开始很纠结Python版本,代码开发是Python3.7最新版,而Ubuntu自带的是Python 3.4, 故想办法升级python3.7,如果在本地网速很快,这个不是什么难事,1小时工作量。
但是,远程链接SSH,VPS服务器在国外,网速卡的厉害,本来1小时工作,忙乎了一个上午才搞定,升级到python3.6 + pip3 。 但是一想,我还有n个服务器呢,故晚上加班把代码降级为pyhon 3.4,这样部署就方便多了 -- 非原则问题,不要在环境上折腾太久,条条大路通罗马嘛。
这个事情,给我很大的启示:不要做战略的矮子,再勤劳的执行力, 团队的效率也上不来的。
平衡、成本、决策!
- 部署python程序,background job running
windows开发C#很多年,除了前几年做Unity3D开发的游戏APP(含VR、AR),这些都是有GUI界面的,而在Linux下,第一个门槛就是无UI界面。
调试程序通过,部署后,我关闭ssh下班了,吃完饭,远程ssh,怎么我的python程序不见了,惊讶不已,才***行代码,而且我写的是 while true 循环,不可能自己退出啊。
nohup python3 main.py &
ps ax | grep py
上网搜索,多亏google,很快就明白了,SSH通过22端口,开启了一个“session”,一般,如你执行 python3 main.py,随着SSH Session结束,Linux会kill这个process的。 而这个PPP拨号程序需要作为一个长时间运行的,故需要用 nohup 和 & 关键字,这样当你退出ssh,这个程序会驻留系统。
那么问题来了,查询运行的process,常用的 ps all就是不灵了。
要用 ps ax | grep py 才可以。
linux常用工具工具
- [ ] vi 编辑器,linux运维必备神器!
- [ ] cat /var/log/syslog | grep pppd #输出mylog.log, search pppd
- [ ] cat /var/log/syslog | tail -n 100 #输出mylog.log 文件最后100行
- [ ] egrep -v '#|^ *$' /etc/ppp/options #正则,列出配置文件起作用的
- [ ] * ">" /var/log/syslog #clear syslog
- [ ] * dhclient -v -4 : refresh network #重新获得IP.
参考文档:
- https://superuser.com/questions/949520/wvdial-ppp0-and-setting-default-route-automatically
- https://askubuntu.com/questions/891393/vpn-pptp-in-ubuntu-16-04-not-working
- http://www.cnblogs.com/simonshi/archive/2010/04/23/1718984.html
Linux Ubuntu系统之PPP拨号经验分享的更多相关文章
- Linux下EC20实现ppp拨号(转)
源: Linux下EC20实现ppp拨号 参考: 4g模块EC20+android6.0系统移植 OK6410开发板调试EC20通信模块 海思3531添加移远EC20 4g模块 将移远通信的EC20驱 ...
- linux ubuntu系统下,adb不是内部命令 (如何才能让adb命令可以使用)
linux ubuntu系统下,adb不是内部命令 原文地址 linux ubuntu系统下,adb不是内部命令 解决方法: 1.sudo gedit ~/.bashrc 2.将下面的两句加到上面打开 ...
- Linux Ubuntu系统版本通过Crontab设置定时任务的执行
Linux Ubuntu系统版本通过Crontab设置定时任务的执行 本文由本人收集网络信息总结而来 特别鸣谢:https://linux.zone/2258 1 crontab 简单介绍以及语法使用 ...
- 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作
在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...
- linux/Ubuntu系统上安装mysql数据库(附图详解)
在前面的文章中,我已经分享了如何在Ubuntu系统中安装以及搭建java开发环境,那么当我们需要跟数据打交道的时候,那么就需要在ubuntu系统中安装一个数据库了,那么废话就不多说了,我们这里主要是分 ...
- 搭建Linux(Ubuntu)系统下的Differential Datalog运行环境
DDlog is a bottom-up, incremental, in-memory, typed Datalog engine. It is well suited for writing pr ...
- Linux(Ubuntu)系统下使用crontab定期执行任务
安装cron(Ubuntu系统自带) apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/50-default. ...
- 菜鸟初学Linux——Ubuntu系统中,用root权限进行复制粘贴操作
long long ago,积累了一些Linux的小知识,拿出来分享一下,希望以后能够在工作上带来一些帮助. 方法一 第一步:打开终端,在命令行里输入sudo nautilus 第二步:输入你的用 ...
- MacBook Pro/Air 下使用 linux ubuntu 系统 波浪号“~”变成其他 符号 的完美解决办法
打开终端,输入: sudo su - > /sys/module/hid_apple/parameters/iso_layout sudo su -需要root权限,所以使用前请注意已下载roo ...
随机推荐
- hdu 6103(Kirinriki)
题目链接:Kirinriki 题目描述: 找两个不重叠的字符串A,B. 使得dis(A,B)<=m;\(dis(A,B)= \sum _{i=0}^{n-1} \left | A_i-B_{n- ...
- form 提交数据编码梳理
之前对form单提交的操作一直都是迷迷糊糊,知道怎么用,但是随着ajax2的出现,我们有更多的方式操作form表单提交,但是底层的原理我们要好好的做个梳理. 常见的form提交有post和get这两种 ...
- 牛客网暑期ACM多校训练营(第三场)G:Coloring Tree(函数的思想)
之前两次遇到过函数的思想的题,所以这次很敏感就看出来了.可以参考之前的题: https://www.cnblogs.com/hua-dong/p/9291507.html Christmas is c ...
- Qt容器组件(一)之QGroupBox、QScrollArea、QToolBox、QTabWidget
QT中有九种容器组件,分别是组合框QGroupBox.滚动区QScrollArea.工具箱QToolBox.选项卡QTabWidget.控件栈QWidgetStack.框架QFrame.组件QWidg ...
- 「JLOI2011」「LuoguP4568」飞行路线(分层图最短路
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在nn个城市设有业务,设这些城市分别标记为00到n-1n−1,一共有mm种航线,每种航线连接两个城市,并且 ...
- 【QT】《转载》常用快捷键
F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 ...
- [转]从onload和DOMContentLoaded谈起
这篇文章是对这一两年内几篇dom ready文章的汇总(文章的最后会标注参考文章),因为浏览器进化的关系,可能他们现在的行为与本文所谈到的一些行为不相符.我也并没有一一去验证,所以本文仅供参考,在具体 ...
- 对于makefile传递参数的一些问题
makefile变量说明: 1.总控Makefile中使用“-e”参数覆盖下一层Makefile中的变量. 2.父级Makefile向子级Makefile传送变量方式:export <varia ...
- MMU的理解
MMU内存管理单元相关知识点总结 1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器.物理存储器的控制线路,同时也负责虚 ...
- java 最佳实践
一: 不要直接new一个thread,应当使用线程池.使用线程池的时候应当对线程数量大小合理设置,一般最大不超过50个,当然还需要考虑你的IO和CPU,怎么分析网上搜搜吧. 二:容器类变量,如果变化比 ...