VPN服务器搭建

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属于应用层协议

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>