19 GRE VPN(理论+实验)

对于规模较大的企业来说,网络访问需求不仅仅局限于公司总部网络内,分公司、办事处、出差员工、合作单位等也需要访问公司总部的网络资源,可以采用VPN(Virtual Private Network,虚拟专用网络)技术来实现这一需求。VPN可以在不改变现有网络结构的情况下,建立虚拟专用连接。因其具有廉价、专用和虚拟等多种优势,在现网中应用非常广泛。

VPN(Virtual Private Network)简介

VPN即虚拟专用网,泛指通过VPN技术在公用网络上构建的虚拟专用网络。VPN用户在此虚拟网络中传输私网流量,在不改变网络现状的情况下实现安全、可靠的连接。

虚拟(Virtual)

VPN用户的通信是通过公共网络进行的,而这个公共网络同时也可以被其他非VPN用户使用,VPN用户获得的只是一个逻辑意义上的专网。

专有性(Private)

VPN网络是专门供VPN用户使用的网络,对于VPN用户,使用VPN与使用传统专网没有区别。VPN能够提供足够的安全保证,确保VPN内部信息不受外部侵扰。VPN与底层承载网络(一般为IP网络)之间保持资源独立,即VPN资源不被网络中非该VPN的用户所使用。

VPN分类

根据建设单位不同:

租用运营商VPN专线搭建企业VPN网络
自建企业VPN网络

根据组网方式不同

远程访问VPN(Remote Access VPN)(多对一)
局域网到局域网的VPN(Site-to-site VPN)(点对点,GRE就是一种点对点的VPN)

根据实现的网络层次

应用层:SSL VPN
网络层:IPSec VPN、GRE VPN
数据链路层:L2TP VPN、PPTP VPN

VPN关键技术-隧道技术

VPN技术的基本原理是利用隧道(Tunnel)技术,对传输报文进行封装,利用VPN骨干网建立专用数据传输通道,实现报文的安全传输。位于隧道两端的VPN网关,通过对原始报文的“封装”和“解封装”,建立一个点到点的虚拟通信隧道。

image

VPN关键技术 - 身份认证、数据加密与验证

身份认证、数据加密和认证技术可以有效保证VPN网络与数据的安全性:
身份认证:可用于部署了远程接入VPN的场景,VPN网关对用户的身份进行认证,保证接入网络的都是合法用户而非恶意用户。也可以用于VPN网关之间对对方身份的认证。
数据加密:将明文通过加密变成密文,使得数据即使被黑客截获,黑客也无法获取其中的信息。
数据验证:通过数据验证技术对报文的完整性和真伪进行检查,丢弃被伪造和被篡改的报文。

image

GRE概述

通用路由封装协议(General Routing Encapsulation,GRE)是一种三层VPN封装技术。GRE可以对某些网络层协议(如IPX、IPv4、IPv6等)的报文进行封装,使封装后的报文能够在另一种网络中(如IPv4)传输,从而解决了跨越异种网络的报文传输问题。

image

GRE基本原理

GRE构成要素分为3个部分:乘客协议、封装协议和运输协议。
乘客协议是指用户在传输数据时所使用的原始网络协议。
封装协议的作用就是用来“包装”乘客协议对应的报文,使原始报文能够在新的网络中传输。
运输协议是指被封装以后的报文在新网络中传输时所使用的网络协议。

image

如图所示,乘客协议为IPv6,封装协议为GRE,运输协议为IPv4。整体转发流程如下:
当R1收到IP1发来的IPv6数据包,查询设备路由表,发现出接口是隧道接口,则将此报文发给隧道接口处理。
隧道接口给原始报文添加GRE头部,然后根据配置信息,给报文加上IP头。该IP头的源地址就是隧道源地址,IP头的目的地址就是隧道目的地址。
封装后的报文在IPv4网络中进行普通的IPv4路由转发,最终到达目的地R2。

实验

配置GRE VPN命令
了解工作原理

拓扑

通过GRE VPN将AR1和AR3的内网打通
image

配置

AR1配置

基础IP配置
<Huawei>sys
[Huawei]sys AR1
[AR1]inte gi 0/0/0
[AR1-GigabitEthernet0/0/0]ip addr 12.1.1.1 255.255.255.0
[AR1-GigabitEthernet0/0/0]inte lo 1
[AR1-LoopBack1]ip addr 1.1.1.1 32
[AR1-LoopBack1]q
[AR1]ip route-static 0.0.0.0 0 12.1.1.2   //AR2模拟运营商,去往公网的流量缺省给运营商
配置隧道接口,封装协议为GRE VPN
[AR1]interface Tunnel 0/0/0       //创建隧道口
[AR1-Tunnel0/0/0]tunnel-protocol gre //隧道封装协议为Tunnel
[AR1-Tunnel0/0/0]source 12.1.1.1    //封装GRE时的源IP为12.1.1.1
[AR1-Tunnel0/0/0]destination 13.1.1.3   //封装GRE时的目的IP为13.1.1.3
[AR1-Tunnel0/0/0]ip addr 10.1.1.1 30   //配置隧道口的IP地址

AR2配置

<Huawei>sys
[Huawei]sys AR2
[AR2]inte gi 0/0/0
[AR2-GigabitEthernet0/0/0]ip addr 12.1.1.2 255.255.255.0
[AR2-GigabitEthernet0/0/0]inte gi 0/0/1
[AR2-GigabitEthernet0/0/1]ip addr 13.1.1.2 255.255.255.0
[AR2-GigabitEthernet0/0/1]inte lo 8
[AR2-LoopBack8]ip addr 8.8.8.8 32

AR3配置

<Huawei>sys
[Huawei]sys AR3
[AR3]inte gi 0/0/1
[AR3-GigabitEthernet0/0/1]ip addr 13.1.1.3 255.255.255.0
[AR3-GigabitEthernet0/0/1]inte lo 1
[AR3-LoopBack1]ip addr 3.3.3.3 32
[AR3-LoopBack1]inte tunnel 0/0/0
[AR3-Tunnel0/0/0]ip addr 10.1.1.2 30
[AR3-Tunnel0/0/0]tunnel-protocol gre
[AR3-Tunnel0/0/0]destination 12.1.1.1
[AR3-Tunnel0/0/0]source 13.1.1.3
[AR3-Tunnel0/0/0]q
[AR3]ip route-static 0.0.0.0 0 13.1.1.2

此时AR1和AR3的出口已经可以完成通信,隧道口建立完毕,可以通过查看接口的协议状态是否启动判断,在GRE封装的源目地址(AR1和AR3的出口地址)未能通信前,隧道口的协议状态是down的,并且将tunnel口作为直连路由加入路由表,去往10.1.1.0/30都将走隧道口

[AR1]dis ip inte b 
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 4
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 4
The number of interface that is DOWN in Protocol is 2

Interface                         IP Address/Mask      Physical   Protocol  
GigabitEthernet0/0/0              12.1.1.1/24          up         up        
GigabitEthernet0/0/1              unassigned           down       down      
GigabitEthernet0/0/2              unassigned           down       down      
LoopBack1                         1.1.1.1/32           up         up(s)     
NULL0                             unassigned           up         up(s)     
Tunnel0/0/0                       10.1.1.1/30          up         up          //协议状态UP
[AR1] 

此时的隧道口已经可以建立通信
AR1 ping AR3

[AR1]ping 10.1.1.2
  PING 10.1.1.2: 56  data bytes, press CTRL_C to break
    Reply from 10.1.1.2: bytes=56 Sequence=1 ttl=255 time=30 ms
    Reply from 10.1.1.2: bytes=56 Sequence=2 ttl=255 time=30 ms
    Reply from 10.1.1.2: bytes=56 Sequence=3 ttl=255 time=30 ms
    Reply from 10.1.1.2: bytes=56 Sequence=4 ttl=255 time=30 ms
    Reply from 10.1.1.2: bytes=56 Sequence=5 ttl=255 time=30 ms

  --- 10.1.1.2 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 30/30/30 ms
[AR1]dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 12       Routes : 12       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  60   0          RD   12.1.1.2        GigabitEthernet
0/0/0
        1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack1
       10.1.1.0/30  Direct  0    0           D   10.1.1.1        Tunnel0/0/0      //隧道口的直连路由
       10.1.1.1/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       10.1.1.3/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       12.1.1.0/24  Direct  0    0           D   12.1.1.1        GigabitEthernet
0/0/0
       12.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

在AR1的GE0/0/0抓包分析

上文通过查询路由表,AR1通过直连路由选择去往10.1.1.0/30为目标的出接口为Tunnel,Tunnel口将为通过此接口的数据包的网络层上再封装一层GRE协议和一层新的IPv4协议,其中的源目地址即为再TUNNEL中设备的源目IP,以此达到数据包在公网中传输的目的,在到达对端内网出口路由器时,在通过原始的IPv4协议报文进行通信

image

OSPF配置

隧道口已经可以通信,通过配置OSPF协议,将两端内网的路由信息通过隧道口发给对方学习,就可以完成两端内网的其他设备通信

AR1

[AR1]ospf 1 router-id 1.1.1.1
[AR1-ospf-1]area 0
[AR1-ospf-1-area-0.0.0.0]network 10.1.1.1 0.0.0.0   //通过宣告隧道口与对端内网进行OSPF邻接建立
[AR1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

AR3

[AR3]ospf 1 router-id 3.3.3.3
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]network 10.1.1.2 0.0.0.0
[AR3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0

AR1的GE0/0/0口抓包

AR1和AR2的OSPF协商报文都通过隧道口封装了GRE协议和新的IP协议,以此达到通过公网将OSPF协商报文成功传达到不同的内网
image

查看AR1和AR3的路由表,通过OSPF学习到了对端内网的网络信息

<AR1>dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 13       Routes : 13       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  60   0          RD   12.1.1.2        GigabitEthernet
0/0/0
        1.1.1.1/32  Direct  0    0           D   127.0.0.1       LoopBack1
        3.3.3.3/32  OSPF    10   1562        D   10.1.1.2        Tunnel0/0/0    //AR3的内网路由
       10.1.1.0/30  Direct  0    0           D   10.1.1.1        Tunnel0/0/0
       10.1.1.1/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       10.1.1.3/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       12.1.1.0/24  Direct  0    0           D   12.1.1.1        GigabitEthernet
0/0/0
       12.1.1.1/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
     12.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/0
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

<AR3>dis ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 13       Routes : 13       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   Static  60   0          RD   13.1.1.2        GigabitEthernet
0/0/1
        1.1.1.1/32  OSPF    10   1562        D   10.1.1.1        Tunnel0/0/0
//AR1的内网路由
        3.3.3.3/32  Direct  0    0           D   127.0.0.1       LoopBack1
       10.1.1.0/30  Direct  0    0           D   10.1.1.2        Tunnel0/0/0
       10.1.1.2/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       10.1.1.3/32  Direct  0    0           D   127.0.0.1       Tunnel0/0/0
       13.1.1.0/24  Direct  0    0           D   13.1.1.3        GigabitEthernet
0/0/1
       13.1.1.3/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
     13.1.1.255/32  Direct  0    0           D   127.0.0.1       GigabitEthernet
0/0/1
      127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
      127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0

测试两个内网通信,在AR1的GE0/0/0抓包分析

<AR1>ping -a 1.1.1.1 3.3.3.3
  PING 3.3.3.3: 56  data bytes, press CTRL_C to break
    Reply from 3.3.3.3: bytes=56 Sequence=1 ttl=255 time=40 ms
    Reply from 3.3.3.3: bytes=56 Sequence=2 ttl=255 time=40 ms
    Reply from 3.3.3.3: bytes=56 Sequence=3 ttl=255 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=4 ttl=255 time=30 ms
    Reply from 3.3.3.3: bytes=56 Sequence=5 ttl=255 time=40 ms

  --- 3.3.3.3 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 30/36/40 ms

通信过程

通过隧道口封装GRE和新的IP协议,两端内网的OSPF协商报文成功交互,学习到了各自的内网路由,去往对端内网的路由出接口为Tunnel口,Tunnel口再将经过此接口的数据包的IP协议之后封装上GRE和新的IP协议,新的IP协议中的源目IP地址为两个内网的出口公网地址,以此达到数据包可以通过公网到达内网的目的,在内网的出口路由器接受到数据包后再通过原始的IP协议封装进行转发,回包同理,以此到达两个内网的通信

image

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值