vpn(virtual private network虛擬專用網(wǎng)絡(luò))的概述:
    ·在公用網(wǎng)絡(luò)上簡(jiǎn)歷專用私有網(wǎng)絡(luò),進(jìn)行加密通訊
    ·多用于為公司的各地子公司建立
    ·連接完成后,各個(gè)地區(qū)的子公司可以像局域網(wǎng)一樣通訊
    ·在企業(yè)網(wǎng)絡(luò)中有廣泛應(yīng)用
    ·#偶爾可以用于FQ(不建議)
    ·目前主流的vpn(GRE,PPTP,L2TP+IPSec,SSL)

環(huán)境:
主機(jī)名 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)啟動(dòng)GRE模塊

    #ping 201.1.2.10
    #lsmod //顯示模塊列表
    #lsmod | grep ip_gre //確定是否加載了gre模塊
    #modproba ip_gre //加載模塊
    #modinfo ip_gre //查看模塊信息

  

 

  2)創(chuàng)建VPN隧道

    #ip tunnel add tun0 mode gre remote 201.1.2.10 local 201.1.2.5

    //ip tunnel add創(chuàng)建隧道(隧道名稱為tun0),ip tunnel help可以查看幫助
    //mode設(shè)置隧道使用gre模式
    //local后面跟本機(jī)的IP地址,remote后面是與其他主機(jī)建立隧道的對(duì)方IP地址
    
  3)啟用該隧道(和網(wǎng)卡的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設(shè)置本地IP地址(10.10.10.5/24)

    //隧道對(duì)面的主機(jī)ip的隧道為10.10.10.10/24

    
  

    #echo "1" > /proc/sys/net/ipv4/ip_forward   //開(kāi)啟路由轉(zhuǎn)發(fā)

  

  PC客戶端:(201.1.2.10)
   

    #lsmod | grep ip_gre 

    //從已載入模塊中查找是否有ip_gre這個(gè)模塊
    lsmod #列出內(nèi)核已載入模塊的狀態(tài)
    depmod #分析可加載模塊的依賴性,生成modules.dep文件和映射文件
   

    #modprobe ip_gre	

    //添加ip_gre模塊
    modprobe #Linux內(nèi)核模塊添加刪除模塊
    

    #ip tunnel add tun0 mode gre remote 201.1.2.5 local 201.1.2.10

    //ip tunnel add 創(chuàng)建隧道(隧道名稱為tun0),ip tunnel help 可以常看幫助
    //mode 這只隧道使用gre模式
    //local后面跟本機(jī)的ip地址,remote后面是與其他主機(jī)簡(jiǎn)歷隧道的對(duì)方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)測(cè)試結(jié)果

    ping 10.10.10.5

  



----------------------------GRE布置完畢----------------------------------------------------------------------------------------------------------------

二、PPTP(Point to Point Tunneling Protocol)
·支持密碼身份驗(yàn)證
·支持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	//服務(wù)器本地IP
    106 remoteip 192.168.1.1-50,192.168.1.80	//分配給客戶端的IP池

  

    #vim /etc/ppp/options.pptpd
    40 require-mppe-128	//使用MPPE加密數(shù)據(jù)
    68 ms-dns 8.8.8.8	//DNS服務(wù)器

  

    #vim /etc/ppp/chap-secrets
    zl      *       112233  *	// 用戶名/服務(wù)器標(biāo)記/密碼/客戶端ip

  

    #echo "1" > /proc/sys/net/ipv4/ip_forward   
    //開(kāi)啟路由轉(zhuǎn)發(fā)

    #systemctl restart pptpd
    #systemctl enable pptpd
    #firewall-cmd --set-default-zone=trusted 
    //把trusted區(qū)域設(shè)置為默認(rèn)區(qū)域
    #netstat -anutlp | grep pptpd

    FQ設(shè)置:
    # iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.200 
    //將私網(wǎng)IP轉(zhuǎn)化為公網(wǎng)ip

  


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

三、L2TP+IPSec VPN(Linux和Windows) 加密相對(duì)更好一點(diǎn)(ipsec)
·layer two tunneling protocol(L2TP)
·L2TP簡(jiǎn)歷主機(jī)之間VPN隧道,壓縮、驗(yàn)證
·IPSec提供數(shù)據(jù)加密、數(shù)據(jù)校驗(yàn)、訪問(wèn)控制的功能

主機(jī)名 IP地址
Windows 網(wǎng)卡橋接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秘鑰驗(yàn)證配置文件

    #cat /etc/ipsec.secrets //看一下主配置文件
    1、 #vim /etc/ipsec.d/myipsec.conf
    //新建該文件,參考lnmp_soft/vpn/myipsec.conf
    配置文件內(nèi)容:
    conn IDC-PSK-NAT
    rightsubnet=vhost:%priv                       //允許建立的VPN虛擬網(wǎng)絡(luò)
    also=IDC-PSK-noNAT
 
    conn IDC-PSK-noNAT
    authby=secret                                 //加密認(rèn)證
    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                               
    //重要,服務(wù)器本機(jī)的外網(wǎng)IP
    leftprotoport=17/1701
    *	right=%any                                   //允許任何客戶端連接
    rightprotoport=17/%any

  

  3) 創(chuàng)建IPSec預(yù)定義共享秘鑰
    #首先看一下/etc/ipsec.secrets //切忌勿動(dòng),看一下有就好
    include /etc/ipsec.d/*.secrts
    vim /etc/ipsec.d/mypass.secrets //新建文件
    201.1.2.100 %any: PSK "randpass" //randpass為預(yù)共享密鑰

  4) 啟動(dòng)IPSec服務(wù)

    #systemctl start ipsec
    #netstat -autlp | grep pluto

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

    修改xl2tpd配置文件(3個(gè)配置文件)
    #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服務(wù)器的IP地址

    #vim /etc/ppp/options.xl2tpd	//認(rèn)證配置 	
    10 #crtscts	//本來(lái)沒(méi)有注釋,要求注釋或刪除
    16 #lock	//本來(lái)沒(méi)有注釋,要求注釋或刪除
    21 require-mschap-v2    //添加一行,強(qiáng)制要求認(rèn)證

    #vim /etc/ppp/chap-secrets //修改密碼文件
    zl      *       112233  *
    用戶名/服務(wù)器標(biāo)記/密碼/客戶端ip

    #啟動(dòng)服務(wù)
    # systemctl start xl2tpd
    # netstat -ntulp |grep xl2tpd 

    設(shè)置路由轉(zhuǎn)發(fā),防火墻

    #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設(shè)置(非必要設(shè)置)

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

  

  5) 客戶端設(shè)置
    啟動(dòng)一臺(tái)Windows虛擬機(jī),將虛擬機(jī)網(wǎng)卡橋接到public2,配置ip為201.1.2.20
    新建網(wǎng)絡(luò)連接,輸入vpn服務(wù)器賬戶與密碼
    設(shè)置vpn連接的屬性,預(yù)共享秘鑰是IPSec配置文件中填寫的randpass