Virtual Private Network
GRE,PPTP,L2TP+IPSec,SSL
GRE(适用于linux环境)
启用GRE模块(client和proxy都需要操作)创建隧道
[root@client ~]# lsmod | grep ip_gre
[root@client ~]# modprobe ip_gre
[root@client ~]# modinfo ip_gre
[root@client ~]# ip tunnel add tun0 mode gre
> remote 201.1.2.5 local 201.1.2.10
//ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
//mode设置隧道使用gre模式
//local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
启用该隧道(类似与设置网卡up)
[root@client ~]# ip link show
[root@client ~]# ip link set tun0 up //设置UP
[root@client ~]# ip link show
为VPN配置隧道IP地址
这里配置的就是真实的公网IP地址
[root@client ~]# ip addr add 10.10.10.10/24 peer 10.10.10.5/24
> dev tun0
//为隧道tun0设置本地IP地址(10.10.10.10.10/24)
//隧道对面的主机IP的隧道IP为10.10.10.5/24
[root@client ~]# ip a s //查看IP地址
Proxy主机创建VPN隧道
上面的步骤重新执行一遍 remote与 local地址反过来 add 与peer地址反过来
测试连通性 通过ping就可以
L2TP+IPSec VPN
买了香港的按需付费服务器,测试了一下没能成功,但是连接服务器内网没问题
部署IPSec服务
[root@client ~]# yum -y install libreswan
[root@client ~]# cat /etc/ipsec.conf //仅查看一下该主配置文件
.. ..
include /etc/ipsec.d/*.conf //加载该目录下的所有配置文件
[root@client ~]# vim /etc/ipsec.d/myipsec.conf
//新建该文件,参考lnmp_soft/vpn/myipsec.conf
conn IDC-PSK-NAT
rightsubnet=vhost:%priv
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.10 //重要,服务器本机的外网IP
leftprotoport=17/1701
right=%any //允许任何客户端连接
rightprotoport=17/%any
[root@client ~]# vim /etc/ipsec.secrets //修改该文件
include /etc/ipsec.d/*.secrets
201.1.2.10 %any: PSK "randpass" //randpass为预共享密钥
//201.1.2.10是VPN服务器的IP
//%any:任何客户端都可以连接服务器
//PSK(pre share key)中文预共享密钥
[root@client ~]# systemctl start ipsec
[root@client ~]# netstat -ntulp |grep 500
udp 0 0 127.0.0.1:4500 0.0.0.0:* 3148/pluto
udp 0 0 192.168.88.10:4500 0.0.0.0:* 3148/pluto
udp 0 0 201.1.2.10:4500 0.0.0.0:* 3148/pluto
udp 0 0 127.0.0.1:500 0.0.0.0:* 3148/pluto
udp 0 0 192.168.88.10:500 0.0.0.0:* 3148/pluto
udp 0 0 201.1.2.10:500 0.0.0.0:* 3148/pluto
udp6 0 0 ::1:500 :::* 3148/pluto
部署XL2TP服务
[root@client ~]# yum install xl2tpd-1.3.8-2.el7.x86_64.rpm
[root@client ~]# vim /etc/xl2tpd/xl2tpd.conf //修改主配置文件
[global]
.. ..
[lns default]
.. ..
ip range = 192.168.3.128-192.168.3.254 //分配给客户端的IP池
local ip = 201.1.2.10 //VPN服务器的IP地址
[root@client ~]# vim /etc/ppp/options.xl2tpd //认证配置
require-mschap-v2 //添加一行,强制要求认证
#crtscts //注释或删除该行
#lock //注释或删除该行
root@client ~]# vim /etc/ppp/chap-secrets //修改密码文件
jacob * 123456 * //账户名称 服务器名称 密码 客户端IP
[root@client ~]# systemctl start xl2tpd
[root@client ~]# ss -ntulp |grep xl2tpd
udp 0 0 0.0.0.0:1701 0.0.0.0:* 3580/xl2tpd
翻墙设置(非必需操作)我设置了,但是没能成功,待我成功时再来修改
[root@client ~]# echo "1" > /proc/sys/net/ipv4/ip_forward #开启路由转发
[root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24
> -j SNAT --to-source 201.1.2.10
PPTP VPN
部署VPN服务器
[root@proxy ~]# yum install pptpd-1.4.0-2.el7.x86_64.rpm
[root@proxy ~]# rpm -qc pptpd
/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/sysconfig/pptpd
[root@proxy ~]# vim /etc/pptpd.conf
.. ..
localip 201.1.2.5 //服务器本地IP
remoteip 192.168.3.1-50 //分配给客户端的IP池
[root@proxy ~]# vim /etc/ppp/options.pptpd
require-mppe-128 //使用MPPE加密数据
ms-dns 8.8.8.8 //DNS服务器
[root@proxy ~]# vim /etc/ppp/chap-secrets //修改账户配置文件
jacob * 123456 *
//用户名 服务器名称 密码 客户端IP
[root@proxy ~]# vim /etc/pptpd.conf
.. ..
localip 201.1.2.5 //服务器本地IP
remoteip 192.168.3.1-50 //分配给客户端的IP池
[root@proxy ~]# vim /etc/ppp/options.pptpd
require-mppe-128 //使用MPPE加密数据
ms-dns 8.8.8.8 //DNS服务器
[root@proxy ~]# vim /etc/ppp/chap-secrets //修改账户配置文件
jacob * 123456 *
//用户名 服务器名称 密码 客户端IP
翻墙设置(非必需操作)
[root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward //开启路由转发
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24
> -j SNAT --to-source 201.1.2.5
PPTP和L2TP都是网络二层协议,IPSec属于应用层协议
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net