Virtual Private Network

GRE,PPTP,L2TP+IPSec,SSL

GRE(适用于linux环境)

启用GRE模块(client和proxy都需要操作)创建隧道

[root@client ~]# lsmod| grep ip_gre [root@client ~]# modprobeip_gre [root@client ~]# modinfo ip_gre[root@client ~]# ip tunnel add tun0mode 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.confconn IDC-PSK-NATrightsubnet=vhost:%privalso=IDC-PSK-noNATconn IDC-PSK-noNATauthby=secret//加密认证ike=3des-sha1;modp1024//加密算法phase2alg=aes256-sha1;modp2048//加密算法pfs=noauto=addkeyingtries=3rekey=noikelifetime=8hkeylife=3htype=transportleft=201.1.2.10//重要,服务器本机的外网IPleftprotoport=17/1701right=%any//允许任何客户端连接rightprotoport=17/%any[root@client ~]# vim /etc/ipsec.secrets //修改该文件include /etc/ipsec.d/*.secrets201.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 500udp00 127.0.0.1:45000.0.0.0:* 3148/plutoudp00 192.168.88.10:45000.0.0.0:* 3148/plutoudp00 201.1.2.10:4500 0.0.0.0:* 3148/plutoudp00 127.0.0.1:500 0.0.0.0:* 3148/plutoudp00 192.168.88.10:500 0.0.0.0:* 3148/plutoudp00 201.1.2.10:5000.0.0.0:* 3148/plutoudp6 00 ::1:500 :::* 3148/pluto

部署XL2TP服务

[root@client ~]# yuminstall 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 xl2tpdudp 00 0.0.0.0:17010.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//服务器本地IPremoteip 192.168.3.1-50//分配给客户端的IP池[root@proxy ~]# vim /etc/ppp/options.pptpdrequire-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//服务器本地IPremoteip 192.168.3.1-50//分配给客户端的IP池[root@proxy ~]# vim /etc/ppp/options.pptpdrequire-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属于应用层协议