如何快速搭建一个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
49 Responses to “如何快速搭建一个VPN(pptp)”
-
我有些废话你没仔细看,确实谁家的机器都可以做vpn,但是物理位置很重要,在国内的机器白搭。
-
是啊,哈哈,在国内搭了也白搭··
-
pptp 配置确实方便,但很容易被各种设备卡住,基于 IPSEC 或是 OpenVPN 的解决方案好一点儿,希望未来能看到这样的教程 :)
-
就是, 谁家都可以建VPN,
但是你用来翻墙就得找好位置了,
不然你连来连去,还是在一个院子里来回折腾. -
我重启了一下VPS,重启了一下PPTP,又设置了一下转发规则才生效。真是不容易。我现在又有另一个问题就是能不能设置每个IP的下行速度呢。
-
好像可以用tc来限制,你可以在Google上查一下,我记得看到过类似的文章。
-
请问,可不可以设置分配到的每个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
-
既然iPhone能连上,最起码说明pptpd是工作了,Gphone可能是设置的问题,你可以注意一下有关加密部分的设置。
连上不能上网,一般就是ms-dns和iptables设置。
ms-dns比较容易确认,顶多你换两个dns看看。
iptables部分你先确认下/etc/pptpd.conf里你的remoteip是什么网段的?那条命令里的ip地址是跟着这里的设置走的,别设错了。 -
博主你好,我按照你的教程架设了一个pptp,可以拨入,但是无法用其上网,DNS解析,允许上网,都设置了,最后一条命令也输入了,求助~
-
朋友。我按照你这篇文章的做法做了一个VPN,在windows系统下可以用。但是在mac os下用http://www.hebine.net/blog/archives/1167.html里面介绍的方法,总是在连上VPN后立即弹出“Internet链接: 连接被通讯设备终止。请验证您的设置,然后再试一次”,请问怎么回事?
-
加密那里放在“自动(128位或40位)”看看。
-
搞了一夜,电脑终于好通过VPN上网了,但是,iPhone可以连上VPN却无法上网,Gphone则连都连不上,好神奇啊~继续求助,谢谢
-
不知道pptp有限制单账户流量功能么?
-
pptp本身肯定是没有限制流量的功能的,因为vpn本身的设计并不是用来翻墙。
不过我看到过一些文章提到如何配合其它程序来检测控制流量,你可以搜索一下。 -
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来建立转发规则。 -
哈哈,中国的白搭。。。
谢谢您的文章啦,正在研究
-
lookupd -flushcache
-
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上都设置过,无用。
-
本地ping得到的twitter的ip是37.61.54.158,facebook是46.82.174.68,这两个ip在vps上也是ping不通的,这是不是所谓的dns污染?
我是上海闵行电信,用buffalo的无线路由上网。
-
解决了,上述两个ip确实是在黑名单的……修改本地网络里的首选dns服务器为google的就可以了。
谢谢海豚的教程,很受用。
-
解决了就好,我公司用联通线路换dns都不行。
-
谢谢海豚的教程,购买Linode并搭建pptp VPN成功。不过仍然有问题需要请教。
Linode 360,Fremont,pptpd
XP用自带网络连接工具连接VPN成功,能够连接internet,在ip38上查询ip地址显示为VPS的ip。可以访问大部分被封网站,technorati/plurk/tumblr/blogspot/picasa,但就是访问不了facebook和twitter,youtube间歇性不能访问。
>tracert http://www.twitter.com
1. 192.168.0.1
2. gateway-he-li3.linode.com [64.62.190.1]
3. gige-g4-17.core1.fmt1.he.net [72.52.92.245]
4. 10gigabitethernet1-1.core1.pao1.he.net [66.160.158.242]ping全部time out,tracert命令twitter和facebook都得到相同的结果,但ssh到vps后,可以ping通www.twitter.com,得到的ip和本地终端ping到的ip不同。本地是37.61.54.158,vps上得到的ip是168.143.162.100,貌似有好几个ip,但都ping的通。
在vps上执行
>traceroute http://www.twitter.com
1 gateway-he-li3.linode.com (64.62.190.1)
2 gige-g4-17.core1.fmt1.he.net (72.52.92.245)
3 10gigabitethernet1-1.core1.pao1.he.net (66.160.158.242)
4 sjo-bb1-link.telia.net (213.248.86.53)
5 verio-119529-sjo-bb1.telia.net (213.248.86.50)
6 ae-6.r20.snjsca04.us.bb.gin.ntt.net (129.250.5.12)
7 ae-2.r20.mlpsca01.us.bb.gin.ntt.net (129.250.5.6)
8 mg-1.c20.mlpsca01.us.da.verio.net (129.250.28.81)vps上应该是能访问twitter的,但为什么我这端就断在了he.net呢?跟pptp的设置有关?尝试过opendns,现在用的是google的dns,很奇怪。不知道海豚有没有遇到这样的问题?
-
这个问题应该是你VPS主机上的iptables里面默认为DROP,而且又没有设定ICMP数据包(ping和tracert用的数据包)为允许导致的。
-
-
强制用128行吗?默认是128连接的。
-
也不行。
window7没问题,android 2.1也没问题,iPhone也没问题,就mac os x 10.6.2不行。:( -
我也遇到和这一样的情况,改变加密方式也无法解决。请问这个问题要怎样解决?谢谢。
-
[…] 如何快速搭建一个VPN(pptp) […]
-
在Vps上建VPN,debian和ubuntu有什么区别吗?
-
没有ip怎么用???
-
在Xen上搭建成功,电脑可以正常使用,但是iPod Touch无法连接,老是显示:连接被通讯设备终止
请问该如何解决
-
您好,首先谢谢您的服务.我想问我可以在公共网络里自己搭建私有的VPN吗?
(我是租房子的,我们一栋楼用一个网络,我的本抢不过别人的网,在高峰期连QQ都不稳定,我可以不通过房东以及他人,自己建立我的VPN吗?谢谢!我对这方面很不懂,望指教,谢谢!)
-
@kDolphin 谢谢海豚 这则教程帮助了我 改善生活 哈哈
-
囧 没打完字 就发表了 想更正一个问题 openvz 现在也可以pptp了
-
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
No chain/target/match by that name
按你这么说,谁家的机器只要能上网都可以自己搞vpn?
那不就是说,以后人人都可以自己搞vpn,都可以随意翻墙了?还不用四处找free vpn?
我们家mac也可以??