手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表全部文章

单网卡 Ubuntu 服务器打造 PPTP Server(VPN)

虽然转载,但并未成功,只是为了防止以后再也找不到类似资料做个备份。

其实作者写的挺详细了,只是我明明设置了RemoteIP,但却无法正确的获取。不知道是否因为是VPS的关系。当然也或许我太笨吧。先转了再说

原文如下,如看原文点击这里

自从实验室放了台 Linux 服务器后,可玩的东西就越来越多了。虽然这台服务器主要的工作是 Web Server,但鉴于我们那小站压力非常之小,服务器资源绝大多数还是浪费着,所以让它多干些活是个不错的选择。实验室的内部网络中有不少非常有用的资 源,例如科研用的文献资料,个人的实验数据等等,这些内容一旦离开实验室就不那么容易访问到了。解决这个问题最好的办法就是 VPN。在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。其中 OpenVPN 在 Windows/Mac 平台上还需要额外的客户端。而 L2TP/IPSec 方式虽然比较好,但我配置后,虽然 Windows 和 Linux 用户没有问题,但 Mac/iPhone 却始终无法连上,所以暂时删掉了,日后搞清楚是什么问题再换到这种方式。

只剩下 PPTP 了。事实上 PPTP 是这三者中配置最容易的方式,而且由于 Windows/Mac 系统中都内建相应的客户端,使用起来非常方便。下面我就简单写写我的安装过程,希望对需要的朋友有用。当然如果您有什么高见,也欢迎您提出。

首先,我所有的操作都是在之前文章中介绍的 Ubuntu 8.04 Server 系统中操作的,如果您的系统和我的不一样,请参考之前的两篇文章。我的服务器环境是单网卡 eth0。

在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装:

sudo apt-get install pptpd

系统会自动解决依赖关系,安装好后,需要进行一番设置。首先编辑 /etc/pptpd.conf

sudo nano /etc/pptpd.conf

去掉文件最末端的 localip 和 remoteip 两个参数的注释,并进行相应修改。这里,localip 是 VPN 连通后服务器的 ip 地址,而 remoteip 则是客户端的可分配 ip 地址。下面是我的配置:

localip 10.100.0.1
remoteip 10.100.0.2-10

编辑好这个文件后,我们需要编辑 /etc/ppp/pptpd-options 文件,还是用 nano 编辑,命令这里就不写了。这里绝大多数参数只需维持原来的默认值即可,我们只需要改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:

ms-dns 202.113.16.10
ms-dns 208.67.222.222

修改 /etc/ppp/chap-secrets 文件,这里面存放着 VPN 的用户名和密码,根据你的实际情况填写即可。如文件中注释所示,第一列是用户名,第二列是服务器名(默认写 pptpd 即可,如果在 pptpd-options 文件中更改过的话,注意这里保持一致),第三列是密码,第四列是 IP 限制(不做限制写 * 即可)。这里就不贴我的配置了 :)

全部搞定后,我们需要重启 pptpd 服务使新配置生效:

sudo /etc/init.d/pptpd restart

找一台 Windows 电脑,新建个 VPN 链接,地址填服务器的 IP(或域名),用户名密码填刚才设置好的,域那项空着(如果你在 pptpd-options 中设置了,这里就保持一致),点连接就可以了。正常情况下您应该能够建立与服务器的 VPN 链接了。

建立连接之后,您会发现除了可以访问服务器的资源,其余内外和互联网的内容均无法访问。如果需要访问这些内容的话,我们还需要进一步设置:

首先,开启 ipv4 forward。方法是,修改 /etc/sysctl.conf,找到类似下面的行并取消它们的注释:

net.ipv4.ip_forward=1

然后使新配置生效:

sudo sysctl -p

有些时候,经过这样设置,客户端机器就可以上网了(我在虚拟机上这样操作后就可以了)。但我在实验室的服务器上这样操作后仍然无法访问网络,这样我们就需要建立一个 NAT。这里我们使用强大的 iptables 来建立 NAT。首先,先安装 iptables:

sudo apt-get intall iptables

装好后,我们向 nat 表中加入一条规则:

sudo iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE

这样操作后,客户端机器应该就可以上网了。

但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:

sudo iptables-save > /etc/iptables-rules

然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:

pre-up iptables-restore < /etc/iptables-rules

这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。

到此,一个 VPN Server/Gateway 基本就算架设完毕。当然,也许你按照我的方法做了,还是无法成功,那么下面总结一些我碰到的问题和解决方案:

无法建立 VPN 连接

安装好 pptpd 并设置后,客户端还是无法建立到服务器的连接。造成的原因可能有以下几种:

  1. 服务器端的防火墙设置:PPTP 服务需要使用 1723(tcp) 端口和 gre 协议,因此请确保您的防火墙设置允许这两者通行。
  2. 如果服务器在路由器后面,请确保路由器上做好相应的设置和端口转发。
  3. 如果服务器在路由器后面,那么请确保你的服务器支持 VPN Passthrough。
  4. 如果客户端在路由器后面,那么客户端所使用的路由器也必须支持 VPN Passthrough。其实市面上稍微好点的路由器都是支持 VPN Passthrough 的,当然也不排除那些最最最便宜的便宜货确实不支持。当然,如果你的路由器可以刷 DD-Wrt 的话就刷上吧,DD-Wrt 是支持的。

能建立链接,但“几乎”无法访问互联网

这里我使用“几乎”这个词,是因为并不是完全不能访问互联网。 症状为,打开 Google 搜索没问题,但其它网站均无法打开;SSH 可用,但 scp 不行;ftp 能握手,但传不了文件。我就遇到了这种情况,仔细 Google 后发现原来是 MTU 的问题,用 ping 探测了一下果然是包过大了。知道问题就好办了,我们可以通过 iptables 来修正这一问题。具体原理就不讲了,需要的自己 Google。这里只说解决方案,在 filter 表中添加下面的规则:

sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN
-j TCPMSS --set-mss 1200

上面规则中的 1200 可以根据你的实际情况修改,为了保证最好的网络性能,这个值应该不断修改,直至能保证网络正常使用情况下的最大值。

好了,至此,一台单网卡 pptp-server 就算完成了。

----EOF---

后记:好象有很多类似的文章,前面几段都差不多的。

比如这里:

1、http://blog.sina.com.cn/s/blog_49cd61e70100cbph.html

2、http://hi.baidu.com/wangshuxun25/blog/item/b37779f04deae4a7a50f5231.html ,这个是用的shorewall防火墙,上面两篇都是用iptables的

继续后记:

已经可以了。哈哈。还是我没有配置好的原因。oh yeah ...

Tags: vpn

突然间的高烧

很意外的,突然间就高烧了。39度,但反而却是感觉到冷。下午去挂了号,查下来发现白血球增高了。病毒性高烧?呵呵。身体一下子不舒服了。

坚持到晚上终于不行。不过还好,挺过来了。昨天就没有更新博客了。

随便说说最近的事情:

1、jQuery发布1.4版本

2、谷歌说要退出中国

3、百度股价上价近20%

4、google放出android 2.1的SDK

5、淘宝出手机了。。。

其它就不太关心了

关于阿凡达,也有很多事情值得谈谈,褒贬不一的片子,不过相对于大场面,我还是很佩服的。好象说花絮里说卡梅隆为了这部片子等了将近10年时间。相对于国内的浮躁,估计没有人会愿意等上10年吧?

乱谈,毕竟自己在发高烧。哈哈

jQuery1.4正式版发布

每天看CB,总有新发现。这不,jQuery 1.4发布又是从他们网上看来的。每天多看评论总会找到一些新的乐趣。
比如,百度的一些关键词之类的。偶尔也能让自己为新奇的SEO方法找到一点窍门。

乱弹,乱弹,上主菜:

在jQuery的4岁生日之时,jQuery开发团队很高兴地发布最新的jQuery1.4版本!其他的代码演示、测试、文档的更新也会陆续进行更 新发 布。对于jQuery发烧友来说,jQuery1.4的发布也是一个大新闻!下面是来自于jQuery的官方网站翻译(英语高手请勿拍砖!): 在jQuery的4岁生日之时,jQuery开发团队很高兴地发布最新的jQuery1.4版本!其他的代码演示、测试、文档的更新也会陆续进行更新发 布。

jQuery Minified (23kb Gzipped)
jQuery Regular (154kb)

此外,谷歌已经提供了jQuery1.4副本,jquery团队上传到了Google服务器托管服务中。这jQuery1.4的版本是自动minified和gzip 的,地址为:
http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js

jquery1.4所有的变化和功能添加到jQuery1.4文档中。

--EOF--

看到jQuery又添加了这么多的新功能,实在为自己的行为感到惭愧,一直在用它,却从未为他做过贡献。

新闻来源:http://www.cnbeta.com/articles/102208.htm

让我郁闷的THinkSNS权限管理

使用ThinkSNS进行管理里。发现后台可以对用户组进行权限设定。于是乎,设定了一些菜单的权限。而且设定功能感觉也很强劲,因为可以设定子菜单是否可以访问呢。然而让人郁闷的却是,系统根本没有调用过这些权限。也就是说,你全部白设定了。
靠。太让人郁闷了。没完成你别放出来嘛。。。心都凉了。

顺便再说一个小BUG,UserSearch里如果要加入新的元素,你必须是这个元素为4个值的数组,即下标从0~4,如果ONLY第2个元素,你根本插不进数据库。【不多解释,如果增加内容到UserSearch里的人一定会注意到这个小BUG。。。。】

thinkSNS 一些BUG列表

thinkSNS在最近的一段时间开发中,发现了不少BUG。。。没办法,谁让要用他的呢?

1、blog删除后跳转代码为redirect('index'),i应该大写,否则会报页面不存在的错误。
2、一些widget放在<inlucde footer>[<-左侧是伪代码]后面,导致有时候不能解析。好奇怪。。。有时候能够解析。
3、后台权限管理不正常,明明只选了一些简单的权限,但却多了一些不该有的权限。【准备改了,个人站点应该遇不到。毕竟就一个管理员】
4、如果后台把游客查看博客的权限打开,在前台反而会出错,因为博客页有评论,而读取评论列表时需要登录 。

其他一些未知BUG随着开发会越来越多。。有时候发现,thinksns作者是不是有点太粗心了?

不过。期望能够看到小游戏插件。黑黑,对分数排名很喜欢。