GRE 协议 - 和 ISP 用的协议不一样怎么办
GRE 出现的背景:
随着网络(公司)规模的增大,越来越多的公司需要在跨区域之间建设自己的分公司。但随之也就出现了这样的问题,考虑这样一个场景。公司 A 在北京和上海间开设了两家公司,由于业务的需要,需要实现两家公司间的数据通信。公司考虑到未来的发展,在北京和上海启动了 IPV6 作为网络层的传输协议。但由于使用的 ISP (供应商,比如联通)在公网提供的是 IPV4 的网络层协议,这时想要通信该怎么办呢?
GRE 就是为了解决这个问题而出现的,专业些说解决的就是异种网络的传输问题。
GRE 的原理
GRE 采用了 Tunnel 技术,进行异种网络的传输。

乘客协议(Passenger):想要实现通信的协议,如例子中的 IPV6 协议
封装协议:将乘客协议封装起来的协议,按照一定的规则,进行封装和解封装。
传输协议:ISP 认识的协议,如 IPV4 协议。
将想要通信的协议封装成 GRE 协议,然后传输 GRE 协议,在对方收到 GRE 协议后,解封装,拿出想要通信的协议,然后解析。
- checksum:校验和,用于检测整个 GRE 数据包的准确性,包括图中黄色的部分。
- Protocol Type:使用的协议,比如 Ox0800 表示 IP 协议,公网传输的协议。
- Key:用于隧道的认证
GRE 的配置
这里假设 R2 为 ISP 提供的公网访问接口,R1 和 R3 使用的是公司内网地址。正常来说,内网地址是无法通过公网进行传递的。公网地址接受后会将其丢掉。
如果想实现通信,就可以使用 GRE 协议,目的仅仅是想让 ISP 将 R1 的数据包发送到 R3,就像在 R1 和 R3 中间建立起了一条直连的通道。

# STEP1: R1 config interface
# config default route for R2 because we need R1 to R3 to be reachable
Router(config)# ip route 0.0.0.0 0.0.0.0 12.1.1.2
# open tunnel interface
Router(config)#in tunnel 0
Router(config-if)#tunnel mode gre ip
Router(config-if)#ip 13.1.1.1 255.255.255.0
Router(config-if)#tunnel source 12.1.1.1
Router(config-if)#tunnel destination 23.1.1.2
Router#show running-config interface tunnel 0
# transfer network traffic to Tunnel0 Interface
Router(config)#ip route 192.168.2.0 255.255.255.0 Tunnel 0
# STEP2: R2 config interface
# STEP3: R3 config interface
# config default route for R2 because we need R3 to R1 to be reachable
Router(config)# ip route 0.0.0.0 0.0.0.0 23.1.1.1
# open tunnel interface
Router(config)#in tunnel 0
Router(config-if)#tunnel mode gre ip
Router(config-if)#ip 13.1.1.2 255.255.255.0
Router(config-if)#tunnel source 23.1.1.2
Router(config-if)#tunnel destination 12.1.1.1
Router#show running-config interface tunnel 0
# transfer network traffic to Tunnel0 Interface
Router(config)#ip route 192.168.1.0 255.255.255.0 Tunnel 0
这里从 Router1 的接口抓包:

Tunnel 接口配置 IP 的作用:
简化流量引入的配置过程。上面的配置通过静态路由将去往 192.168.2.0 的流量引入到 Tunnel 口中。
但加入存在多个网段,这样配置较为繁琐。
所以可以将 R1 和 R3 的接口运行动态路由协议,进而不用在去手动管理。
GRE 协议 - 和 ISP 用的协议不一样怎么办的更多相关文章
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
为了解决这题,可以具体看看下面这个讨论. 解灵运工程师 185 人赞同 某次架构师大会上那个58同城做即时通信的人说:原因是因为当时没有epoll这种可以支持成千上万tcp并发连接的技术,所以他们使用 ...
- 协议 - OSI七层网络协议模型
摘自:https://www.cnblogs.com/oneplace/p/5611094.html 互联网协议 本文全文转载阮一峰老师的两篇文章,自己做了一些添加内容 参考:互联网协议入门(一) 互 ...
- 【Win 10开发】协议-上篇:自定义应用协议
就像系统许多内置应用可以通过URI来启动(如ms-settings-bluetooth:可以打开蓝牙设置页),我们自己开发的应用程序,如果需要的话,可以为应用程序自定义一个协议.应用程序协议在安装时会 ...
- HTTP协议—— 简单认识TCP/IP协议
大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...
- ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...
- 基于UDP协议模拟的一个TCP协议传输系统
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...
- https协议了解,以及相关协议的解析
HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- 基于SSL协议的双向认证 - SSL协议 [1]
1 概要说明 在互联网通信方式中,目前用的最广泛的是HTTPS配合SSL和数字证书来保证传输和认证安全了. 2 详细介绍 2.1 HTTPS HTTPS全称:Hypertext Transf ...
- RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
RTSP 编辑 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwo ...
随机推荐
- 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比
简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...
- Python 3.x 安装PyQt5
一. 安装PyQt5 官方要求Python版本:Python >=3.5 打开命令行 输入 pip install PyQt5 PyQt5安装成功 安装完成功PyQt5后发现没有design ...
- js获得url地址携带参数
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- APP自动化 -- 坐标获取和点击
一.获取元素坐标 二.点击坐标 1.driver的点击(这个可以实现多点同时点击) 1)执行 这个coordinate变量必须是一个list coordinate_list = [(0, 0), (1 ...
- C# WebClient几种常用方法的用法
1.UploadData方法(Content-Type:application/x-www-form-urlencoded) //创建WebClient 对象 WebClient ...
- Java基础(一)基础常识
Java开发基础流程图: 也可参考这篇博客: https://www.cnblogs.com/xdp-gacl/p/3624567.html 常用的Windows的DOS命令 : dir : 列出当前 ...
- Java复习总结(二)Java SE 面试题
Java SE基础知识 目录 Java SE 1. 请你谈谈Java中是如何支持正则表达式操作的? 2. 请你简单描述一下正则表达式及其用途. 3. 请你比较一下Java和JavaSciprt? 4. ...
- Spring Cloud系列之使用Feign进行服务调用
在上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本 ...
- Mac Sourcetree克隆项目提示无效的url
之前用SoucreTree拉去过另一个账号的git项目,今天创建了一个新的码云账号,克隆里面的项目是一直报错误 > 错误如下: > 原因以及解决方案:
- 02_HTML01
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"软件测试"获取视频和教程资料! b站在线视频 HTML ...
