21.VPN技术简介及GRE隧道技术
VPN技术简介
虚拟专用网络(VPN)的功能是:在公用网络上建立专用网络,进行加密通讯。在企业网 络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。 VPN有多种分类方式,主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方 式实现。 VPN按照协议实现一般分为以下类别:
1、二层VPN:包括点到点隧道协议(PPTP)、第二层转发协议(L2F),第二层隧道 协议(L2TP)、多协议标记交换(MPLS)等;
2、三层VPN:包括通用路由封装协议(GRE)、IP安全(IPSec),这是目前最流行 的两种三层协议;
3、应用层VPN:包括安全套接层(SSL)和传输层安全(TLS),准确来说工作在传输 层和应用层之间。
VPN实现主要设计到的技术:
1、隧道技术: 是VPN的核心技术,VPN的所有实现都是依赖于隧道。隧道主要利用协议的封装来实 现的。即用一种网络协议来封装另一种网络协议的报文。
2、加密技术: 信息加密体制包括对称加密体制和非对称加密体制,实际应用中通常是融合二者的混合 加密技术。非对称加密技术(公开秘钥)多用于认证、数字签名以及安全传输会话秘钥等场 合,对称加密技术则用于大量传输数据的加密和完整性保护。
3、秘钥管理技术 现行秘钥管理技术分为SKIP和ISAKMP/OAKLEY两种。SKIP主要利用Diffie-Hellman 算法在开放网络上安全传输秘钥;而ISAKMP则采用公开秘钥机制,通信实体双方均有两把 秘钥,分别为公钥、私钥,不同的VPN实现技术选用其一或者兼而有之。
4、身份认证技术 认证协议一般都要采用基于散列函数的消息摘要技术,因而还可以提供消息完整性验 证。从实现技术来看,目前VPN采用的身份认证技术主要分为非PKI体系和PKI体系两类。
IPSec(Internet Protocol Security)是IETF定义的一个协议组。 通信双方在IP层通过 加密、 完整性校验、 数据源认证等方式,保证了IP数据报文在网络上传输的机密性、 完整 性和防重放。 1、机密性(Confidentiality) 指对数据进行加密保护, 用密文的形式传送数据。 2、完整性(Data integrity) 指对接收的数据进行认证, 以判定报文是否被篡改。
3、防重放(Anti-replay) 指防止恶意用户通过重复发送捕获到的数据包所进行的攻 击, 即接收方会拒绝旧的或重复的数据包。 企业远程分支机构可以通过使用IPSec VPN建立安全传输通道, 接入到企业总部网络。
GRE隧道技术
通用路由封装协议GRE(Generic Routing Encapsulation)提供了将一种协议的报文封 装在另一种协议报文中的机制,是一种隧道封装技术。GRE可以封装任何网络层协议,包括 组播数据,这样就可以保证路由协议、音频、视频流量通过GRE隧道进行传输,GRE可以解 决异种网络的传输问题。 GRE本身并不支持加密, 因而通过GRE隧道传输的流量是不加密的。 将IPSec技术与 GRE结合使用, 先建立GRE隧道对报文进行GRE封装,然后再建立IPSec隧道对报文进行加 密, 以保证报文传输的完整性和私密性。 GRE封装报文时,封装前的报文称为净荷,封装前的报文协议称为乘客协议,然后GRE 会封装GRE头部,GRE成为封装协议,也叫运载协议,最后负责对封装后的报文进行转发的 协议称为传输协议。
GRE封装和解封装报文的过程如下:
1、设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表 查找出接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理。
2、隧道模块接收到报文后首先根据乘客协议的类型和当前GRE隧道配置的校验和参 数,对报文进行GRE封装,即添加GRE报文头。
3、然后,设备给报文添加传输协议报文头,即IP报文头。该IP报文头的源地址就是隧 道源地址,目的地址就是隧道目的地址。
4、最后,设备根据新添加的IP报文头目的地址,在路由表中查找相应的出接口,并发 送报文。之后,封装后的报文将在公网中传输。
5、接收端设备从连接公网的接口收到报文后, 首先分析IP报文头, 如果发现协议类 型字段的值为47, 表示协议为GRE, 于是出接口将报文交给GRE模块处理。 GRE模块去掉 IP报文头和GRE报文头, 并根据GRE报文头的协议类型字段, 发现此报文的乘客协议为私 网中运行的协议, 于是将报文交给该协议处理。 关键字(Key) 验证是指对隧道接口进行校验,这种安全机制可以防止错误接收到来自 其他设备的报文。关键字字段是一个四字节长的数值,若GRE报文头中的K位为1,则在 GRE报文头中会插入关键字字段。只有隧道两端设置的关键字完全一致时才能通过验证,否 则报文将被丢弃。
Keepalive检测功能用于在任意时刻检测隧道链路是否处于Keepalive状态, 即检测隧 道对端是否可达。 如果对端不可达, 隧道连接就会及时关闭, 避免形成数据空洞。 使能 Keepalive检测功能后, GRE隧道本端会定期向对端发送Keepalive探测报文。 若对端可 达, 则本端会收到对端的回应报文;若对端不可达, 则收不到对端的回应报文。 如果在隧 道一端配置了Keepalive功能, 无论对端是否配置Keepalive, 配置的Keepalive功能在该 端都生效。 隧道对端收到Keepalive探测报文, 无论是否配置 Keepalive, 都会给源端发送一个回应报文。 使能Keepalive检测功能后, GRE隧道的源端会创建一个计数器,并周期性地发送 Keepalive探测报文, 同时进行不可达计数。每发送一个探测报文,不可达计数加1。如果 源端在计数器值达到预先设置的值之前收到回应报文,则表明对端可达。如果计数器值达到 预先设置的重试次数, 源端还是没有收到回应报文,则认为对端不可达。此时,源端将关 闭隧道连接。
实现GRE隧道
可以在路由器、硬件防护墙或者Linux主机上实现GRE协议,配置方式虽然不同,但是 只要理解了协议原理,其实都差不多,只是配置命令不同而已。
注意:在配置GRE隧道之前,一定要保证隧道两端能够互通,即隧道的源地址和目的 地址是可以通信的。
配置过程:
1、创建并启动隧道接口: interface Tunnel0/0/1 ip address 10.1.1.1 255.255.255.0
tunnel-protocol gre
source 100.1.1.2
destination 200.1.1.2
interface tunnel interface-number命令用来创建Tunnel接口。 创建Tunnel接口后, 需要配置Tunnel接口的IP地址和Tunnel接口的封装协议。
tunnel-protocol命令用来配置Tunnel接口的隧道协议。
source { source-ip-address | interface-type interface-number }命令用来配置Tunnel源 地址或源接口。
destination dest-ip-address命令用来指定Tunnel接口的目的IP地址。
2、验证隧道接口状态 [BeiJing]display interface Tunnel 0/0/1 Tunnel0/0/1 current state : UP
Line protocol current state : UP
Last line protocol up time : 2019-05-15 16:26:56 UTC-08:00
Description:HUAWEI, AR Series, Tunnel0/0/1 Interface Route Port,The Maximum Transmit Unit is 1500 Internet Address is 10.1.1.1/24
Encapsulation is TUNNEL, loopback not set Tunnel source 100.1.1.2 (GigabitEthernet0/0/0), destination 200.1.1.2
Tunnel protocol/transport GRE/IP, key disabled keepalive disabled Checksumming of packets disabled
Current system time: 2019-05-15 16:30:46-08:00 300 seconds input rate 0 bits/sec, 0 packets/sec 300 seconds output rate 0 bits/sec, 0 packets/sec 0 seconds input rate 0 bits/sec, 0 packets/sec 0 seconds output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes 0 input error 5 packets output, 540 bytes 0 output error Input bandwidth utilization : -
Output bandwidth utilization : -
也可以ping一下对端设备的隧道接口,查看是否可以通信。如果可以ping通,说明隧道建立 成功
3、配置到达对端设备后面网络的路由条目。
可以使用静态路由,也可以使用动态路由。下一跳为对端设备的隧道接口IP地址,或者 设置出接口为本地隧道接口也可以。
[BeiJing]ip route-static 172.16.1.0 24 Tunnel 0/0/1
4、配置Keepalive检测 interface Tunnel0/0/1
keepalive period 6
- 原文作者:老鱼干🦈
- 原文链接://www.tinyfish.top:80/post/network/21.VPN%E6%8A%80%E6%9C%AF%E7%AE%80%E4%BB%8B%E5%8F%8AGRE%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。