您的位置: Zeddicus Blog vpn

PPTP/L2TP VPN个别网站无法访问的解决方法

最近较忙,所以不多说,直达主题。使用基于PPTP/L2TP的VPN时,有时候会出现个别网站无法访问的情况,出现这种情况应该考虑以下两个问题:

1.DNS劫持

首先确定,PPTPD/L2TP的配置文件当中,是否启用了MS-DNS并且使用了“强外”的DNS,如8.8.8.8/8.8.4.4

其次,查看本地的VPN连接,是否使用了“强外”的DNS地址,如8.8.8.8/8.8.4.4

再次,确定路由器是否使用了“强外”的DNS地址,如8.8.8.8/8.8.4.4

以上三处,建议使用“强外”的DNS,如果使用“强内”的,有可能被劫持

2.TCPMSS大小

如果上述的DNS均无问题,则是TCP MSS大小的问题,此问题极易解决,只需在服务器运行以下指令:

  1. /sbin/iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356
/sbin/iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356

注意,是服务器端,也就是VPN服务器,如果你无权访问,请找供应商解决。

最后我还是,严谨一些,如果你访问的网站被拔线、根本不存在、出现软件/硬件故障或者遭遇断电、检修、2012等因素,也会导致无法访问。

不建议这样凸出去

  不知道从什么时候开始,包括我在内的,购买VPS的人越来越多,原因似乎是:一来低价VPS越来越多;二来VPS相关文献数量也不断增长,并且连我这种人都看得懂,基本上属于是傻瓜化了;再有VPS支付途径也越来越便捷。同时,我身边有太多太多的朋友开始使用这样一种方案:一台VPS,WEB环境是Nginx+PHP+Mysql(LNMP能耗小,效率高,备受推崇),配个VPN,再加上原生的SSH,开始过着一种看似十分安逸且与世无争的生活。闲暇之余,他们还给朋友们放些VPN/SSH的号,或者直接开卖这些号,以求平衡VPS的支出。但这里头或许有这么一个问题:这种方案有什么风险?

  我认为风险是:

你或者你的朋友(其他ssh/vpn用户)属于愤青,或者突然发神经般的手贱,在网上溜自己的过程中发了一些不应该发的东西,导致IP被X。IP被X导致:1-自己凸不出去;2-付费用户凸不出去;3-自己的网站访问不了。4-需要花钱购买新的IP并更换。其中,付费用户凸不出去,如果不及时采取措施,又导致退款。如果不退款,必然被唱衰。

或者

你就是一个愤青,你的网站也是个愤网,上面有些不该有的东西,导致网站被X,网站被X首先是IP被X。IP被X导致:1-自己凸不出去;2-付费用户凸不出去;3-自己的网站访问不了。4-需要花钱购买新的IP并更换。其中,付费用户凸不出去,如果不及时采取措施,又导致退款。如果不退款,必然被唱衰。此时有个更严重的事情,网站被X后,更换IP后网站再次被X的几率是被X之前的几百亿倍。于是,更换IP所需的费用就直接拖垮了你。

  额,好像有点YY的成分。睡了~

一键添加及删除路由表脚本

  首先感谢 Jet 告知,同时感谢 DNSPOD 提供国内IP段列表。

  此脚本与10年4月27日制作,一直没有时间发上来。说明一下,无论使用 OpenVPN 还是 PPTP 抑或 L2TP,此脚本均适用(WINDOWS ONLY,需要MAC版的找 Jet )。主要用于解决以下问题:

  1. 国内流量与国外流量分流,缓解流量压力。
  2. 访问国内网站无需经VPN回流,提高访问速度。

  感谢 Microsoft 提供储存空间:http://cid-10b6b84499b112f8.skydrive.live.com/self.aspx/.Public/BlogFiles/route%5E_add.zip

  压缩包内共2个文件,分别是 dyroute.bat 以及 dlroute.bat,解压后切勿直接运行请把文件内的网关地址修改成自己的路由器地址,默认网关地址是10.0.1.1。如果你的路由器是192.168.1.1,则编辑这2个文件,把10.0.1.1替换成192.168.1.1即可。需要添加路由表时运行dyroute.bat,需要删除则运行dlroute.bat。需要注意的是,添加路由表后,电脑重启则无效,需要重新运行dyroute.bat,这么做是为了方便本本。如果你使用的是台式机,或者虽然使用本本,但基本不怎么换网络环境的话,可以修改dyroute.bat,然后把“route add”替换成“route add -p”保存并运行即可。

  另附DNSPOD国内IP段列表:http://www.dnspod.com/misc/iplist.txt,供有兴趣折腾的朋友把玩。哦还有,由于没有技术含量,所以就不提供“技术支持”了,而且版权没有,可随意修改及转载。

RasHost之Centos+PPTP+Freeradius+Mysql全自动VPN配置

  首先,必须感谢 RasHost 的客服们,在这几天里面,帮我Rebuild了无数次。
  其次,我还必须感谢 badb0y 大侠,在我配置VPS的过程中,给予我许多帮助。
  本文只能说是一篇文章,而并不是所谓的“教程”,因为本文讲述的,完全是这几天,我总结的经验教训。本文的主要内容是,在Centos上,使用 badb0y 大侠的AutoVPN一键安装包,配置基于PPTP的VPN。需要注意的是,由于每个VPS服务商编译的初始系统都有一些不同之处,所以本文,只适合 RasHost 用户,其他VPS服务商本人并没有测试。

目的:

  在VPS上配置VPN,并使用freeradius进行用户管理。

基础环境:

  1. RasHost 美国VPS-VL256型(128M的内存有点拮据,建议使用256M内存的,机房建议用硅谷数据中心的。)
  2. CentOS 5.3(Final) x86(本测试基于32位CentOS 5.3 Final)

配置步骤:

1.下载 badb0y 大侠的AutoVPN-1.0.0

  这是我无意中发现的一个自动配置方案,由 badb0y 大侠提供,发布页位于Google Code,>>点此进入<<

2.将AutoVPN-1.0.0上传至VPS

  这里的基础条件是您拥有一台自己的VPS,建议大家到 RasHost 购买VL256型,机房选择“硅谷数据中心”。上传方法我不多说了,最方便的方法是把这个安装包下载下来以后,上传到一个网站上去,然后在登录VPS的ssh以后,使用wget获取。当然也可以选择比较麻烦的方法,就是先在VPS上配置个FTP。(其实也可以使用SCP在本地UPLOAD,不过我没试过,在此就不谈了。)

3.解压AutoVPN-1.0.0.tar.gz

  在配置过程中,我把AutoVPN-1.0.0.tar.gz放在我的一个网站上面,然后WGET,保存于/tmp目录。具体操作如下:

cd /tmp
wget http://zhaiweb.com/AutoVPN-1.0.0.tar.gz
tar -zxvf AutoVPN-1.0.0.tar.gz

4.打开autovpn文件

  在第三步,我在/tmp目录解压了AutoVPN-1.0.0.tar.gz,接着,/tmp目录将会出现AutoVPN-1.0.0这个目录,我们进入这个目录,并且编辑autovpn这个文件。具体操作如下:

cd AutoVPN-1.0.0
vim autovpn

对于不熟悉vim的朋友,在这里提醒一下,vim之后,如果要进入编辑模式,要按”i”键。退出的时候,如果要保存退出的话,先按”ESC”,然后按”Shift+:”,然后输入”wq”,回车。

5.编辑autovpn中的默认配置

  来到第120行和121行,将这两行的第一个字符,即”#”号去掉。

  修改第121行的”192.168.10.0/24″,为你需要的IP段。比方说,我喜欢”192.168.0.0/24″,因为我本地网络内网的网段是”10.0.0.0/24″,这两个网段最好别重合~

  修改第121行的”999.999.999.999″,修改成你的VPS的独立IP地址,为外网IP,比方说:211.162.78.2。

  保存退出(先按”ESC”,然后”Shift+:”,最后输入”wq”并回车)

以上两个修改十分重要!必须记住,否则最后配置完毕有可能无法上网!

6.为autovpn提供执行权限

chmod +x autovpn

7.安装需要的库和组件

  RasHost为我们安装的Centos是最简的版本,很纯净,但是AutoVPN安装过程需要编译环境,同时,我们要编译的程序,又需要其他的组件配合,因此我们必须给系统打个补丁。具体操作如下:

  首先,执行:

yum -y install patch make gcc gcc-c++ libtool libtool-libs autoconf libjpeg libjpeg-devel libpng libpng-devel
yum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel
yum -y install bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5
yum -y install krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap
yum -y install openldap-clients openldap-servers

  其次,在安装完上述组件后,执行:

yum -y install ppp iptables

  此时最好reboot一下(由于我用的是128M的,内存十分拮据,在进行上述操作后,”free -m”一看,内存剩下10M),reboot完毕进入第8步。

8.执行autovpn

cd /tmp/AutoVPN-1.0.0
./autovpn

  此时,脚本会提示你输入”LocalIP”,这个LocalIP就是你VPS的IP地址,跟本文第5步提到的一样,必须完全一样。

  输入完”LocalIP”以后,要输入内网网段,这是分配给连入VPN的每个用户的。如192.168.0.100-200,这里要跟本文第5步相对应。

  输入完毕,提示“Press Any Key to Start”,激动人心的时刻到来,直接回车,安装开始!

9.安装完毕,保存iptables设置

service iptables save

10.重启VPS

  重启后,执行/start.sh脚本:

./start.sh

  此时可以使用默认的admin/admin123账户密码登入你的VPN了!

11.上传AutoVPN附带的WEB管理客户端到任意支持PHP的主机

  AutoVPN附带了一个WEB管理客户端,可以在线添加、删除用户,或者修改密码等,详细情况请参考AutoVPN压缩包内的帮助文件。

  最后,再次感谢 RasHost 的客服!并推荐各位使用 RasHost 的VPS服务!

点此:通过我的推荐链接访问 RasHost 并购买相关产品(我将得到5%的提成)

点此:直接访问 RasHost (不给我提成)

架设属于自己的VPN

  今天终于鼓起勇气,购买了 RasHost 的VPS,并且配置了PPTP的VPN。虽然一个月68元的费用让我有点拮据,但是我的体验升级了,以前要用FoxyProxy+FireFox+SSH,而现在任何一个浏览器都可以搞定。

  参考了《如何快速搭建一个VPN》,或许因为我是新手,这篇教程的步骤,对于我来说,是有遗漏的,现在补上。需要补充的内容是:

  在执行/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE后,必须执行:sysctl -p,否则转发不生效。