L2TP+IPSec是实现linux和window之间实现VPN环境的配置,现在的主流的VPN代理服务器都采用此模式
原因是在它的VPN通道中,数据和用户的密码是在加密传输的。
举例:下面的实验我们可以在购买外网的一台云主机(比如香港的主主机),在云主机上配置以下服务端的配置,在用自己的window连接则可以实现翻墙。
本文的实验用到一台linux主机做为服务器,一台window实现翻墙连接。
[root@client vpn]# yum -y install libreswan
[root@client vpn]# vim /etc/ipsec.conf ------查看主配置文件include /etc/ipsec.d/*.conf -------加载该目录下的所有配置文件
[root@client vpn]# vim /etc/ipsec.d/myipsec.conf
conn IDC-PSK-NAT
rightsubnet=vhost:%priv ------容许建立的VPN虚拟网络
also=IDC-PSK-noNAT
conn IDC-PSK-noNAT
authby=secret ------加密认证
ike=3des-sha1;modp1024 ------选择算法
phase2alg=aes256-sha1;modp2048 -----算法
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=3h
type=transport
left=201.1.2.200 ----设置服务器本机的外网IP
leftprotoport=17/1701
right=%any ----容许任何客户端连接
rightprotoport=17/%any
[root@client ~]# vim /etc/ipsec.secrets
include /etc/ipsec.d/*.secrets ----加载密钥文件
[root@client vpn]# vim /etc/ipsec.d/mypass.secrets ---配置IPSec预定义共享密钥
201.1.2.200 %any: PSK "randpass"
201.1.2.200(服务器提供的ip) %any:(谁可以连接上设备) PSK (PSK预共享密钥) "randpass"(密码)
[root@client ~]# cd /etc/ipsec.d/[root@client ipsec.d]# systemctl start ipsec ----启动服务
4500和500证明服务启动
[root@client ipsec.d]# ss -ntlup | grep pluto
udp UNCONN 0 0 127.0.0.1:4500 *:* users:(("pluto",pid=5523,fd=26))
udp UNCONN 0 0 192.168.4.100:4500 *:* users:(("pluto",pid=5523,fd=24))
udp UNCONN 0 0 201.1.2.200:4500 *:* users:(("pluto",pid=5523,fd=22))
udp UNCONN 0 0 192.168.122.1:4500 *:* users:(("pluto",pid=5523,fd=20))
udp UNCONN 0 0 10.10.10.10:4500 *:* users:(("pluto",pid=5523,fd=18))
udp UNCONN 0 0 127.0.0.1:500 *:* users:(("pluto",pid=5523,fd=25))
udp UNCONN 0 0 192.168.4.100:500 *:* users:(("pluto",pid=5523,fd=23))
udp UNCONN 0 0 201.1.2.200:500 *:* users:(("pluto",pid=5523,fd=21))
udp UNCONN 0 0 192.168.122.1:500 *:* users:(("pluto",pid=5523,fd=19))
udp UNCONN 0 0 10.10.10.10:500 *:* users:(("pluto",pid=5523,fd=17))
udp UNCONN 0 0 ::1:500 :::* users:(("pluto",pid=5523,fd=27))
[root@client vpn]# yum localinstall xl2tpd-1.3.8-2.el7.x86_64.rpm
[root@client ~]# vim /etc/xl2tpd/xl2tpd.conf
32 ip range = 192.168.3.128-192.168.3.254 ----修改
33 local ip = 201.1.2.200 ----修改
[root@client ~]# vim /etc/ppp/options.xl2tpd
10 require-mschap-v2 ----连vpn需要认证 ,添加
10 #crtscts ----注释
16 #lock ----注释
[root@client ~]# vim /etc/ppp/chap-secrets ------添加用户以及相应的密码文件
zhuhaiyan * 123456 *
[root@client ~]# systemctl start xl2tpd -------启动服务
[root@client ~]# ss -ntulp | grep xl2tpd
udp UNCONN 0 0 *:1701 *:* users:(("xl2tpd",pid=6017,fd=3))
[root@proxy6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward ---开启路由转发的功能
[root@client ~]# firewall-cmd --set-default-zone=trusted -----关闭防火墙
如果需要翻墙则应该加上以下的代码[root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 \
> -j SNAT --to-source 201.1.2.5
客户端配置
此处添加的密码则是载服务器中配置的密码randpass
填写服务器创建的服务器的用户和密码