Linux下搭建支持IPv6的L2TP VPN服务器——SoftEther VPN
继上次Ubuntu 14.04 LTS下配置PPTP VPN服务器后,现在还有一个很重要的需求没有实现,就是通过IPv6连接到服务器进行上网,即实现IPv4 over IPv6。
最初的想法是,直接把已经搭建好的PPTP的VPN服务,扩展到IPv6。想法是好的,也查了很多资料,很多人说在pptpd的配置文件里,加入ipv6 ,
就可以了,但是实测并不行。折腾了好几天都没解决这个问题。
于是我想了几个方案,第一个是重新搭建一个L2TP服务器,第二个是使用OpenVPN等成熟的解决方案。
然而,在Linux上折腾非热门软件实在是太坑爹了,也没有一些完整的文档,搞起来太麻烦。而如果用OpenVPN的话,就得装它的客户端才行,不够简易。这与我们的目标——搭建一个简易、无需额外安装软件的VPN服务器相悖。
最终,我发现了一个日本开发的叫做SoftEther VPN的开源软件,搭建起来简单粗暴,功能齐全,还可以在Windows中进行GUI的管理,简直是搭建VPN的首选。
准备工作
本次的安装环境依然是Ubuntu 14.04 LTS。
进入官方下载页面,根据情况,下载相应的组件。以我的情况为例,我要在Linux上搭建VPN服务器,并在Windows上进行服务器的配置与管理,因此我需要下载SoftEther VPN Server的Linux的x64版本以及SoftEther VPN Server Manager for Windows(我选的免安装zip压缩包)。
具体来说,我下载了softether-vpn_admin_tools-v4.21-9613-beta-2016.04.24-win32.zip
与softether-vpnserver-v4.21-9613-beta-2016.04.24-linux-x64-64bit.tar.gz
。
在Linux服务器上安装
为了简便,安装过程使用root账号,且以安装在/root
为例。
首先将压缩包上传至/root
目录下,或者复制下载链接之后直接在服务器上使用wget
来下载压缩包。
接着,执行tar -zxvf softether-vpnserver-v4.21-9613-beta-2016.04.24-linux-x64-64bit.tar.gz
进行解压,生成vpnserver
文件夹。
之后执行
cd vpnserver
./.install.sh
从而执行安装程序。这里要注意install.sh
前面有个.
,这是一个隐藏文件。输入3次1
,同意相关协议后即可安装完成。如果遇到缺少包的情况,按照提示安装即可(一般是缺少gcc)。
最后,执行./vpnserver start
即可开启VPN服务,至此已可以在Windows上进行服务器配置了。
在Windows上进行服务器配置
在Win中解压服务器管理工具的zip,运行vpnsmgr.exe
。
点击“新设置”,输入主机名,即IP地址(IPv6地址)。完成后点击“连接”,首次登陆会要求你设置一个管理员密码。如果无法连接,可能是由于防火墙拦截了端口导致的,你可以需要iptables -A INPUT -p tcp --dport 443 -j ACCEPT
命令,但是这在Ubuntu上一般不会出现,RH系才可能会遇到这个问题。
设置完成后在弹出的“SoftEther VPN Server / Bridge 简单安装”面板中选择“VPN的其他高级配置”,之后点击“关闭”。
此时会提示“此 VPN Server 已具有支持兼容 IPsec / L2TP / EtherIP / L2TPv3 协议的 VPN Client 或 VPN 路由器的新功能。……” ,点击“是”即可。
在弹出的“IPSec / L2TP / EtherIP / L2TPv3 设置”面板中,勾选图中的这两项。勾选第二项是为了在WIN10中添加VPN时可以不用填写预共享密钥,但就没有IPSec加密了,对于加密没有要求的可以勾上。
现在,我们需要为VPN服务器添加用户。在管理面板中点击“管理虚拟HUB”,在弹出的面板中点击“管理用户”,点击“新建”,填入用户名和密码即可,如图所示。
之后需要进行VPN服务器的IP分配设置。点击上图红框中的“虚拟NAT和虚拟DHCP服务器”,按图中顺序点击。
在弹出的“secureNAT配置”面板中,根据需要进行IP配置即可。通常来说,使用默认的即可,你也可以按照自己需要进行配置。
至此服务器的配置工作已经结束。
连接VPN
VPN类型选自动即可,输入用户名密码即可连接,简单粗暴。
如果你在前面的设置中勾选了“没加密的RAW L2TP”,则在WIN10添加VPN页面直接添加即可,否则需要手动在网络连接中手动添加预共享密钥。
另外,WIN7必须填写预共享密钥。
如果无法正常连接,你可能需要设置防火墙允许通过443、992、1194、5555端口。如果你不会搞或者无论怎么搞都搞不好,可以祭出这个大杀器/etc/init.d/iptables stop
,这样就可以把iptables关了。
配置VPN开机启动
这一点很容易,只需在/etc/rc.local
文件中加入/root/vpnserver/vpnserver start
即可(要在exit 0
语句前)。