查看: 4202|回复: 10
收起左侧

[系统] centos7如何设置PPTP的客户端断线自动重拨

[复制链接]
eremiter
发表于 2017-3-21 16:56:22 | 显示全部楼层 |阅读模式
请教一下,centos7如何设置PPTP的客户端centos7 的vpn client开机后自动拨号,断线后自动重拨的方法

参考了一些资料
pppd call VPN

route add -net 0.0.0.0 dev ppp0

有的是
[mw_shl_code=css,true]/etc/rc.d/rc.local里面

#自动拨号vpn
pppd call vpn
sleep 2
ip route replace default dev ppp0 [/mw_shl_code]

route add -net 0.0.0.0 dev ppp0
和ip route replace default dev ppp0  命令都不一样

还有拔号服务器的ip 帐户和密码,总要保存在客户端某个地方,不然重拔,哪里调用???

参考

http://blog.it985.com/11494.html

但在centos7客户端不知要如何设置,才能达到断线重拔


thelord
发表于 2017-3-21 17:44:40 | 显示全部楼层
自己写脚本,定时检测断线
比如用incron检测/proc/net/route,断开就重拨
eremiter
 楼主| 发表于 2017-3-21 21:17:56 | 显示全部楼层
thelord 发表于 2017-3-21 17:44
自己写脚本,定时检测断线
比如用incron检测/proc/net/route,断开就重拨

写不来,在centos7中,参考这文章,重启都无法拨号

[mw_shl_code=css,true]/etc/rc.d/rc.local里面

#自动拨号vpn
pppd call vpn
sleep 2
ip route replace default dev ppp0
[/mw_shl_code]
黑暗的背叛者
发表于 2017-3-21 22:21:16 | 显示全部楼层
eremiter 发表于 2017-3-21 21:17
写不来,在centos7中,参考这文章,重启都无法拨号

[mw_shl_code=css,true]/etc/rc.d/rc.local里面

rc.local执行时$PATH变量可能初始化未完成,最好使用全路径。你可以写到脚本里面,让它延迟一段时间再运行。最好的办法就是使用计划任务,重启时执行的选项。断线检测有现成的脚本,你可以找找。
海南仙岛
发表于 2017-3-22 06:52:14 | 显示全部楼层
可以用tcpdump去监听pptp的端口, 如果数据流是空的话, 就重启pptpd服务并重新链接.
在命令行下用pptp连接好像是 pptpsetup
将脚本扔进crond里应该就可以了.
eremiter
 楼主| 发表于 2017-3-22 20:13:19 | 显示全部楼层
黑暗的背叛者 发表于 2017-3-21 22:21
rc.local执行时$PATH变量可能初始化未完成,最好使用全路径。你可以写到脚本里面,让它延迟一段时间再运 ...

断线检测没找到有centos7的脚本,到时找了一个window,windown对我没用
eremiter
 楼主| 发表于 2017-3-24 16:52:30 | 显示全部楼层
海南仙岛 发表于 2017-3-22 06:52
可以用tcpdump去监听pptp的端口, 如果数据流是空的话, 就重启pptpd服务并重新链接.
在命令行下用pptp连接 ...

找了一段脚本
https://zhidao.baidu.com/question/264211735642548165.html
是检测DNS,不适理,我改进了一下,ping 服务器192.168.10.1 即,服务器vpn的ip
在centos7客户端设置如下
/usr/autorun/ppp-service.sh
内容如下
[mw_shl_code=shell,true]#!/bin/sh
# /etc/autorun/ppp-service.sh
# 环境centos7.3,检测vpn是否断线,断线而重拔
# 请把dns1,dns2,gw修改成拼得通的DNS,开机自动运行,实时监控,断线自动重拨
#dns1="114.114.114.114"
#dns2="114.114.115.115"
#gw1 = "192.168.10.1"

sleep 8
/usr/sbin/pppd call vpn &
sleep 12
while true
do
   ping -s 1 -c 1 192.168.10.1    #去PING第一个GW1
   if [ "$?" != "0" ]     #假如PING不通
   then
      pppd call vpn & #再去拨号
      sleep 60        #等待60秒
   fi
done[/mw_shl_code]
然后 chmod +x /etc/rc.d/rc.local
添加如下一行
/etc/autorun/ppp-service.sh

开机也无法拔号

再编辑 crontab 添加一行,想通过每隔5分钟断线拔号,也不行
*/5 * * * * /usr/sbin/pppd call vpn  或

/etc/autorun/ppp-service.sh 也不行

eremiter
 楼主| 发表于 2017-3-24 18:54:47 | 显示全部楼层
本帖最后由 eremiter 于 2017-3-24 20:41 编辑

一、请问重启未输入用户和密码,是否能自动执行
crontab 和 /etc/rc.d/rc.local

它们二次区别是什么,都设置同一段脚本是否会冲突

二、在centos7架设PPTP,在客户端的centos7最小安装安装ppp-setup,发现手动可以拔成功,但自动crontab或/etc/rc.d/rc.local都无法成功,不知错在哪里,说什么要变环境变量,如何带,
我的客户端设置如下
方法一:
/etc/autorun我改进了一下,ping 服务器192.168.10.1 即,服务器vpn的ip
在centos7客户端设置如下
建议文件 /usr/autorun/ppp-service.sh
修改权限 chmod +x /usr/autorun/ppp-service.sh
内容如下

  1. #!/bin/sh

  2. # /etc/autorun/ppp-service.sh

  3. # 环境centos7.3,检测vpn是否断线,断线而重拔

  4. # 请把dns1,dns2,gw修改成拼得通的DNS,开机自动运行,实时监控,断线自动重拨
复制代码




sleep 8

/usr/sbin/pppd call vpn &

sleep 12

while true;

do

   ping -s 1 -c 1 192.168.10.1    #去PING第一个GW1

   if [ \"$?\" != \"0\" ];     #假如PING不通

   then

      pppd call vpn & #再去拨号

      sleep 60        #等待60秒

   fi

done


然后编辑 vi /etc/rc.d/rc.local
添加如下一行
/etc/autorun/ppp-service.sh

注意:进入目录 /etc/autorun/   手动运行可以成功拔号 ./ppp-service.sh

结果 :开机等了几分钟,也无法拔号

方法二:再编辑 crontab 添加一行,想通过每隔5分钟断线拔号,也不行
*/5 * * * * /usr/sbin/pppd call vpn  或

/etc/autorun/ppp-service.sh


方法三:
然后编辑 vi /etc/rc.d/rc.local
添加如下几行
  1. pppd call vpn
  2. sleep 2
  3. ip route replace default dev ppp0
复制代码
结果依然无法重拔


方法四:
编辑 crontab -e


添加内容如下

  1. */5 * * * * /usr/sbin/pppd call vpn
复制代码
结果也没成功
总的目的:实现系统重启或启动后一但拔vpn断线,可以实现重拔




thelord
发表于 2017-3-25 00:00:41 | 显示全部楼层
命令通过环境变量才找的到。
所以脚本里用到的所有命令都该用绝对路径
ping --> /bin/ping
pppd --> /usr/sbin/pppd

去日志里找失败原因。/var/log/syslog
eremiter
 楼主| 发表于 2017-3-28 20:28:56 | 显示全部楼层
本帖最后由 eremiter 于 2017-3-28 20:34 编辑
thelord 发表于 2017-3-25 00:00
命令通过环境变量才找的到。
所以脚本里用到的所有命令都该用绝对路径
ping --> /bin/ping


没有这个文件夹或文件,查了 log/ppp目录,没什么错误

并参考了
=============================
〖Linux〗自动连接VPN脚本(开机执行) http://www.cnblogs.com/scue/p/3920960.html
使用命令行进行PPTP VPN拨号(连通后的配置) http://blog.csdn.net/bytxl/article/details/38334185
PPTP自动拨号自动判断脚本  http://www.right.com.cn/FORUM/fo ... read&tid=206875

参考了
在linux下, 用pptp拨号,或者PPPOE拨号等, 拨号成功以后, 如果想修改路由表,或者做一个其他的动作等. 可以用如下的方法.

对于 centos/redhat 等 rhel 发行版

新增一个 /etc/ppp/ip-up.local 然后在这个文件里执行脚本即可. 注意需要将这个文件 修改为 执行 权限

=======================

还是搞不定,发现ppp-2.4.5有自动脚本,竟然看不懂,朋友有空帮我看看

PPTP拔号要求:centos7 client 每5分钟检测一下pppd 是否有拔号,如果没有,则拔号;如果有拔号,检测网关192.168.10.1 是否通,不通的话,则挂断,重拔

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-3-19 10:42 , Processed in 0.119157 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表