如何快速搭建一个VPN(pptp)
这是一个简短的教程,目的是为了快速搭建一个可用的VPN,本文并不涉及有关VPN的正常使用内容。本简短教程基于以下硬件条件:
- 一台安装了Debian GNU/Linux 5.0的VPS。
- 当然理论上所有可以安装pptpd包的*nix系统都可以作为主机,教程中安装方式是基于Debian的apt-get命令,其他发行版请自行对照使用。
- 这台VPS的物理位置是Fremont, CA。
- 物理位置作为VPN这个应用本身并不重要,在这里提出只是多此一举。
安装服务器端软件
# apt-get install pptpd
Debian的包管理是所有发行版里最好的,所以这条命令打完就安装完毕了我们的pptp服务器端程序。
配置IP地址范围
编辑/etc/pptpd.conf,在最后添加如下地址:
localip 192.168.0.1 remoteip 192.168.0.234-238,192.168.0.245
这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。
增加一个用户
编辑/etc/ppp/chap-secrets,在下面增加类似的条目:
username pptpd password *
上面内容很好理解,最后那个星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。
重启pptpd服务
# /etc/init.d/pptpd restart
理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上,而不会传入拨入的计算机设备上。要上Internet还需要这么干:
dns解析支持
编辑:/etc/ppp/options,在里面找一下“ms-dns”项目:
ms-dns 208.67.222.222 ms-dns 208.67.220.220
我填写的是OpenDNS的地址,当然你也可以填写电信的DNS。
允许转发
编辑/etc/sysctl.conf,看一下net.ipv4.ip_forward参数是不是1。
net.ipv4.ip_forward=1
最后的最后,运行一下这条命令来打开iptables的转发支持:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
注意:来自@LEMONed的消息,只有Xen的VPS可以搭建pptp,OpenVZ的不行。
引用来自@LEMONed的话:
因为openvz下只有venet0,没有eth0,而绝大多数的vps都是openvz的,然后绝大多数的openvz vps都没有masqurade,只能搭建openvpn并且要自签证书什么的,根本不能用pptpd。我为了给iphone搭个vpn曾经把这个研究透彻了
看来过几天我得再写一份搭openvpn的教程。
这里有个如何在openvz下搭建OpenVpn的教程:OpenVZ VPS安装配置OpenVPN
Comments
pptp 配置确实方便,但很容易被各种设备卡住,基于 IPSEC 或是 OpenVPN 的解决方案好一点儿,希望未来能看到这样的教程 :)
按你这么说,谁家的机器只要能上网都可以自己搞vpn?
那不就是说,以后人人都可以自己搞vpn,都可以随意翻墙了?还不用四处找free vpn?
我们家mac也可以??
我有些废话你没仔细看,确实谁家的机器都可以做vpn,但是物理位置很重要,在国内的机器白搭。
哈哈,中国的白搭。。。
谢谢您的文章啦,正在研究
就是, 谁家都可以建VPN,
但是你用来翻墙就得找好位置了,
不然你连来连去,还是在一个院子里来回折腾.
是啊,哈哈,在国内搭了也白搭··
朋友。我按照你这篇文章的做法做了一个VPN,在windows系统下可以用。但是在mac os下用http://www.hebine.net/blog/archives/1167.html里面介绍的方法,总是在连上VPN后立即弹出“Internet链接: 连接被通讯设备终止。请验证您的设置,然后再试一次”,请问怎么回事?
加密那里放在“自动(128位或40位)”看看。
博主你好,我按照你的教程架设了一个pptp,可以拨入,但是无法用其上网,DNS解析,允许上网,都设置了,最后一条命令也输入了,求助~
搞了一夜,电脑终于好通过VPN上网了,但是,iPhone可以连上VPN却无法上网,Gphone则连都连不上,好神奇啊~继续求助,谢谢
既然iPhone能连上,最起码说明pptpd是工作了,Gphone可能是设置的问题,你可以注意一下有关加密部分的设置。
连上不能上网,一般就是ms-dns和iptables设置。
ms-dns比较容易确认,顶多你换两个dns看看。
iptables部分你先确认下/etc/pptpd.conf里你的remoteip是什么网段的?那条命令里的ip地址是跟着这里的设置走的,别设错了。
收到,我研究下在centos下怎么搭建VPN
71257:/sbin# service iptables start
service: no such service iptables
这个是什么原因?
能连上无法访问,我觉得/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE这句话根本没有起作用
允许转发这一步改完之后,要用下面命令才能生效的。在这一步我卡了好久。
sysctl -p
我重启了一下VPS,重启了一下PPTP,又设置了一下转发规则才生效。真是不容易。我现在又有另一个问题就是能不能设置每个IP的下行速度呢。
请问,可不可以设置分配到的每个IP的下行速度。
好像可以用tc来限制,你可以在Google上查一下,我记得看到过类似的文章。
pptp终于连接成功。不过就是打不开网站(无论是否被封),不知问题出在哪里?我查看vpn连接窗口的常规,看到:
“IPV4 连接: 受限的”
ip获取正常吗?iptables是否运行过?dns是否设置?
ip获取正常。iptables命令也运行过。dns也设置了
net.ipv4.ip_forward=1 这个设置了吗?
如果还不行,你查看一下你的VPS是什么模式的?XEN还是openvz,我文章末尾有相关的补充内容。
谢谢你的文章,我现在已经配置好VPN可以上网了。
不过有个问题,最后那条设置iptables的语句每次重启服务器后都要再打一次,否则就不能上网,不知道有什么方法解决这个问题?
另外,我的ubuntu本来没有iptables的,那个时候连接VPN后不能上网,安装iptables并配置后才能上网。但是iptables不是防火墙吗?为什么没有的时候反而还不能上网呢?
你可以把那条语句写入crontab或者写到cron.d,随便哪里的开机启动项就行。
因为vpn本质上是为了远程加入某个局域网而存在的,所以需要iptables来建立转发规则。
不知道pptp有限制单账户流量功能么?
pptp本身肯定是没有限制流量的功能的,因为vpn本身的设计并不是用来翻墙。
不过我看到过一些文章提到如何配合其它程序来检测控制流量,你可以搜索一下。
Hi,非常感谢你的文章,设置成功。
不过我有一个问题,我在办公室的mac电脑可以正常使用vpn,家里的mac就不行(是两台mac)。
家里的mac表现为可以连接上vpn,可以正常解析域名(比如 g.cn 可以自动解析到 google.cn,bit.ly/aaa 可以成功变成 aaa.com)但是无法打开网页。 不过很奇怪的是,没有域名只有ip的网站可以打开,比如 1.2.3.4 可以打开,但是 1.2.3.4/bt/ 这样的就打不开了。 然后 skype 可以上。总之就是很郁闷啊。请问你见过此类情况吗?
我觉得可能和dns有关,你清空本地dns缓存看看,另外手动设置下mac上的dns到8.8.8.8。
请问怎么清空本地dns?dns我已经设置到google的,同时在路由器和mac上都设置过,无用。
lookupd -flushcache
Post new comment