2024.1212-02-虚拟私人网(VPN) 虚拟局域网 及隧道技术(四)--GRE47 Etherip97 原理及应用

虚拟局域网 及隧道技术(四)-GRE47 & Etherip97原理及应用

  • 概述
    • 原理及应用
    • EOIP/Etherip概念区别
  • 隧道协议标准
    • EtherIP (IP protocol number 97)
    • GRE
  • 开源工具
    • katlogic-eoip
  • 验证环境
  • GRE(EOIP)演示验证
  • Etherip 97演示验证


  • VPN技术广泛应用于远程办公网络、云平台的主机迁移、端到端加密通信等等, 本专栏系列文章将详细介绍常用的VPN技术原理,并搭建实验环境,进行实际演示验证,另通过日志、抓包等手段分析各种技术的特点,总结实践过程中遇到的问题及解决方法。
  • 之前的文章中已经介绍过EOIP的原理及实现方式, 本节介绍EOIP/Etherip区别及协议标准,并通过应用案例解释各自的使用方式。

概述

原理及应用

  1. 概念介绍
    • EtherIP(Ethernet over IP)/EOIP:这是一种隧道协议,主要用于在 IP 网络(如 Internet)上传输以太网帧。它允许将一个以太网网络通过 IP 网络连接到另一个以太网网络,就好像这两个以太网网络是直接相连的一样。
  2. 工作原理
    • 当一个以太网帧在源端进入 EtherIP/EOIP 隧道时,该帧会被封装在一个 IP 数据包中。这个 IP 数据包的源地址和目的地址分别是隧道两端的 IP 地址。
    • 然后,这个封装后的 IP 数据包通过 IP 网络进行传输。在目的端,IP 数据包被解封装,还原出原始的以太网帧,然后这个以太网帧就可以在目的以太网网络中进行正常的传输,就像它是从本地以太网网络产生的一样。
    • 例如,假设有两个办公室 A 和 B,办公室 A 有一个本地以太网网络,办公室 B 也有一个本地以太网网络。通过 EtherIP/EOIP 隧道,可以将办公室 A 中的一台计算机发送的以太网帧传输到办公室 B 的以太网网络中,使得在办公室 B 的网络看来,这个帧就像是办公室 B 本地网络中的计算机发送的一样。
  3. 应用场景
    • 企业网络扩展:企业可能有多个分支机构,各分支机构都有自己的以太网局域网。通过 EtherIP/EOIP,可以将这些局域网连接起来,形成一个大的企业内部网络。这样,不同分支机构之间的设备就可以像在同一个局域网中一样进行通信,例如共享文件服务器、打印机等资源。
    • 数据中心互联:不同的数据中心之间可能需要传输大量的以太网数据,如虚拟机迁移数据、存储区域网络(SAN)的数据等。EtherIP/EOIP 可以提供一种安全、可靠的方式来实现数据中心之间的以太网连接,确保数据的高效传输。
  4. 优势
    • 协议兼容性:由于它是基于 IP 网络的,只要网络支持 IP 协议,就可以使用 EtherIP/EOIP 来传输以太网帧,这使得它在各种网络环境中都有很好的适用性。
    • 灵活性:可以根据实际需求灵活地配置隧道的端点,方便地调整网络拓扑结构。例如,可以很容易地增加或减少连接的以太网网络数量。
  5. 缺点
    • 网络开销:因为要对以太网帧进行封装和解封装操作,会增加一定的网络开销。这可能会导致网络带宽的利用率降低,特别是在网络带宽有限的情况下,可能会影响数据传输的效率。
    • 安全性风险:如果没有适当的安全措施,如 IPsec 等加密协议配合使用,通过 EtherIP/EOIP 传输的数据可能会面临安全风险,如数据泄露、中间人攻击等。

EOIP/Etherip概念区别

  1. 名称使用习惯方面
    • “EtherIP” 是比较标准的英文名称写法,而 “EOIP” 是其缩写形式(Ethernet over IP 的缩写)。在实际使用中,它们本质上指的是同一种技术概念,都是用于在 IP 网络上传输以太网帧的隧道协议。
  2. 应用场景和具体实现细节可能存在的细微差别(取决于厂商或特定环境)
    • 在一些网络设备厂商的文档中,“EtherIP” 可能被用于指代符合标准 RFC 文档(如 RFC 3378 等相关标准定义)所规范的在 IP 网络中封装以太网帧的技术实现。而 “EOIP” 可能在某些特定厂商的私有实现或者特定的行业应用场景下被提及。
    • 例如,在某些工业自动化网络场景中,可能习惯用 “EOIP” 来指代经过定制化的、用于连接工业现场以太网设备(如 PLC - 可编程逻辑控制器等)的基于 IP 的以太网隧道解决方案。这种解决方案可能会在标准 EtherIP 技术基础上,针对工业网络的高可靠性、实时性等要求做了一些特殊的优化和调整,如对数据传输的优先级设置、抖动控制等方面的优化。

隧道协议标准

EtherIP(Ethernet over IP)/EOIP常采用两种隧道协议进行封装,分别是GRE(IP protocol number 47)和EtherIP (IP protocol number 97)。也有一些私有实现的EoIP协议, IPv4协议帧封装在GRE (IP protocol number 47)报文中,EoIPv6协议则帧封装在EtherIP (IP protocol number 97)报文中。

EtherIP (IP protocol number 97)

EtherIP 遵循RFC 3378: EtherIP: Tunneling Ethernet Frames in IP Datagrams (rfc-editor.org)。

EtherIP was first designed and developed in 1991. The EtherIP protocol is used to tunnel Ethernet [DIX] and IEEE 802.3 [CSMA/CD] media access control (MAC)frames (including IEEE 802.1Q [VLAN] datagrams) across an IP internet. Tunneling is usually performed when the layer three protocol carried in the MAC frames is
not IP or when encryption obscures the layer three protocol control information needed for routing. EtherIP may be implemented in an end station to enable tunneling for that single station, or it may be implemented in a bridge-like station to enable tunneling for multiple stations connected to a particular local area network (LAN) segment.

在这里插入图片描述

GRE

GRE遵循标准: RFC 2784: Generic Routing Encapsulation (GRE)。

Generic Routing Encapsulation (GRE) Feature Overview and Configuration Guide

GRE is a mechanism for encapsulating any network layer protocol over any other network layer protocol. The general specification was originally described in RFC 1701, and the encapsulation of IP packets over IP is defined in RFC 1702 as a specific implementation of GRE. The GRE specification has been formalized in RFC 2784 and is commonly used for encapsulating IPv4 and IPv6 packets inside IPv4 packets. RFC 2890 extends RFC 2784 with the edition of key and sequence number. The IPv4 protocol 47 is used when GRE packets are encapsulated in IPv4. GRE is widely used in VPNs as the mechanism for transporting IP packets between private IP networks across public networks with globally routed IP addresses. The advantage of GRE over other tunneling protocols is that it can encapsulate broadcast, multicast traffic (multicast streaming or routing protocols) or other non-IP protocols. GRE packets can be protected by using Internet Protocol Security (IPSec) ensuring confidentiality and integrity of the tunneled traffic. GRE is stateless and has no knowledge of the configuration or even existence of the remote tunnel endpoint. Once GRE is configured, packets are encapsulated and forwarded whether the decapsulating device is present or not. GRE allows hosts in one private IP network to communicate with hosts in another private IP network by providing a tunnel between two routers across the Internet. The GRE connection endpoints are terminated via a Virtual Tunnel Interface (VTI) configured in each device.
image-2024121220154f20

开源工具

有多个开源项目实现了EOIP/etherip封包功能,如amphineko-eoip、nat-lab-eoip、katlogic-eoip等,前两个在之前的文章中有过介绍,本节介绍一下katlogic-eoip,因其同时支持GRE和etherip两种协议,因此推荐使用。

katlogic-eoip

项目地址: https://gitee.com/seaneer/katlogic-eoip

验证环境

本次验证使用一台R2S,一台NEO3和一台linux服务器,并在linux上使用虚拟网卡对(veth)和桥技术来模拟下挂

image-20241212201548620

GRE(EOIP)演示验证

  1. ubuntu配置

    #创建 tap
    sudo tunctl -t tap0
    sudo ifconfig tap0 up
    sudo ./eoip tap0 172.17.10.146 172.17.10.85:1234			#注意IP地址后面要增加一个端口参数#创建桥 
    sudo brctl addbr br-vx
    sudo ip link set br-vx up   #创建一对虚拟网卡veth, 
    sudo ip link add type veth
    sudo ifconfig veth0 192.168.0.146/24 up
    sudo ifconfig veth1 up##tap0 和 veth1 分别加入 br-vx,  这样从tap0上收到的包会被转发到veth0.
    sudo brctl addif br-vx tap0
    sudo brctl addif br-vx veth1
    sudo brctl show bonc@bonc:~/code/eoip/katlogic-eoip$ brctl show
    bridge name	bridge id		STP enabled	interfaces
    br-vx		8000.0615d4d56968	no		tap0veth1
  2. R2S配置

    ip tuntap add mode tap dev tap0 user nobody
    ifconfig tap0 up
    ./eoip tap0 172.17.10.85 172.17.10.146:1234#wrt上 eth1为lan口, 将其与tap0桥接即可。
    root@5GCPE:~# brctl show
    bridge name	bridge id		STP enabled	interfaces
    br-lan		7fff.b2bfc3fa31ad	no		eth1tap0
    
  3. 抓包分析

image-20241212201548620

Etherip 97演示验证

  1. linux

    #创建一对虚拟网卡veth, 
    sudo ip link add type veth
    sudo ifconfig veth0 192.168.0.146/24 up
    sudo ifconfig veth1 upsudo tunctl -t tap0
    sudo ifconfig tap0 upsudo brctl addif br-vx tap0
    sudo brctl addif br-vx veth1
    sudo brctl show 
    bonc@bonc:~/code/eoip/katlogic-eoip$ brctl show
    bridge name	bridge id		STP enabled	interfaces
    br-vx		8000.0615d4d56968	no		tap0veth
    #启动eoip隧道 
    sudo ./eoip tap0 172.17.10.146 172.17.10.85			
    #####!!!!!注意,按照文档中配置172.17.10.85:etherip时无法正常建立 etherip隧道
  2. WRT

    ip tuntap add mode tap dev tap0 user nobody
    ifconfig tap0 up
    brctl addif br-lan tap0
    brctl addif br-lan eth1			#eth1为lan口,下挂zeo3
    brctl show
    ./eoip tap0 172.17.10.85 172.17.10.146
    
  3. 抓包

    sudo tcpdump -i eno1 'host 172.17.10.85 or 172.17.10.94 or 172.17.10.146 and !172.17.10.56'  -vvv -w test.pcap

    image-20241212201548120

The End.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

文章目录 前言前置条件进制什么是十进制、二进制二进制有什么用?为什么计算机用二进制而不用十进制?二进制转十进制十进制转二进制二进制运算 计算机中的数据存储单位什么是编程?什么是代码?什么是编程语言?常见的编程…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息…

CSS学习记录11

CSS布局 - display属性 display属性是用于控制布局的最终要的CSS属性。display 属性规定是否/如何显示元素。每个HTML元素都有一个默认的display值,具体取决于它的元素类型。大多数元素的默认display值为block 或 inline。 块级元素(block element&…

ByteCTF2024

wp参考: 2024 ByteCTF wp 2024 ByteCTF WP- Nepnep ByteCTF 2024 writeup by Arr3stY0u 五冠王!ByteCTF 2024 初赛WriteUp By W&M ByteCTF 2024 By W&M - W&M Team ByteCTF Re WP - 吾爱破解 - 52pojie.cn 2024 ByteCTF - BediveRe_R…

C#,在 C# 语言中将 LaTeX 转换为 PNG 或 JPG 图像

在 C 语言中将 LaTeX 转换为 PNG 或 JPG 图像# 12月 28, 2021 2 分钟 法尔汉拉扎 在 C 语言中将 TeX 转换为 PNG JPG 图像# TeX 格式用于处理技术和科学文件。它通常用于交流或发布此类文档。在某些情况下,您可能需要将 TeX 文件渲染为 PNG 或 JPG 等图像…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展,AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统,AI技术赋予监控系统实时分析、智能识别和精准预警的能力,让“被动监视”转变为“主动防控”。 二、AI监控应用…

搭建Tomcat(一)---SocketServerSocket

目录 引入1 引入2--socket 流程 Socket(应用程序之间的通讯保障) 网卡(计算机之间的通讯保障) 端口 端口号 实例 client端 解析 server端 解析 相关方法 问题1:ServerSocket和Socket有什么关系? ServerSocket Soc…

爬虫学习案例5

爬取b站一个视频 罗翔老师某一个视频很刑 单个完整代码: 安装依赖库 pip install lxml requests import osimport requests import re from lxml import etree import json # 格式化展开输出 from pprint import pprint # 导入进程模块 import subprocess head…

【深度学习】 零基础介绍卷积神经网络(CNN)

零基础介绍 卷积神经网络(CNN,Convolutional Neural Network)是深度学习中的一种神经网络,特别擅长处理图像和视频等有空间结构的数据。 假设我们在做一个“照片分类”的任务,比如判断一张照片中是猫还是狗。下面用一…

【计算机组成原理】实验二:通用寄存器单元实验

实验二:通用寄存器单元实验 一、实验目的 了解通用寄存器的组成和硬件电路,利用通用寄存器实现数据的置数、左移、右移等功能。 二、实验内容 数据输入通用寄存器 寄存器内容无进位位左移实验 寄存器内容无进位位右移实验 三、实验步骤和结果 实…

4G模块详解

在之前的教程中,无线通信技术我们学习了蓝牙和 WiFi,今天我们要来学习 4G。 4G 模块在距离上有个突破,它不像蓝牙短距离,也不像 WiFi 只能在局域网,4G 模块可使用户无论在哪,只要有 4G 网络信号覆盖&#…

Visual Studio 使用 GitHub Copilot 聊天

🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

TimerPickerDialog组件的用法

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Snackbar Widget相关的内容,本章回中将介绍TimePickerDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的TimePickerDialog是一种弹出窗口,只不过窗口的内容固定显示为时间,它主…

Linux高并发服务器开发 第四天(wc/whoami命令 权限修改chmod 添加/删除用户(组) 切换用户 修改文件所有者/所属组 查找/过滤)

目录 1.wc和whoami命令 1.1wc命令 1.2whoami命令 2.用户权限/用户/用户组 2.1修改文件权限chmod 2.1.1文字设定法 2.1.2数字设定法 2.2添加删除新用户和新用户组 2.3切换用户 2.4修改文件所有者和所属组 2.4.1修改所有者 2.4.2修改所属组 3.查找和过滤 3.1find—…

微服务架构导学

一. 什么是微服务 微服务是一个软件架构风格,将一个大型的项目拆分成多个小项目,每个项目都被称为一个微服务,通过多个微服务共同组成一个大的项目。 二. 单体架构和微服务架构 单体架构 将整个项目的功能、模块全部堆积在一个项目中 优点&am…

【kubernetes】kubectl get nodes报NotReady

目录 1. 说明2. 问题描述3. kube-flannel.yml 1. 说明 1.这里k8s的版本是v1.17.4。2.若kube-flannel.yml中的镜像拉取不下来,可以下载本文章的文件资源,手动docker load -i ***.tar的方式。3.v1.17.4的kube-flannel.yml参考下面代码。4.通过kubectl get…

web实操7——ServletContext

概念 和服务器通信 功能 解释说明: mime:互联网中一种文件的类型,可以用servletContext对象来获取。 域对象:用来共享数据,里面有一些get,set,removeAttribute,只要搞清楚ServletContext对象的域的范围是什么 如何…

LLMC:大语言模型压缩工具的开发实践

关注:青稞AI,学习最新AI技术 青稞Talk主页:qingkelab.github.io/talks 大模型的进步,正推动我们向通用人工智能迈进,然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术,虽然可以用来加速…

舌头分割数据集labelme格式2557张1类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2557 标注数量(json文件个数):2557 标注类别数:1 标注类别名称:["tongue"] 每个类别标注的框数&#xff1…

测试工程师八股文03|Python编程题

一、题目 1、合并两个数组 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:nums1[m:] nums2nums1.sort()2、判断链表中是否有环 class Solution:def hasCycle(self, head: ListNode) -> bool:seen set()while head:if…