VPN 即 Virtual Private Network(虚拟专用网),简单来说,就是在公共网络上搭建一条虚拟的私有链路,可以通过该链路加入到远程的私有网络环境中。所以常用来帮助员工在办公室外安全地访问企业内部网。
创建私有链路需要使用隧道技术,用到的协议包括点对点隧道协议(PPTP),第2层隧道协议(L2TP)等。macOS 系统已经不再支持 PPTP 类型的 VPN。
一、安装软件包
sudo apt-get install strongswan xl2tpd ppp lsof
IPSec 是组建安全的 VPN 时使用的一个加密和认证标准,而 strongSwan 是一个完全支持 IKEv1 和 IKEv2 的 IKE 后台进程。
二、修改配置文件
1. 修改系统转发配置
在 /etc/sysctl.conf
文件末尾添加以下内容:
启用配置:
sudo sysctl -p
2. 配置 strongswan(IPSec)
在 /etc/ipsec.conf
文件末尾添加如下内容:
配置共享密钥 /etc/ipsec.secrets
:
%any
针对任意服务器地址,PASSWORD
需要改为足够安全的长密码
3. 配置 xl2tpd
在 /etc/xl2tpd/xl2tpd.conf
文件末尾添加如下内容:
local ip
表示 VPN 虚拟网络的网关,ip range
表示客户端连接 VPN 服务器时能分配到的 IP 地址
在 /etc/ppp/options.xl2tpd
文件中添加如下内容:
修改 ms-dns 为需要 vpn 客户端使用的 dns 服务器
4. 添加用户
修改 /etc/ppp/chap-secrets
文件:
格式为:用户名、服务、密码、限制 ip 。
以上的配置完成以后,重启服务就可以使用客户端连接了。不过此时还不能通过该 VPN 访问互联网,需要部署 IP 转发(使用 iptables )。
三、配置转发
输入下面的指令,开启 gre 协议,并打开服务器 47 和 1723 号端口。
开启一个 NAT 转发
sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o wlp4s0 -j MASQUERADE
wlp4s0
表示当前服务器使用的网卡设备名。可以通过 ifconfig
命令查看
通过上面的指令,iptables 做了这样一件事:将所有从服务器上传出的源地址为 192.168.100.1-255 的数据包源 ip 改成服务器的 ip 。
四、连接测试
首先需要重启服务:
然后就使用客户端连接试试吧!
若连接失败,可查看以下log:
/var/log/syslog
/var/log/auth.log