vpn(virtual private network虚拟专用网络)的概述:
    ·在公用网络上简历专用私有网络,进行加密通讯
    ·多用于为公司的各地子公司建立
    ·连接完成后,各个地区的子公司可以像局域网一样通讯
    ·在企业网络中有广泛应用
    ·#偶尔可以用于FQ(不建议)
    ·目前主流的vpn(GRE,PPTP,L2TP+IPSec,SSL)

环境:
主机名 IP地址
client eth3(201.1.2.10/24)
proxy eth0(192.168.4.5/24)
eth3(201.1.2.5/24)
一、GRE vpn(Linux之间)   VPN代理端:(201.1.2.5)
  ###俩边操作基本相同

  1)启动GRE模块

    #ping 201.1.2.10
    #lsmod //显示模块列表
    #lsmod | grep ip_gre //确定是否加载了gre模块
    #modproba ip_gre //加载模块
    #modinfo ip_gre //查看模块信息

  

 

  2)创建VPN隧道

    #ip tunnel add tun0 mode gre remote 201.1.2.10 local 201.1.2.5

    //ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
    //mode设置隧道使用gre模式
    //local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
    
  3)启用该隧道(和网卡的up一样)

    #ip link show
    #ip link set tun0 up
    #ip link show

  4)为VPN隧道配置IP
   

      #ip addr add 10.10.10.5/24 peer 10.10.10.10/24 dev tun0
    #ip addr show    

    

    //为隧道tun0设置本地IP地址(10.10.10.5/24)

    //隧道对面的主机ip的隧道为10.10.10.10/24

    
  

    #echo "1" > /proc/sys/net/ipv4/ip_forward   //开启路由转发

  

  PC客户端:(201.1.2.10)
   

    #lsmod | grep ip_gre 

    //从已载入模块中查找是否有ip_gre这个模块
    lsmod #列出内核已载入模块的状态
    depmod #分析可加载模块的依赖性,生成modules.dep文件和映射文件
   

    #modprobe ip_gre	

    //添加ip_gre模块
    modprobe #Linux内核模块添加删除模块
    

    #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地址

    #link show 
    #ip  link set tun0 up 

    //启用隧道

    #ip link show 
    #ip addr add 10.10.10.10 peer 101.10.10.5/24 dev tun0

    //配置隧道ip
    

    #ip addr show 

  


  5)测试结果

    ping 10.10.10.5

  



----------------------------GRE布置完毕----------------------------------------------------------------------------------------------------------------

二、PPTP(Point to Point Tunneling Protocol)
·支持密码身份验证
·支持MPPE(Microsoft Point-to-Point Encryption)加密

PPTP VPN(Linux和Windows)

  1) 安装软件包

    #cd /lnmp_soft/vpn/
    #rpm -ivh pptpd-1.4.0-2.el7.x86_64.rpm (自己下载包)
    #rpm -qc pptpd //查看文件目录

  2) 修改配置文件

    #vim /etc/pptpd.conf
    105 localip 201.1.2.200	//服务器本地IP
    106 remoteip 192.168.1.1-50,192.168.1.80	//分配给客户端的IP池

  

    #vim /etc/ppp/options.pptpd
    40 require-mppe-128	//使用MPPE加密数据
    68 ms-dns 8.8.8.8	//DNS服务器

  

    #vim /etc/ppp/chap-secrets
    zl      *       112233  *	// 用户名/服务器标记/密码/客户端ip

  

    #echo "1" > /proc/sys/net/ipv4/ip_forward   
    //开启路由转发

    #systemctl restart pptpd
    #systemctl enable pptpd
    #firewall-cmd --set-default-zone=trusted 
    //把trusted区域设置为默认区域
    #netstat -anutlp | grep pptpd

    FQ设置:
    # iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.200 
    //将私网IP转化为公网ip

  


==================================PPTP vpn 搞定==================================================

三、L2TP+IPSec VPN(Linux和Windows) 加密相对更好一点(ipsec)
·layer two tunneling protocol(L2TP)
·L2TP简历主机之间VPN隧道,压缩、验证
·IPSec提供数据加密、数据校验、访问控制的功能

主机名 IP地址
Windows 网卡桥接public2(201.1.2.20/24)
client eth0(192.168.4.10/24)
eth3(201.1.2.10/24)


  1) 安装软件包

    #yum -y install libreswan

  


  2) 新建IPSec秘钥验证配置文件

    #cat /etc/ipsec.secrets //看一下主配置文件
    1、 #vim /etc/ipsec.d/myipsec.conf
    //新建该文件,参考lnmp_soft/vpn/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.10                               
    //重要,服务器本机的外网IP
    leftprotoport=17/1701
    *	right=%any                                   //允许任何客户端连接
    rightprotoport=17/%any

  

  3) 创建IPSec预定义共享秘钥
    #首先看一下/etc/ipsec.secrets //切忌勿动,看一下有就好
    include /etc/ipsec.d/*.secrts
    vim /etc/ipsec.d/mypass.secrets //新建文件
    201.1.2.100 %any: PSK "randpass" //randpass为预共享密钥

  4) 启动IPSec服务

    #systemctl start ipsec
    #netstat -autlp | grep pluto

    #yum localinstall /lnmp_soft/vpn/xl2tpd-1.3.8-2.el7.x86_64.rpm    (自己下载xl2tpd包)

    修改xl2tpd配置文件(3个配置文件)
    #vim /etc/xl2tpd/xl2tpd.conf	*主配置文件
    [lns default]
    ……
    32 ip range = 192.168.3.50-192.168.3.100
    //分配给客户端的ip地址池
    33 local ip = 201.1.2.100
    //vpn服务器的IP地址

    #vim /etc/ppp/options.xl2tpd	//认证配置 	
    10 #crtscts	//本来没有注释,要求注释或删除
    16 #lock	//本来没有注释,要求注释或删除
    21 require-mschap-v2    //添加一行,强制要求认证

    #vim /etc/ppp/chap-secrets //修改密码文件
    zl      *       112233  *
    用户名/服务器标记/密码/客户端ip

    #启动服务
    # systemctl start xl2tpd
    # netstat -ntulp |grep xl2tpd 

    设置路由转发,防火墙

    #echo "1" > /proc/sys/net/ipv4/ip_forward
    #firewall-cmd --set-default-zone=trusted
    #iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.100

    FQ设置(非必要设置)

    # iptables -t nat -A POSTROUTING -s 192.168.3.0/24   -j SNAT --to-source 201.1.2.10

  

  5) 客户端设置
    启动一台Windows虚拟机,将虚拟机网卡桥接到public2,配置ip为201.1.2.20
    新建网络连接,输入vpn服务器账户与密码
    设置vpn连接的属性,预共享秘钥是IPSec配置文件中填写的randpass