一、VPN

VPN属于远程访问技术,简单地说就是利用公用网络架设专用网络。例如某公司员工出差到外地,他想访问企业内网的服务器资源,这种访问就属于远程访问。

在传统的企业网络配置中,要进行远程访问,传统的方法是租用DDN(数字数据网)专线或帧中继,这样的通讯方案必然导致高昂的网络通讯和维护费用。对于移动用户(移动办公人员)与远端个人用户而言,一般会通过拨号线路(Internet)进入企业的局域网,但这样必然带来安全上的隐患。

让外地员工访问到内网资源,利用VPN的解决方法就是在内网中架设一台VPN服务器。外地员工在当地连上互联网后,通过互联网连接VPN服务器,然后通过VPN服务器进入企业内网。为了保证数据安全,VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密,就可以认为数据是在一条专用的数据链路上进行安全传输,就如同专门架设了一个专用网络一样,但实际上VPN使用的是互联网上的公用链路,因此VPN称为虚拟专用网络,其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。有了VPN技术,用户无论是在外地出差还是在家中办公,只要能上互联网就能利用VPN访问内网资源,这就是VPN在企业中应用得如此广泛的原因.

常用的VPN技术

GRE,PPTP,L2TP+IPSec

常见的用途

网络fanqiang(不打拼音不让发呀);出差在外连接公司内部服务器;分公司之间的连接

二、GRE VPN

GRE VPN(Generic Routing Encapsulation)即通用路由封装协议,是对某些网络层协议(如IP和IPX)的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议(如IP)中传输。如将ip协议的数据报包装成GRE协议的数据报,并在网络层协议中传输,这样对外来说ip协议数据报就会被隐藏

GRE是VPN(Virtual Private Network)的第三层隧道协议(ip网络层),即在协议层之间采用了一种被称之为Tunnel(隧道)的技术。

有两个知识必须先了解

[GRE协议]https://www.cnblogs.com/sky5hat/p/10470456.html

[IP隧道技术]https://baike.baidu.com/item/IP%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF/8518974?fr=aladdin

配置案例:

1.拓扑图

我们要实现Linux终端与VPN服务器互通,必须知道双方的ip并且做好配置,我们会利用它们的真实ip创造一个隧道,并且为这个隧道配置一个虚拟ip(任意的),这样我们就建立了一个一对一的网络连接

2.Linux终端配置

  1)加载ip_gre模块

  1. [root@client ~]# modprobe ip_gre
  2. [root@client ~]# lsmod | grep ip_gre            //确定是否加载了gre模块 

2)建造网络隧道

  1. [root@client ~]# ip tunnel add tun0 mode gre  remote 201.1.2.5 local 201.1.2.10
  2. //ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
  3. //mode设置隧道使用gre模式
  4. //local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址

  3)启用隧道

  与网卡的up操作相似   

  1. [root@client ~]# ip link set tun0 up         //设置UP
  2. [root@client ~]# ip link show

  4)为VPN配置隧道IP地址

  1. [root@client ~]# ip addr add 10.10.10.10/24 peer 10.10.10.5/24  dev tun0
  2. //为隧道tun0设置本地IP地址(10.10.10.10.10/24)
  3. //隧道对面的主机IP的隧道IP为10.10.10.5/24
  4. [root@client ~]# ip a s //查看IP地址
  5. [root@client ~]# firewall-cmd --set-default-zone=trusted            //关闭防火墙

3.VPN服务器配置

  与Linux客户终端大致相同,VPN服务器一般充当跳板机的作用,作为访问内网的一个入口

  1)加载ip_gre模块

  1. [root@proxy ~]# modprobe ip_gre
  2. [root@proxy ~]# lsmod | grep ip_gre            //确定是否加载了gre模块 

2)建造网络隧道

  1. [root@proxy ~]# ip tunnel add tun0 mode gre  remote 201.1.2.10 local 201.1.2.5
  2. //ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
  3. //mode设置隧道使用gre模式
  4. //local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址

  3)启用隧道

  与网卡的up操作相似   

  1. [root@proxy ~]# ip link set tun0 up         //设置UP
  2. [root@proxy ~]# ip link show

  4)为VPN配置隧道IP地址

  1. [root@proxy ~]# ip addr add 10.10.10.5/24 peer 10.10.10.10/24  dev tun0
  2. //为隧道tun0设置本地IP地址(10.10.10.10.10/24)
  3. //隧道对面的主机IP的隧道IP为10.10.10.5/24
  4. [root@proxy ~]# ip a s //查看IP地址
  5. [root@proxy ~]# firewall-cmd --set-default-zone=trusted            //关闭防火墙

4.ping命令测试连通性

  在两台机子上ping对方,用配置的隧道ip

  1. [root@proxy ~]# ping -c1 10.10.10.10
  2. [root@client ~]# ping -c1 10.10.10.5

我们查看一下路由表,会发现多了一个跳转地址,并且是以隧道的形式

[root@proxy ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.4.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
201.1.2.0       0.0.0.0         255.255.255.0   U     101    0        0 eth3

   5.补充

我们可以多创建几个隧道,ip仍然可以随意配置,这么做只是让大家知道,隧道的ip只是一个虚拟ip,我们的目的是要建立这个隧道,这样我们需要达到几个条件:

1.两台终端之间的网络是互通的

2.两台终端必须有真实网卡

3.在两台主机之间建立一个隧道并且保证这条隧道是有效的

[root@proxy ~]# ip addr add 100.100.100.5/24 peer 100.100.100.10/24  dev tun0 //可以多添加一些隧道 并且使用这个隧道的ip去连接其他主机

[root@client ~]# ip addr add 100.100.100.5/24 peer 100.100.100.10/24  dev tun0

三、PPTP VPN

点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术,它工作在第二层。通过该协议,远程用户能够通过 Microsoft Windows NT工作站、Windows xp 、 Windows 2000 和windows2003、windows7操作系统以及其它装有点对点协议的系统安全访问公司网络,并能拨号连入本地ISP,通过 Internet 安全链接到公司网络。

[PPTP协议]https://baike.baidu.com/item/PPTP/610663

PPTP VPN提供了加密机制(通过MPPE),使数据传输更加安全

1.拓扑图

准备两台主机,windows终端和VPN服务器,实验用虚拟机就可以,保证他们有相同网段的虚拟网卡,这里使用201.1.2.0网段的地址

2.VPN服务器-Linux配置

  1)安装pptp软件包

  1. [root@proxy ~]# yum localinstall pptpd-1.4.0-2.el7.x86_64.rpm
  2. [root@proxy ~]# rpm -qc pptpd
  3. /etc/ppp/options.pptpd
  4. /etc/pptpd.conf
  5. /etc/sysconfig/pptpd

  2)修改配置文件

  1. [root@proxy ~]# vim /etc/pptpd.conf
  2. .. ..
  3. localip 201.1.2.5                                    //服务器本地IP
  4. remoteip 192.168.1.1-50                            //分配给客户端的IP池
  5. [root@proxy ~]# vim /etc/ppp/options.pptpd
  6. require-mppe-128                                    //使用MPPE加密数据
  7. ms-dns 8.8.8.8                                    //DNS服务器
  8. [root@proxy ~]# vim /etc/ppp/chap-secrets            //修改账户配置文件
  9. jacob         *          123456     *
  10. //用户名    服务器标记    密码    客户端
  11. [root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward    //开启路由转发

3)启动服务

  [root@proxy ~]# systemctl start pptpd

  1. [root@proxy ~]# systemctl enable pptpd
  2. [root@proxy ~]# firewall-cmd --set-default-zone=trusted
  3. [root@proxy ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.5 //翻墙设置,非必须

3.Windows终端配置

需要一台真机,可以与VPN服务器正常通信

或者启动一台Windows虚拟机,使windows虚拟机和VPN虚拟机的虚拟网卡一致,配置本地连接的IP地址为201.1.2.20。

1)设置新的连接或网络

2)连接到工作区

3)否,创建新的连接

4)使用我的Internet连接

5)连接到工作区

输入VPN服务器的配置文件中的ip地址,上面是201.1.2.5

用户名密码输入在VPN服务器上添加的,域不填即可,完了之后点连接

4.测试连通性

在window上win+R 输入cmd打开终端,ping 192.168.1.1-50都可,以VPN服务器上分配的ip为准

四、L2TP+IPSec VPN

L2TP第二层隧道协议(英语:Layer Two Tunneling Protocol,缩写为L2TP)是一种虚拟隧道协议,通常用于虚拟专用网。L2TP协议自身不提供加密与可靠性验证的功能,可以和安全协议搭配使用,从而实现数据的加密传输。经常与L2TP协议搭配的加密协议是IPsec,当这两个协议搭配使用时,通常合称L2TP/IPsec。

L2TP支持包括IP、ATM、帧中继、X.25在内的多种网络。在IP网络中,L2TP协议使用注册端口UDP 1701。因此,在某种意义上,尽管L2TP协议的确是一个数据链路层协议,但在IP网络中,它又的确是一个会话层协议。

IPSec互联网安全协议(英语:Internet Protocol Security,缩写为IPsec),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。 [1]

IPsec主要由以下协议组成:一、认证头(AH),为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护;二、封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;三、安全关联(SA),提供算法和数据包,提供AH、ESP操作所需的参数。

[L2TP]https://baike.baidu.com/item/L2TP/609253

[IPSec]https://baike.baidu.com/item/ipsec

1.拓扑图

2.VPN服务器配置

  1)部署IPSec服务

分为三步:安装软件->修改配置文件-->启动服务  

注意:此处需要注意myipsec.conf 格式问题,可以在评论区留言,因为不方便在文章中写出

  1. [root@client ~]# yum -y install libreswan   ///安装软件
  2. [root@client ~]# cat /etc/ipsec.conf                //这是ipsec的主配置文件
  3. .. ..
  4. include /etc/ipsec.d/*.conf                    //加载该目录下的所有配置文件,我们需要修改的是下面的文件
  5. [root@client ~]# vim /etc/ipsec.d/myipsec.conf            //新建该文件,基本配置如下
  6. conn IDC-PSK-NAT
  7. rightsubnet=vhost:%priv                        //允许建立的VPN虚拟网络
  8. also=IDC-PSK-noNAT
  9. conn IDC-PSK-noNAT
  10. authby=secret                                       //加密认证
  11. ike=3des-sha1;modp1024                         //算法
  12. phase2alg=aes256-sha1;modp2048                //算法
  13. pfs=no
  14. auto=add
  15. keyingtries=3
  16. rekey=no
  17. ikelifetime=8h
  18. keylife=3h
  19. type=transport
  20. left=201.1.2.10                                //重要,服务器本机的外网IP,本机网卡ip
  21. leftprotoport=17/1701
  22. right=%any                                    //允许任何客户端连接
  23. rightprotoport=17/%any
  24. [root@client ~]# cat /etc/ipsec.secrets                 //仅查看,不要修改该文件
  25. include /etc/ipsec.d/*.secrets
  26. [root@client ~]# vim /etc/ipsec.d/mypass.secrets        //新建该文件
  27. 201.1.2.10 %any: PSK "randpass"             //randpass为预共享密钥 201.1.2.10是VPN服务器的IP
  28. [root@client ~]# systemctl start ipsec         //启动服务
  29. [root@client ~]# netstat -ntulp |grep pluto  //查看是否启动,端口号为3148
  30. udp 0 0 127.0.0.1:4500 0.0.0.0:* 3148/pluto
  31. udp 0 0 192.168.4.10:4500 0.0.0.0:* 3148/pluto
  32. udp 0 0 201.1.2.10:4500 0.0.0.0:* 3148/pluto
  33. udp 0 0 127.0.0.1:500 0.0.0.0:* 3148/pluto
  34. udp 0 0 192.168.4.10:500 0.0.0.0:* 3148/pluto
  35. udp 0 0 201.1.2.10:500 0.0.0.0:* 3148/pluto
  36. udp6 0 0 ::1:500 :::* 3148/pluto

2)部署XL2TP服务

  大家需要下载XL2TP软件包https://pkgs.org/download/xl2tpd

  1. [root@client ~]# yum localinstall xl2tpd-1.3.8-2.el7.x86_64.rpm   //安装软件包
  2. [root@client ~]# vim /etc/xl2tpd/xl2tpd.conf                //修改主配置文件
  3. [global]
  4. .. ..
  5. [lns default]
  6. .. ..
  7. ip range = 192.168.3.128-192.168.3.254                    //分配给客户端的IP池
  8. local ip = 201.1.2.10                                     //VPN服务器的IP地址
  9. [root@client ~]# vim /etc/ppp/options.xl2tpd            //认证配置
  10. require-mschap-v2                                          //添加一行,强制要求认证
  11. #crtscts                                                     //注释或删除该行
  12. #lock                                                    //注释或删除该行
  13. root@client ~]# vim /etc/ppp/chap-secrets                    //修改密码文件
  14. jacob * 123456 *                //账户名称 服务器标记 密码 客户端IP
  15. [root@client ~]# systemctl start xl2tpd       //启动服务
  16. [root@client ~]# netstat -ntulp |grep xl2tpd
  17. udp 0 0 0.0.0.0:1701 0.0.0.0:* 3580/xl2tpd
  18. [root@client ~]# echo "1" > /proc/sys/net/ipv4/ip_forward  //设置路由转发,防火墙,仅实验修改
  19. [root@client ~]# firewall-cmd --set-default-zone=trusted
  20. [root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24  -j SNAT --to-source 201.1.2.10 //翻墙设置

3.客户机配置

启动一台Windows虚拟机,将虚拟机网卡桥接到public2,配置IP地址为201.1.2.20。

新建网络连接(参考案例2),输入VPN服务器账户与密码(参考PPTP VPN)。

设置VPN连接的属性,预共享密钥是IPSec配置文件中填写的randpass,往前的配置在PPTP VPN中已经展示过了,我们现在只需要修改一下欲共享秘钥即可,以VPN服务器中的配置为主

设置Windows注册表(不修改注册表,连接VPN默认会报789错误),具体操作如下:

  • 单击"开始",单击"运行",键入"regedit",然后单击"确定"
  • 找到下面的注册表子项,然后单击它:
  • HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\Rasman\Parameters
  • 在"编辑"菜单上,单击"新建"->"DWORD值"
  • 在"名称"框中,键入"ProhibitIpSec"
  • 在"数值数据"框中,键入"1",然后单击"确定"
  • 退出注册表编辑器,然后重新启动计算机

Virtual Private Network虚拟专用网络-在Linux上搭建专用通道相关推荐

  1. Virtual Private Network虚拟专用网

    在日常的生活中,我们时常都会听到VPN.那么VPN到底是什么,今天我们就来看一下VPN是怎么回事. 本文主要讲解一下VPN的功能和类型,具体在网络设备上的配置,下次再来讨论.本文内容摘自思科Cisco ...

  2. 虚拟专用网(Virtual Private Network)

    虚拟专用网(Virtual Private Network) 假如一个公司的两个场所需要通信,那么每个场所至少需要有一个路由器和全球唯一的IP地址,当场所A中的X主机向B场所的Y主机发送信息时,主机X ...

  3. Virtual Private Network

    VPN技术的运行机制与发展 虚拟专用网络(Virtual Private Network,VPN)是利用不可靠的公用互联网络作为信息传输媒介,通过附加的安全隧道.用户认证和访问控制等技术实现与专用网络 ...

  4. 什么是Virtual Private Network?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @[TOC](文章目录) 前言 提示:主要介绍Virtual Private Network是什么 随着虚拟网络技术的不断发展,概念层 ...

  5. 【计算机网络学习笔记17】网络安全、加密技术、“Virtual Private Network”技术

    [计算机网络学习笔记17]网络安全.加密技术."Virtual Private Network"技术 一.网络安全概述 1.1 网络系统的安全目标: 1.可用性(Availabil ...

  6. 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务

    使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务 一.基于于NAT的LVS的安装与配置. 1. 硬件需求和网络拓扑                       ...

  7. 企业路由器配置L2TP 站点到站点模式Virtual Private Network指南_3(外网访问内网资源)

    应用场景:  企业路由器提供多类VPN功能.其中L2TP VPN可以实现企业站点之间搭建安全的数据传输通道,将接入Internet的企业分支机构与总部网络通过安全隧道互联,实现资源.信息共享. 资源说 ...

  8. MPLS Virtual Private Network

    目录 传统Virtual Private Network 1.产生 2.网络结构 3.Virtual Private Network模型 3.1.Overlay Virtual Private Net ...

  9. 【SEED Labs 2.0】Virtual Private Network (V*N) Lab

    本文为 SEED Labs 2.0 - Virtual Private Network (V*N) Lab 的实验记录. 文章目录 0. 实验目标 1. 生成证书 2. 设置 Docker 3. 编写 ...

最新文章

  1. 3D曲面重建之移动最小二乘法
  2. java 连接kafka_设置多个kafka连接接收器
  3. 分布式 知乎 github_如何使用GitHub本机功能来帮助管理中型分布式团队
  4. C++(23)--多态性与虚函数
  5. 201706问题记录
  6. Asp.net Controller中View 和Action方法认证Authorize 及对AuthorizeAttribute扩展
  7. 3dsMax7数据导出方法及存在问题
  8. 申论高分作者心得分享——站在政府的角度写申论
  9. mysql怎么解析json字符串_mysql解析json字符串
  10. 证书错误:导航已阻止。此网站的安全证书有问题的解决办法
  11. DSP大数据精准广告的介绍
  12. 低维空间到高维空间的映射
  13. (朴灵著) 深入浅出node.js_朴灵 (2013) 深入浅出Node.js. 人民邮电出版社, 北京.
  14. 网络基础知识 — 设备
  15. HTML中<meta>标签的name属性都有哪些——标准元数据名称
  16. Python 根据身高体重计算BMI值
  17. LLJ-F(S)系列漏电继电器
  18. 2:什么是反射与反射的应用及调用方法(by-朝夕)
  19. sip 协议注册流程
  20. 最新的期刊论文怎么下载?

热门文章

  1. java 微信抽奖_微信随机生成红包金额算法java版
  2. flarum主题帖子相关属性修改
  3. 数学在c语言编程中的历史,用计算机C语言编程解古代数学题
  4. 地铁出行路线规划程序
  5. Nginx证书(server.crt,server.key),Tomcat证书(server.jks)
  6. mysql查询 多门课程的平均成绩_Mysql_多表查询练习
  7. 当乐app官方下载android,当乐App
  8. css图像的平铺,cssbackground-image如何平铺?
  9. 图画日记怎么画_图画日记怎么画_二年级下册绘画日记图片
  10. mpp与mysql集群_MPPDB集群高可用设计