XEN VPS (Linux) – Ubuntu/Debian 安装pptpd VPN

   Posted by: 等待一生   in Web Server

之前介绍过Centos(Linode)上安装pptpd VPN,如今换了Ubuntu 9.10,之前的方法不是很好用了。幸好在网站找到了同样是Linode Ubuntu 9.10的用户所写的VPN介绍,转来之前已经测试过,完全可以。

 

首先,你要确保自己的vps已经按照Getting Started With Linode这篇文章做好了初步的准备工作。对安装VPN而言,需要注意的就是设置好更新源。编辑你的/etc/apt/sources.list文件,去掉"##universe repositories"之后所有行的注释,让文件变成和下面的一样。当然,这一步需要用sudo或者在root下来完成,后面所有的命令都是如此。

## main & restricted repositories
deb http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic main restricted

deb http://security.ubuntu.com/ubuntu karmic-security main restricted
deb-src http://security.ubuntu.com/ubuntu karmic-security main restricted

## universe repositories
deb http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe

deb http://security.ubuntu.com/ubuntu karmic-security universe
deb-src http://security.ubuntu.com/ubuntu karmic-security universe

接着用下面的命令更新你的软件包数据库

apt-get update

现在我们可以正式安装VPN server了。这里我们选择pptp(vpn 协议的一种),因为简单,一条命令搞定。剩下的无非是一些配置。

apt-get install pptpd

pptpd安装完成后,编辑/etc/pptpd.conf文件,去掉下面两行的注释或者直接添加这两行(在文件的最后)。这一步是配置ip地址的范围。

localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

然后在/etc/ppp/chap-secrets文件中添加vpn用户,按照下面的格式,每个用户一行。

username pptpd password *

为了让你的用户连上VPN后能够正常地解析域名,我们需要手动设置DNS. 编辑/etc/ppp/options,找到ms-dns这一项,设置你的DNS.这里我推荐的是Google 最近发布的Public DNS,原因是因为好记。

ms-dns 8.8.8.8
ms-dns 8.8.4.4

编辑/etc/sysctl.conf文件,找到”net.ipv4.ip_forward=1″这一行,去掉前面的注释。

net.ipv4.ip_forward=1

运行下面的命令让配置生效。

sysctl -p

重启pptpd服务

/etc/init.d/pptpd restart

最后开启iptables转发

/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

 

好了,安装完毕,赶快适用VPN连接吧~VPN在手~万事不愁~~~

找一台 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 就算完成了。

原文地址:http://www.silentstreet.net/archives/xen-vps-linux-ubuntu-debian-install-pptp-vpn/comment-page-1/#comment-3081

后半部分原文链接**花儿开了单网卡 Ubuntu 服务器打造 PPTP Server

发表评论