一、VPN概述
- 在公用网络上建立专用私有网络,进行加密通讯
- 多用于为集团公司的各地子公司建立连接
- 连接完成后,各地的子公司可以向局域网一样通讯
- 在企业网络中有广泛应用
- 偶尔可以用于翻墙
- 目前主流的VPN技术(GRE , PPTP, L2TP+IPSec)
二、VPN种类
配置GRE VPN
-
启用GRE模块(client和proxy都需要操作)
[root@client ~]# lsmod | grep ip_gre [root@client ~]# modprobe ip_gre [root@proxy ~]# lsmod | grep ip_gre [root@proxy ~]# modprobe ip_gre
-
Client主机创建VPN隧道
1)创建隧道
[root@client ~]# ip tunnel add tun0 mode gre remote 192.168.4.10 local 192.168.4.5
2)启用该隧道(类似与设置网卡up)
[root@client ~]# ip link set tun0 up [root@client ~]# ip link show
3)为VPN配置隧道IP地址
[root@client ~]# ip addr add 10.10.10.5/24 peer 10.10.10.10/24 dev tun0 [root@client ~]# ip a s
-
Proxy主机创建VPN隧道
1)创建隧道
[root@proxy ~]# ip tunnel add tun0 mode gre remote 192.168.4.5 local 192.168.4.10
2)启用该隧道(类似与设置网卡up)
[root@proxy ~]# ip link set tun0 up [root@proxy ~]# ip link show
3)为VPN配置隧道IP地址
[root@proxy ~]# ip addr add 10.10.10.10/24 peer 10.10.10.5/24 dev tun0 [root@proxy ~]# ip a s
4)开启路由转发、关闭防火墙
[root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
-
测试连通性
[root@client ~]# ping 10.10.10.10 [root@proxy ~]# ping 10.10.10.5
创建PPTP VPN
1.部署VPN服务器
1)安装软件包
[root@proxy ~]# yum localinstall pptpd-1.4.0-2.el7.x86_64.rpm
[root@proxy ~]# rpm -qc pptpd
/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/sysconfig/pptpd
2)修改配置文件
[root@proxy ~]# vim /etc/pptpd.conf
localip 192.168.4.5
remoteip 192.168.3.1-50
[root@proxy ~]# vim /etc/ppp/options.pptpd
require-mppe-128 //使用MPPE加密数据
ms-dns 8.8.8.8
[root@proxy ~]# vim /etc/ppp/chap-secrets
tom * 123456 *
//用户名 服务器标识 密码 客户端
[root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
3)启动服务
[root@proxy ~]# systemctl start pptpd
[root@proxy ~]# systemctl enable pptpd
4)翻墙设置(非必需操作)
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 192.168.4.5
2.客户端设置
启动windows虚拟机--->新建网络连接--->连接到工作区--->使用我的internet连接VPN--->我将稍后设置我的连接 VPN网络设备--->右键连接--->输入用户tom,密码123456--->连接
创建L2TP+IPSec VPN
- 部署IPSec服务
1)安装软件包
[root@proxy ~]# yum -y install libreswan
2)新建IPSec密钥验证配置文件
[root@proxy ~]# cat /etc/ipsec.conf
include /etc/ipsec.d/*.conf
[root@proxy ~]# 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=192.168.4.5 //重要,服务器本机的外网IP
leftprotoport=17/1701
right=%any //允许任何客户端连接
rightprotoport=17/%any
3)创建IPSec预定义共享密钥
[root@proxy ~]# cat /etc/ipsec.secrets
include /etc/ipsec.d/*.secrets
[root@proxy ~]# vim /etc/ipsec.d/mypass.secrets
192.168.4.5 %any: PSK "randpass"
4)启动IPSec服务
[root@proxy ~]# systemctl start ipsec
[root@proxy ~]# netstat -ntulp |grep pluto
- 部署XL2TP服务
1)安装软件包
[root@proxy ~]# yum localinstall xl2tpd-1.3.8-2.el7.x86_64.rpm
2) 修改xl2tp配置文件
[root@proxy ~]# vim /etc/xl2tpd/xl2tpd.conf
....
ip range = 192.168.3.128-192.168.3.254
local ip = 201.1.2.10
....
[root@proxy ~]# vim /etc/ppp/options.xl2tpd
require-mschap-v2 //添加一行,强制要求认证
#crtscts //注释或删除该行
#lock //注释或删除该行
[root@proxy ~]# vim /etc/ppp/chap-secrets
tom * 123456 *
3)启动服务
[root@proxy ~]# systemctl start xl2tpd
[root@proxy ~]# netstat -ntulp |grep xl2tpd
4)设置路由转发,防火墙
[root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
5)翻墙设置(非必需操作)
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 192.168.4.5
- 客户端设置
1)设置windows注册表
windows+r ---> regedit ---> HKEYLOCALMACHINE\ System\CurrentControlSet\Services\Rasman\Parameters --> 新建DWORD ---> 名称:ProhibitIpSec , 值:1 ---> 保存退出 ---> 重启计算机
2)新建网络连接
启动windows虚拟机--->新建网络连接--->连接到工作区--->使用我的internet连接VPN--->我将稍后设置我的连接 VPN网络设备--->右键连接--->输入用户tom,密码123456--->安全--->VPN类型:L2TP--->高级--->秘钥:randpass--->连接登录