VPN入门教程(非常详细),从零基础入门到精通,看完这一篇就够了(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

数据来源
    本文仅用于[信息安全]( )的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。

1、引入

  • VPN可以实现在不安全的网络上,安全的传输数据,类似专网
  • VPN只是一个技术,使用PKI技术,来保证数据的安全三要素

2、安全三要素

1)机密性
2)完整性
3)身份验证

3、加密技术:

1)对称加密:加密与解密使用相同的密钥
                               密钥是通信双方协商生成,生成过程是明文通信!

                               **优点:**速度快

                               **缺点:**密钥容易泄露 !

            **对称加密算法:**DES、3DES、AES

2)非对称加密算法:使用公私密钥加密数据
                               公私密钥成对生成,互为加解密关系!公私钥不能互相推算!

                               **双方交换公钥:**

                                    使用对方的公钥加密实现机密性

                                    使用自己的私钥进行数字签名,实现身份验证

                               **优点:**安全性高

                               **缺点:**速度慢

                               **常见算法:**RSA、DH

4、完整性算法/hash值算法:

    MD5

    SHA

5、VPN的类型

1)远程访问VPN(Remote Access VPN)
            一般用在个人到安全连接企业内部

            一般出差员工/在家办公,安全连接内网时使用

            一般公司部署VPN服务器,员工在外拔号连接PN即可

            **常见RA-VPN协议:** PPTP VPN、L2 TP VPN、 SSTP VPN、EZvpn/ easyvpn(思科私有)、 SSL VPN(目前比较流行)              

2)点到点VPN
            一般用在企业对企业安全连接

            一般需要在两个企业总出口设备之间建立VPN通道!

            **常见的点到点VPN:**IPsecVPN

6、IPsecVPN:

1)属于点到点VPN,可以在2家企业之间建立VPN隧道!
2)VPN隧道优点:
            安全性

            合并两家企业内网 

3)VPN隧道技术
            **1)传输模式:只加密上层数据,不加密私有|P包头,传输速度快**

                 **通信过程:**一方公司要与另一方公司使用VPN隧道安全通信,首先自己公司的内网数据到达自己的路由器后路由器会先将数据帧的4、5层的数据进行加密,然后将IP包头的目标IP与源IP拿出来放到IP包头的可选项内(内网的ip无法在公网上存活),用自己的公司买的公网ip(配在链接路由器外网端口的IP)和目标的公网ip作为新的源IP与目标IP,到了目标路由器再从IP包头的可选项内取出数据还原数据帧的目标与源ip,目标公司回包的流程也是差不多。

            **2)隧道模式(默认):加密整个私有IP包,包括|P包头,更安全,速度慢**

后面就是数据传到目标路由器,路由器再解封装然后传入目标内网。

4)VPN隧道技术:重新封装技术 + 加密认证技术
5)IPsecVPN分为2大阶段:
第一阶段:管理连接(VPN双方建立连接/建立隧道
                    **目的:**通信双方设备通过非对称加密算法加密对称加密算法所使用的对称密钥,以达到安全地协商对称加密算法秘钥的目的。

                    **过程:**双方设备先各自生成公私秘钥对,然后双方交换公钥,使用对方的公钥加密对称密钥,这样就可以解决对称密钥因为是双方明文通信产生的而安全性低的问题,又能获取对称密钥加密数据快的特性。

            **命令:(思科)目的:建立隧道(IKE)**

                     **conf t**

                    **crypto isakmp policy**  **1**            **# 创建传输集/策略集,1是名称**

                    **encryption** **des/ 3des/aes**        **\# 指定对称加密算法,一般使用aes**

                    **hash** **md5/sha**                           **\# 指定完整性算法/hash值算法,一般使用sha**

                    **group** **1/2/5**                                **\# 默认使用DH非对称加密算法,这里****指定公钥与私钥的长度,越长越安全也越慢,一般使用2或5**

                    **authentication pre-share**         **# 身份验证使用共享密钥算法**

                    **lifetime**  **秒**                                **# 配置该传输集/策略集的失效时间,失效了双方就会重新生成设备重新生成对称密钥,如果改成3600秒,那么双方每个1个小时都会更换密钥,这样可以防止密钥被破解,默认:86400秒 / 24小时**

                    **exit**

                    **crypto isakmp key**   **预共享密钥**  **address**   **对方的****公网IP地址**  **# 配置指向对方公网IP的共享密钥**

    **预共享密钥****作用:**用来证明对方就是对方而不是黑客伪造的,对方的共享秘钥也要配置一样,比如我设置的共享密钥是:zhangsan    那对方的也要是:zhangsan      双方都要验证一下,共享密钥越长越复杂越好不能少于6位。

    **实现原理:**将共享密钥加在数据后面如:“数据”+zhangsan  这样加密后生成的哈希值基本上是独一无二的,黑客攻击替换了哈希值也能被发现因为我的哈希值多了 “zhangsan ”转换的 哈希值并以他作为身份验证的标准,没有就是伪造的。

第二阶段:数据连接(加密要传输的数据)
                    **目的:**通过对称加密算法加密实际所要传输的私网(内网)数据

            **定义VPN触发流量 :定义那些包要走VPN**

            **conf t**

            **access-list** **100** **permit ip** **192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255**  **# 创建一个表号为100的表(1-255可选),添加一过滤条目允许192.168.开头的网段访问172.16开头的网段的数据进入隧道,也就是说192.168.开头的网段访问172.16开头的网段的数据进入路由器时****路由器会把该数据路由到隧道中而不是上网**。**0.0.255.255:**是反子网掩码,0.0.255.255表示只检查前面两位IP,也就是只检查192.168.后面的忽略,只要这两位匹配上了就可以认定该IP符合条件 

            **crypto ipsec transform-set** **传输模式名 esp****/****sh-des****/****3des****/****asp-esp****/****sh-md5****/****sha-hmac**  **# 定义加密及认证方式**

    **例:  crypto ipsec transform-set wentran esp-aes  esp-sha-hmac**

            **ESP:**支持加密及认证(身份验证+完整性

            **AH:**只支持认证(身份验证+完整性) 

创建MAP映射表
            **目的:**阶段一创建了传输集,阶段二定义了ACL表与加密及验证模式,创建MAP映射表将上述配置集合到MAP表内,再把MAP应用到路由器外网接口上

            **conf t**

            **crypto map** **map名 1** **ipsec-isakmp** **# 进入MAP表配置模式。创建一个map表并命名,数字 1 是标识,map名可以重复,可以用标识区分,isakmp表示第一阶段一所有策略集**。**目的:跟对方交换密钥**

            **match address**  **acl表名**          **# 将第二阶段的数据连接的ACL表映射过来**

            **set transform-set** **传输模式名**  **# 只要匹配ACL表的IP,就使用传输模式定义的加密及认证方式对数据进行加密**

            **set peer** **对方的公网IP**               **#  配置目标的公网ip**

            **exit**

    **例:**

            **conf t**

            **crypto map** **wenmap 1** **ipsec-isakmp**

            **match address** **100**

            **set transform-set** **wentran**

            **set peer** **200.1.1.2**

            **exit**

将MAP表应用到外网端口
            **int f0/1(外网端口)**

            **crypto map** **wenmap # 把wenmap 表应用到接口上**

            **exit** 

    **注意:**一个接囗只能应用一个map表

查看命令: (特权模式的命令,其他模式下前面加do 空格)
            **show crypto isakmp sa                               # 查看第一阶段状态(管理连接)**

            **show crypto ipsec sa                                   # 查看第二阶段状态(数据连接)**

            **show crypto isakmp policy                         # 查看第一阶段的策略配置集**

            **show crypto ipsec transform-set                # 查看第二阶段的传输模式**

            **sh run                                                             # 查看_running_\-config文件,对做过路由器的所有配置都在这里**

    ![](https://img-blog.csdnimg.cn/e28d4a4f17f94303bfcf10cc566e3462.png) 

7、路由器的工作原理

    **如果同时给路由器的出外网端口配了[NAT]( )与VPN他们的执行顺序**

            **内网 \-- to \-- 外网:路由数据到出外网端口 \-- 1NAT \-- VPN  \-- 出去**

8、实验 (点到点VPN -VPN隧道)

  • **实验1:**北京-上海-建立VPN隧道,并验证(中间的路由器不能配内网路由,通过对两边的路由器配置VNP实现通信)
  • **实验2:**在实验1的基础上,要求2个公司能上网,但不影响VPN隧道
  • **实验3:**在实验1和2的基础上,要求北京总部与广州新成立的分公司也建立VPN隧道
  • 实验4:(可选)在1-3的基础上,要求广州和上海之间不建立VPN隧道,但广州和上海可以互相安全的通信
实验1

步骤:
1)给PC和路由的接口配置ip

配置路由器端口IP命令

     **en**                                                       **# 进入特权模式**

    **conf t**                                                   **# 进入全局配置模式**

    **int**  **Fa0/x​​**                                             **# 进入需要配置的端口**

    **ip add** **IP 子网掩码**                              **# 配置IP,如:  ip add 30.1.1.254 255.255.255.0**

    **no shut**                                                **# 开启端口**

2)给左右两边的路由器配置默认路由
     **命令:  
            ip route ip 子网掩码 下一跳IP  \# 给路由器配置一条静态路由**

            **ip route ip 0.0.0.0 0.0.0.0 下一跳IP   # 给路由器配置一条默认路由**

    **配置左边路由器:**

            **conf t**                          **# 进入全局配置模式** 

            **ip route** **0.0.0.0 0.0.0.0 100.1.1.254**

    **配置右边路由器:**

            **conf t**                          **# 进入全局配置模式** 

            **ip route** **0.0.0.0 0.0.0.0 200.1.1.254**

3)配置VNP隧道

注意以下的命令如果和我的模拟器配置的IP和连接的端口一样就可以复制粘贴到软件上,不同的请根据自己的实际情况,修改IP和接口号

配置左边路由器的命令

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 200.1.1.1

access-list 100 permit ip 192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 100
set transform-set wentran
set peer 200.1.1.1
exit

int fa0/0
crypto map wenmap


配置右边路由器的命令

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 100.1.1.1

access-list 100 permit ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 100
set transform-set wentran
set peer 100.1.1.1
exit

int fa0/0
crypto map wenmap


4)拿一台PC继续ping一下目标公司的PC,测试网络的连通性

**实验2:**在实验1的基础上,要求2个公司能上网,但不影响VPN隧道
步骤:
1)给连接服务器的路由器端口与服务器配置ip

      **配置路由器端口IP命令**

             **en**                                                       **# 进入特权模式**

            **conf t**                                                   **# 进入全局配置模式**

            **int**  **Fa0/x​​**                                             **# 进入需要配置的端口**

            **ip add** **IP 子网掩码**                              **# 配置IP,如:  ip add 150.1.1.254 255.255.255.0**

            **no shut**                                                **# 开启端口**

2)配置NAT让内网可以访问外网

    **配置北京总公司的路由器(端口号与IP要改成自己的)**

       **定义内网端口**

            **en                     # 进入特权模式**

            **conf t**                **# 进入全局配置模式**

            **int** **fa0/1**           **# 进入需要设置的端口**

            **ip nat inside**    **# 将端口定义为内网端口**

            **exit**

    **定义外网端口**

            **conf t**                **# 进入全局配置模式**

            **int** **fa0/0**            **# 进入需要设置的端口**

            **ip nat outside**  **\# 将端口定义为外网端口**

            **exit**                   **# 退到上一级**

    **定义内部地址池**

            **conf t                # 进入全局配置模式**

            **acc 101 deny ip 192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255    \# 拒绝192.168开头网段访问172.16开头网段(不做IP源地址转换),注意配置这条命令不会影响实验一的VPN隧道,因为这里ACL表是101,实验1的是100,而且这里配置的表没有挂载到接口上,所以也不用担心192.168开头网段访问其他网段会被[ACL技术]( )干掉**

            **acc** **101** **permit ip any any**    **# 将所有的ip地址都加入101号地址池内,全部允许通过(除了92.168开头网段访问172.16开头网段的包)**

            **do show  ip access-list**   **表IP**   **#  查看ACL表, 表IP 是可选的,不写就查看所有表**

            **exit**                          **# 退到上一级**

    **做PAT动态映射(映射到外网端口)**

            **conf  t**

            **ip  nat   inside   source  list  100  int  fa0/0   overload   # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后再做端口转换**

测试一下

    **配置上海分公司的路由器(端口号要改成自己的)**

      **定义内部地址池 (其他命令都一样就是这里的IP要调换一下)**

              **acc 101 deny ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255    # 禁止172.16开头网段访问192.168开头网段(不做IP源地址转换)**

            **acc 101 permit ip any any    # 将所有的ip地址都加入101号地址池内,全部允许通过(除了92.168开头网段访问172.16开头网段的包)**

测试一下

**实3:**在实验1和2的基础上,要求北京总部与广州新成立的分公司也建立VPN隧道
步骤:
1)给连接服务器的路由器端口与服务器配置ip

   **配置路由器端口IP命令**

             **en**                                                       **# 进入特权模式**

            **conf t**                                                   **# 进入全局配置模式**

            **int**  **Fa0/x​​**                                             **# 进入需要配置的端口**

            **ip add** **IP 子网掩码**                              **# 配置IP,如:  ip add 10.1.1.1 255.255.255.0**

            **no shut**                                                **# 开启端口**

2)给路由器的外网接口配置一条默认路由
             **conf t**                          **# 进入全局配置模式** 

            **ip route** **0.0.0.0 0.0.0.0 120.1.1.254**

            **exit**                             **# 退到上一级**

            **do show ip route**        **#  查看路由表**

3)配置VNP隧道

配置自己路由器的命令

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 100.1.1.1

access-list 100 permit ip 10.1.0.0 0.0.255.255 192.168.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 102
set transform-set wentran
set peer 100.1.1.1
exit

int fa0/1
crypto map wenmap


配置北京的路由器

**sh run                                                             # 查看_running_\-config文件,对做过路由器的所有配置都在这里**

配置思路分析:

    **(1)阶段一**现在只有指向上海分公司的公网ip:200.1.1.1,我们现在需要让他多一条指向广州分公司的公网ip:120.1.1.1 ,阶段一其他的设置是可以共用的,所以阶段一配置命令如下:

             **en**                                                       **# 进入特权模式**

            **conf t**                                                   **# 进入全局配置模式**

            **crypto isakmp key** **zhangsan** **address** **120.1.1.1**  **\# 配置指向广州公网IP的共享密钥**

           **do  sh run**                                                  **# 查看_running_\-config文件,检查一下刚才的配置**

(2)阶段二之前配置是在ACL表号为100的表里面设置让192.168在访问上海分公司172.16的网段可以走VPN隧道,我们现在需要让他多一条允许192.168在访问广州分公司内网IP:10.1开头的网段也可以走VPN隧道,阶段二其他的设置也是可以共用的,所以阶段二配置命令如下:

            **conf t**                                                   **# 进入全局配置模式** 

            **access-list 102 permit ip 192.168.0.0 0.0.255.255 10.1.0.0 0.0.255.255  # 往北京的路由器的ACL表号为102的表添加一条让192.168.开头的网段ip可以访问10.1开头的网段条目,注意表号100的已经是给北京访问上海的使用了,不能再把条目添加都100表内**

            **do sh run**                                                  **# 查看_running_\-config文件,检查一下刚才的配置**

     **(3)阶段三**就是配置MAP映射表

            **conf t**                                                   **# 进入全局配置模式**

            **crypto map** **wenmap 2**  **ipsec-isakmp** **# 进入MAP表配置模式。创建一个map表并命名为****wenmap** **,数字 2 是标识,我这里的模式名和实验一的MACP是一样并且wenmap 这张表之前已经应用到接口上了现在是通过标识来区分不同的表,之前的标识是1,现在的是2**

            **match address** **102**    **\# 将第二阶段的数据连接的ACL表** **102****映射过来,简单理解就是要使用102表做匹配**  
            **set transform-set** **wentran   #** **只要匹配ACL表的IP,就使用实验一定义的传输模式****wentran 做****加密及认证方式对数据进行加密**  
            **set peer 120.1.1.1**           **#** **配置目标的公网ip(这里是指广州分公司的公网ip)**

    **(4)**现在北京指向广州分公司的VPN隧道已经配置完成了,但是现在还是无法通信的因为在实验2我们给北京总部的路由器配置了NAT的**PAT**,**PAT**会把数据帧的源IP转换成公网ip,我们这里北京访问广州分公司是走VPN隧道的所以要设置豁免,让PAT对他不做转换:

    **向ACL表插入条目**

         **conf t**                                                   **# 进入全局配置模式**

        **ip access-list extended 101**   **# 进入要修改的表101**

        **15 deny ip 192.168.0.0 0.0.255.255** **10.1.0.0  0.0.255.255  # 在ID为15的位置插入条目**

         **exit                                                 # 退到上一级**

         **do show ip access-list   101        \# 查看ACL表,表号可选,不写查找全部**

4)测试,网络连通性
             **先用北京的PC上网与ping 一下上海的PC**

    **然后让广州的PC ping 北京的PC**

**实验4:**在1-3的基础上,要求广州和上海之间不建立VPN隧道,但广州和上海可以互相安全的通信

(1)现在已经有了VPN隧道,不过是广州与北京的,我们要加ACL表内添加一条匹配广州与上海的条目。
    **目的:**因为现在的广州分公司VPN隧道是指向北京的,我们已经加ACL表内添加一条匹配广州与上海的条目,所以用广州的PC访问上海的PC的数据也会被路由到北京总部的那个路由器,然后再配置一下北京总部的那个路由器的ACL表,再由他路由把数据路由到上海分公司(之前已经配置过北京到上海的VPN隧道)

    **在广州这边的路由器添加** 

      **conf t**                                                   **# 进入全局配置模式**

     **acc 102 permit ip 10.1.0.0 0.0.255.255 172.16.0.0 0.0.255.255  \# 添加一条匹配广州到上海的条目(意思就是广州到上海也让他走VPN隧道,这个隧道是广州到北京。**

通俗点理解(举例):广州到上海没有高铁(VPN隧道),但是广州到北京有高铁我可以先坐车到北京再转车到上海,因为北京到上海有高铁(有VPN隧道))

(2)北京总部与上海分公司的VPN隧道的ACL表只有一条匹配北京访问上海的(192.168 - 172.16),现在要加一条广州到上海的条目(10.1 - 172.16)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

conf t # 进入全局配置模式

 **acc 102 permit ip 10.1.0.0 0.0.255.255 172.16.0.0 0.0.255.255  \# 添加一条匹配广州到上海的条目(意思就是广州到上海也让他走VPN隧道,这个隧道是广州到北京。**

**通俗点理解(举例):广州到上海没有高铁(VPN隧道),但是广州到北京有高铁我可以先坐车到北京再转车到上海,因为北京到上海有高铁(有VPN隧道))**


![](https://img-blog.csdnimg.cn/fb45b09d5c26489ab0a69a2aecc1b874.png)


#### **(2)北京总部与上海分公司的VPN隧道的ACL表只有一条匹配北京访问上海的(192.168 - 172.16),现在要加一条广州到上海的条目(10.1 - 172.16)**





[外链图片转存中...(img-WJEtGWkw-1715532091528)]
[外链图片转存中...(img-siFJ424I-1715532091529)]
[外链图片转存中...(img-mUWSG07L-1715532091529)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值