荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 3953|回复: 6

CENTOS6.2当做VPN客户端

[复制链接]

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
发表于 2016-1-28 08:11 | 显示全部楼层 |阅读模式
http://my.oschina.net/jathon/blog/392802
我按照这个教程来做的,这个教程不是太方便,可以略过,直接看下面的红字部分

具体的命令是
yum install pptp pptp-setup
pptpsetup --create vpn --server VPN_IP --username VPN用户名 --password VPN密码 --encrypt --start

然后断开连接就是
ifconfig ppp0 down
开启连接就是
ifconfig ppp0 down

这个方法有点问题pon和poff命名没有
https://bbs.konotes.org/thread-3494-1-1.html





我自己按照这个执行的
yum install ppp pptp pptp-setup

pptpsetup --create VPN_NAME --server VPN_IP --username VPN用户名 --password VPN密码 --encrypt

cp /usr/share/doc/ppp-2.4.5/scripts/po{n,ff} /sbin/
chmod 755 /sbin/po{n,ff}
建立连接
pon VPN_NAME

断开连接
poff VPN_NAME

就这几个命令,非常简单


下面是思路
1.需要安装pptp
2.建立一个vpn连接,类似windows下面新建VPN拨号
3.拨号
4.断开拨号
这个是centos6.2 32位上这样做,其他系统上不确定按照这个方法是否可以

另外遇到家里ADSL换IP的话楼下有脚本,可以在断开以后自动重连,服务器那边也需要一个脚本,在服务器的帖子里


回复

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-28 11:17 | 显示全部楼层
给自己的提示:
服务端的POSTROUTING那句语句不要
只用来当转发用
回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-29 13:28 | 显示全部楼层
http://www.cnblogs.com/wuchang/archive/2011/11/21/2257737.html
PPTPD默认MTU太大引起一些网站上不了的问题

代理服务器更换centos6半月有余,更换后发现wint系统拨号后访问 sina.com.cn / iciba.com / 360.com 等部分网站时页面打不开,而在服务器上或和机房内直接用通过服务器做网关的其它机器都能正常访问,一直不到其解。

今晚搜索了一下,找到些资料,发现是PPTPD默认的MTU太大,导致链路上有些设备堵塞。

解决思路就是把MTU改小些,方法大概有三种:

一、如果开启了iptables的(验证过可行)

iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356
其中粗体部分换上你的pptp client的IP段

二 、在 /etc/ppp/ip-up 中,exit 0行前添加 (验证过可行)

ifconfig $1 mtu 1356

看到ip-up中有一行:
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
所以也在 ip-up.local文件中添加ifconfig $1 mtu 1356也同效。

三、在PPTPD配置文件中设置:

打开/etc/ppp/options.pptpd
在文件最后添加 mtu1356



上面是那个链接的内容,我自己设置的是这样的
在服务端
用上面的三 服务端的MTU值要+4 不知道为什么
在客户端
用上面的二

回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-29 13:36 | 显示全部楼层
http://www.nqhua.com/2012/09/16/279.html
LINUX下vpn断线自动重连bash脚本

在linux下不会自动拨号,我现在在用的拨号脚本如下:

#!/bin/sh
VPN=`ifconfig | grep ppp0`
echo $VPN
if [ -z "$VPN" ]
then
pon myvpn

while [ 1 ]
do
Route=`route | grep 路由地址`
if [ -n "$Route" ]
then
route add -net 172.16.0.0 netmask 255.255.0.0 gw 网关地址
break
fi
done
else
echo $VPN >/dev/null
fi
第一种方法:在crontab -uroot -e中加入

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
* * * * * /bin/vpn.sh
第二种方法:vim /etc/crontab 中加入

* * * * * root run-parts /etc/cron.minutely
将脚本放到/etc/cron.minutely(cron.minutely需要新建,且有执行权限)

上面是那个链接的内容,我自己设置的是这样的

由于我不需要使用vpn作为默认的网关
我只需要检测ppp0是否存在,存在就不管,不存在就pon VPN_NAME
脚本很简单

while(true)
do

VPN=`ifconfig | grep ppp0`

if [ -z "$VPN" ]
then
echo VPN不存在,为了防止bug,先poff
poff vpn
sleep 5
echo 正在连接pon
pon vpn
sleep 10
fi

VPN_ip=`ifconfig | grep 172`

if [ -z "$VPN_ip" ]
then
echo VPN没有连接
else
echo VPN已经连接
echo
fi

sleep 1
done

然后开启一个窗口运行这个脚本
这个脚本的意思就是间隔1秒检测一次 如果没有vpn连接,则自动连接,连接以后需要10秒钟的时间来让连接建立


如果遇到路由器重启,客户端原来的连接断开了,然后客户端又建立了一个连接,IP还是172.16.36.2,但是服务器里面的连接还没有断开,就会导致服务器里面有两个连接都是客户端建立的,并且这个时候客户端是ping不通服务端的,这个时候需要在服务端手动断开已经连接的VPN
在服务端也开一个窗口执行下面的这个脚本
这个脚本写的比较粗糙,水平有限,原理非常简单,就是间隔45秒(一般我的路由器重启时间不超过45秒)ping客户端的IP3次,如果3次都没有ping通,说明客户端不在线了,就开始断开所有的VPN连接(也不是所有,0-10,我自己的VPN只有我自己用,绝对足够了)

while(true)
do

result=`ping 172.16.36.2 -c 3 | grep ttl`

if [ -z "$result" ]
then
echo VPN不存在,开始断开所有连接

/home/testvpn/kickuser.sh ppp0
/home/testvpn/kickuser.sh ppp1
/home/testvpn/kickuser.sh ppp2
/home/testvpn/kickuser.sh ppp3
/home/testvpn/kickuser.sh ppp4
/home/testvpn/kickuser.sh ppp5
/home/testvpn/kickuser.sh ppp6
/home/testvpn/kickuser.sh ppp7
/home/testvpn/kickuser.sh ppp8
/home/testvpn/kickuser.sh ppp9
/home/testvpn/kickuser.sh ppp10
else
echo 连接正常
fi

sleep 45

done












下面还有一种方法,我不确定是否可以用
http://bbs.chinaunix.net/thread-3626794-1-1.html

一直认为PPP在掉线后不能重拨。
近来为帮朋友做一个路由器,因为是农村,线路质量不好,最需要解决的就是断线重拨,在通读了一遍PPP的man后,发现是可以重拨的,最重要的是下面几个参数:

1、用ddial模式,这个网上都有,不再啰嗦。

2、
set redial 0 0

这一个是重拨时的参数,是拨号失败后的行为,而不是网上流传的控制断线重拨。第一个参数是等待多长时间再重拨;第二个参数是重拨多少次就放弃,永不再拨,设置为0则是一直重试。

3、
set reconnect 10 0

同上,这一个才是控制断线后重拨的,是检测到掉线后干什么,注意和上面参数的区别。

4、
set echoperiod 15

这一个是LCP的链路查询包,默认是30秒发一次,收到回应则表明ppp连接有效,收不到回应说明可能断线,再重试。
      以前认为不能重拨的原因就在这儿:PPP规定,要重试5次,如果5次都没有回应,则表明线路断开,执行重拨。而默认每次间隔30秒,最高6次就是3分钟,一般的测试等不及这么久的,所以还是改为15秒查询一次,一共1分半钟,基本上还可以忍受了。也可以改得更小,但是频繁的查询,会浪费一定的资源,我个人认为15秒就够了。

5、
set lqrperiod 15

同上,PPP的连接状态查询有两种方式,手册上说正常情况下会优先用LQR,而不是ECHO,虽然我测试都是用的ECHO,就是上面所说的那个,但是不保证其他地方用echo,所以两个都设上安全一些。

仅仅是个人理解,欢迎多多交流。




回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-29 15:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-30 00:27 | 显示全部楼层
设置静态IP

首先,先用客户端拨号,成功以后断开连接(不确定是否需要这样做)

然后 在服务器上/ect/ppp/chap-secrets 编辑这个文件, 最后的ip默认是*  改为你需要指定的IP

最后用这个用户拨号就是永远是你指定的IP了

注意:如果有2个客户端同时拨号同一个账号后面拨号的那个客户端虽然获取到了IP了,而且在服务器里面显示有多个连接都是通一个IP,但是后面拨号的那个客户端是不能ping通VPN服务端的


回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2016-1-31 15:17 | 显示全部楼层
本楼和地板那一楼重复了,不用看

我在使用VPN的过程中遇到一个问题
由于是家庭宽带,ADSL经常换IP
然后换了IP以后客户端重新连接VPN的时候就会出问题
服务端那边的ppp0还没有释放,你这边客户端又连接了一次造成vpn虽然连接上了但是ping不通
我的解决办法是在服务端那里也定时执行一个脚本
通过ping检查连接是否正常,如果连接不正常就暴力的删除所有连接,这样客户端重新连接的时候就没问题了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 03:13 , Processed in 0.018341 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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