首先是L2TP的,来自http://www.kukaka.org/home/content/640
如之前所说,PPTP 类的 VPN 可以在 iPhone 手机上使用,但是不能在 Mac OS X 电脑系统上使用,于是,我需要使用 L2TP/IPSec (L2TP over IPSec,即在 IPSec 上搭建 L2TP) 类的 VPN。
这篇文章将介绍如何在 VPS (Xen)上搭建 L2TP/IPSec 类的 VPN,而你只需要一个 VPS 和一台可以上网的电脑。和 PPTP 的一样,L2TP/IPSec 的操作步骤也是基于 Mac 电脑的终端应用程序,对 Linux 系统来讲,步骤几乎是一模一样的,而对 Windows 用户来讲,则需要先安装一个叫 Putty 的软件。
顺便提一下,Xen VPS 的 Ubuntu 系统最好使用 11.04 版本的,因为其他较低的版本(例如 10.04)很可能不行。
I、连接 VPS
打开终端应用程序并输入以下命令:
记得将 “xxx.xxx.xxx.xxx” 替换成 VPS 的 IP 地址,例如 “178.18.17.30”,然后回车就可以了。
P.S.:
如果在连接的过程中遇到问题,可以参考之前的 PPTP 教程。
II、安装 OpenSwan
虽然你可以通过输入 “aptitude install openswan” 命令直接安装 OpenSwan,但根据我分别在两个不同的 VPS 上测试的结果,这种方法已经无效,所以,最好还是直接从 OpenSwan 官方网站下载再安装,具体方法如下:
1、输入以下命令:
aptitude install build-essential
回车,输入 “y”,再回车。
2、输入以下命令:
aptitude install libgmp3-dev gawk flex bison
回车,输入 “y”,再回车。
3、输入以下命令:
wget http://www.openswan.org/download/openswan-2.6.35.tar.gz
回车。
4、输入以下命令:
tar xzvf openswan-2.6.35.tar.gz
回车。
5、输入以下命令:
cd openswan-2.6.35
回车。
6、输入以下命令:
make programs
回车。
7、输入以下命令:
make install
回车。到此,OpenSwan 就安装成功了。
备注:
a、2.6.35 是目前最新的版本,将来你可以访问 OpenSwan 官方网站看看有没有更新的版本,如有,不妨尝试一下。
b、文章中的所有命令都可以直接复制粘贴到终端应用程序。
III、编辑 IPSec
OpenSwan 是用来建 IPSec 的,而 IPSec 是用来建 L2TP 的。
1、输入以下命令:
vi /etc/ipsec.conf
回车,输入 “dG” 删除所有内容,按 “i” 键,然后复制并粘贴以下内容:
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
oe=off
protostack=netkey
conn %default
forceencaps=yes
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.VPS.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
记得将 YOUR.VPS.IP.ADDRESS 替换成自己 VPS 的 IP 地址,例如 178.18.17.30。替换方法如下:
按下”ESC” 键退出插入模式,将光标移到 “Y” 字母上,接着按下 “i” 键,输入 IP 地址,再按一下 “ESC” 键,并将光标移到 “YOUR.VPS.IP.ADDRESS” 上,然后按下 “x” 键把它们全部删除。或者你可以先把内容粘贴到记事本之类的编辑器上并修改好之后再复制粘贴到终端应用程序。
完了之后,输入 “:wq” 并回车保存所做的修改。
备注:
在 Vi 编辑模式下,你需要按 “i” 才能插入内容,完了之后,要按 “ESC” 退出插入模式和保存。
2、输入以下命令:
vi /etc/ipsec.secrets
回车,按 “i” 键并输入以下内容:
YOUR.VPS.IP.ADDRESS %any: PSK “YourSharedSecret”
例如:
178.18.17.30 %any: PSK “123456abcdef”
(小技巧:你需要按 Tab 键创建不同数值之间的空格。)
按 “ESC” 键,输入 “:wq”,再回车保存。
3、一行一行地输入以下命令:
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
每一行都要回车。
4、输入以下命令:
service ipsec restart
回车。
备注:
输入 “ipsec verify”,回车,如果一切正确,你将会看到如下图所示的结果:
如果不是,则需要重新检查之前的操作步骤,特别是 “ipsec.conf” 的内容。
IV、安装 L2TP
基于 IPSec 的 L2TP 就是 VPN 了。
1、输入以下命令:
cd ..
回车以便进入 VPS 根目录。
2、输入以下命令:
aptitude install xl2tpd
回车,输入 “y”,再回车。
3、输入以下命令:
vi /etc/xl2tpd/xl2tpd.conf
回车,输入 “dG” 删除所有的内容,按下 “i” 键,然后粘贴以下内容:
[global]
; listen-addr = 192.168.1.98
[lns default]
ip range = 10.1.1.2-10.1.1.255
local ip = 10.1.1.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
按下 “ESC” 键,输入 “:wq”,并回车保存。
V、创建 xl2tpd
这里假设你的 VPS 已经支持 PPP,如果没有,先输入 “aptitude install ppp” 命令安装 PPP。
1、输入以下命令:
vi /etc/ppp/options.xl2tpd
回车,按下 “i” 键,然后粘贴以下内容:
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
按下 “ESC” 键,输入 “:wq”,并回车保存。
备注:
你可以将 8.8.8.8 和 8.8.4.4 替换成 208.67.222.222 和 208.67.220.220。
2、输入以下命令:
vi /etc/ppp/chap-secrets
回车,按下 “i” 键,并输入如下内容:
username l2tpd password *
例如:
freenuts l2tpd 123456 *
记得用 “tab” 键输入空格,用 “:wq” 保存文件。
3、输入以下命令:
service xl2tpd restart
回车。
VI、IP 转发
这个步骤将使你的 VPN 连接整个互联网。
1、输入以下命令:
vi /etc/sysctl.conf
回车,找到 “#net.ipv4.ip_forward=1” 这一行,接着按 “x” 键删除 “#” 号,然后输入 “:wq” 保存。
2、使转发生效:
sysctl -p
回车,如果一切正常,你将会只看到以下结果:
net.ipv4.ip_forward = 1
3、输入以下命令:
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
回车之后,你就可以连接自己的 L2TP/IPSec VPN 翻墙了,但是如果你重启 VPS 的话,就需要重新执行一次 iptables 命令,并重启 ipsec,为了避免这些,你只需要输入以下命令:
vi /etc/rc.local
并在 “exit 0” 这一行之前粘贴以下内容就可以了:
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
/etc/init.d/ipsec restart
完了之后,你就可以尽情地享用自己搭建的 L2TP/IPSec VPN 了。
额外收获:
以下是根据上面的教程在 2host 的 Xen VPS 上搭建的 L2TP/IPSec VPN:
Server Address: 178.18.17.30
Account Name: freenuts
Password: 123456
Shared Secret: 123456abcdef
这个 VPN 帐号会免费大概半个月,你可以参考这篇文章 在电脑或者手机上试用。
=====================================================
然后是PPTP的(这种方便一些)
在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这里介绍一下pptp的安装配置方法。
服务器环境是单网卡 eth0。
在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装:
sudo apt-get pptpd
安装好后,首先编辑 /etc/pptpd.conf
sudo vi /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 文件,我们只需要改变其中的 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 就算完成了。
这篇来自http://www.study365.org/linux/30.html
=====================================================
附加教程:
One reply on “如何在 VPS 上搭建 PPTP/L2TP VPN 简易教程”
root@Test:~# wget http://www.openswan.org/download/openswan-2.6.35.tar.gz
URL transformed to HTTPS due to an HSTS policy
–2016-05-14 07:17:04– https://www.openswan.org/download/openswan-2.6.35.tar.gz
Resolving http://www.openswan.org (www.openswan.org)… 173.230.133.71, 2600:3c02:e000:f::80
Connecting to http://www.openswan.org (www.openswan.org)|173.230.133.71|:443… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Location: https://download.openswan.org/openswan//openswan-2.6.35.tar.gz [following]
–2016-05-14 07:17:05– https://download.openswan.org/openswan//openswan-2.6.35.tar.gz
Resolving download.openswan.org (download.openswan.org)… 173.230.133.71, 2600:3c02:e000:f::80
Connecting to download.openswan.org (download.openswan.org)|173.230.133.71|:443… connected.
HTTP request sent, awaiting response… 404 Not Found
2016-05-14 07:17:05 ERROR 404: Not Found.
404了肿么办。。。