Linux EOIP — 二层协议

2023-10-27

一、协议介绍

  EOIP是一个 MikroTik的 Linux使用 TAP的 EoIP/EoIPv6隧道的实现。EoIP(Ethernet over IP)和 EoIPv6(Ethernet over IPv6)是 MikroTik RouterOS的第二层隧道协议。
  EoIP协议将以太网帧封装在GRE (IP protocol number 47)报文中,EoIPv6协议将以太网帧封装在EtherIP (IP protocol number 97)报文中。

二、网络环境

    在这里插入图片描述

  该网络是在同一局域网下模拟进行的,若两台路由器不在同一个局域网,则需要先将两台路由器打通后才能进行进行下一步,因为二层隧道建立的前提是两台设备需要能相互通信。
  该网络最终实现的目的是 PC1和 PC2能够相互通信,且局域网1和局域网2内的所有设备都能相互通信(这边只显示PC1和PC2)。等同于将两个局域网合并成一个局域网。

三、EOIP二层协议使用

1、下载 EOIP源码

  下载地址请点击链接:https://github.com/amphineko/eoip

2、建立二层隧道

  R1:            R2:
    WAN: 192.168.0.1      WAN: 192.168.0.2
    LAN : 192.168.1.1       LAN : 192.168.1.2

  EOIP命令格式:
    eoip [ OPTIONS ] IFNAME { remote RADDR } { local LADDR } { id TID }
                 [ mtu MTU ] [ uid UID ] [ gid GID ] [ fork ]
    OPTIONS := { -4 | -6 }

  R1配置:

/home/bin/eoip -4 tap1 local 192.168.0.1 remote 192.168.0.2 id 100 mtu 1500 &

  R2配置:

/home/bin/eoip -4 tap1 local 192.168.0.2 remote 192.168.0.1 id 100 mtu 1500 &

  此时 “ifconfig -a” 可以查看到有新生成的接口 “tap1”

tap1      Link encap:Ethernet  HWaddr 9E:7F:44:5A:0B:C6  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:37 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:6798 (6.6 KiB)  TX bytes:0 (0.0 B)
3、打通两个局域网

  分别在 R1和 R2上执行以下指令:

brctl addif br-lan tap1				# tap1桥接到lan口
ifconfig tap1 up (ip link set tap1 up)	# 启用 tap1接口

  如此局域网1和局域网2就直接打通了,从某种意义上来说可以等效于同一个局域网。

4、关闭 R2路由器的DHCP

  关闭 R2路由器的 DHCP后,由于两个局域网已经打通,因此 PC2可以获取到路由器 R1所分配的 IP地址和网关。在 PC2上跟踪路由可以发现数据包是从 R1路由器出外网的。
  若 R2没有关闭DHCP服务,此时网络等效于 R1、R2的 LAN口和 PC1、PC2同时接入交换机,PC1和PC2可以获取到 R1和 R2任意一台路由器分配的IP地址。
  若 PC2使用了R1局域网地址和网关,则PC2将无法继续访问R2路由器LAN口和其局域网对应在使用的IP;若要使PC2能够同时继续访问R2 LAN口局域网,则PC2上需要添加一条R2 LAN口网段的地址才能访问。

四、拓展网络方案

1、方案1

      在这里插入图片描述

  R1与R2、R2与R3、R3与R4分别建立 EOIP隧道(隧道tap1、tap2和tap3对应的ID号可以不相同),关闭 R2、R3、R4的DHCP服务,PC1、PC2、PC3、PC4都能获取到R1分配的IP地址段,4台电脑可以相互访问。

五、总结

  (1)、同一条EOIP隧道两端的ID值必须相同,接口名称可以不同;
  (2)、待打通的两个局域网内不能出现地址冲突情况,即出现相同IP地址(Lan口 IP可以相同,但为了区分最好不要相同);
  (3)、当2台或多台路由器组EOIP网络后,只要其中2台路由器之间有隧道串联,则不管中间隔着多少路由器,两台路由器等效隧道直连,其局域网设备可以相互通信。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux EOIP — 二层协议 的相关文章

  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • apt-get install tzdata 非交互式

    当我尝试 apt get install y tzdata 将显示用于选择时区的命令行选项 我试图在脚本中使用它来进行一些设置 如何在没有用户输入的情况下使 apt get 运行 我知道重新配置 tzdata 我可以做 echo Ameri
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 未找到命令“ember”

    看来我搞砸了 ember cli 安装 我已经使用 sudo 安装了 npm 但是在阅读了 npm 上 ember cli 和 sudo 的一些问题后 我按照此处的说明卸载并重新安装https gist github com isaacs
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 从多线程程序中调用 system()

    我们正在开发一个用 C 编写的多线程内存消耗应用程序 我们必须执行大量的 shellscript linux 命令 并获取返回码 读完之后article http www linuxprogrammingblog com threads a
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • NMCLI 设备不可用

    我正在尝试在 ubuntu core 16 04 上配置带有蜂窝接口的新设备 我有 NMCLI 包在上面运行 在添加连接之前 我检查了接口 nmcli dev DEVICE TYPE STATE CONNECTION eth1 ethern
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs

随机推荐

  • leetcode分类刷题:二叉树(一、简单的层序遍历)

    二叉树的深度优先遍历题目是让我有点晕 先把简单的层序遍历总结下吧 配合队列进行的层序遍历在逻辑思维上自然直观 不容易出错 102 二叉树的层序遍历 本题是二叉树的层序遍历模板 每次循环将一层节点出队 再将一层节点入队 也是所有可用层序遍历解
  • 小程序开发调用微信支付以及微信回调地址配置

    首先观看微信提供的文档 https pay weixin qq com wiki doc api wxa wxa api php chapter 7 3 index 1 清楚调用微信支付必须传递的参数 因为微信提供了小程序唤起微信支付的方法
  • emoji数据清洗

    在对微博等文本数据进行处理的时候发现以往的颜文字之外还会抓取到emoji数据 这部分虽然可以匹配到 但是经常挂一漏万 在网上检索到有一个emoji库可以使用 直接pip安装emoji库 import emoji import re def
  • Postman —— 配置环境变量

    PostMan是一套比较方便的接口测试工具 但我们在使用过程中 可能会出现创建了API请求 但API的URL会随着服务器IP地址的变化而改变 这样的情况下 如果每一个API都重新修改URL的话那将是非常的麻烦 所以PostMan中也提供环境
  • 第二届“移动云杯”大赛医疗行业应用子赛道答疑会成功召开

    为帮助参赛团队了解第二届 移动云杯 算力网络应用创新大赛的命题背景 作品立意 提高作品质量 9月13日 我们召开了第二届 移动云杯 大赛答疑会 特别针对医疗行业应用子赛道的赛题作讲解和答疑 赛题背景 随着科技的不断进步 精准医学技术得到了广
  • 使用C++搭配OpenGL写了一个RenderEngine

    最近在学习OpenGL 看书看的再多 也不如自己动手写一个来看看 耗时一个多月 由于才学不久 各位大佬勿喷 用到了glfw Imgui glm这几个库 整合的资源里都带了 相机类 ifndef CAMERA H define CAMERA
  • 鉴源实验室

    作者 李伟 上海控安安全测评部总监 来源 鉴源实验室 社群 添加微信号 TICPShanghai 加入 上海控安51fusa安全社区 引言 上一篇开始我们介绍白盒的代码结构覆盖率测试 已经完成了语句覆盖测试的讲解 本篇我们介绍分支覆盖 01
  • Linux脚本实战之猜数字

    Linux脚本实战之猜数字 一 脚本要求 二 脚本示例一 三 脚本示例二 一 脚本要求 1 系统环境为RHEL8 0 2 脚本生成一个100以内的随机数 提示用户猜数字 3 根据用户的输入 提示猜对了 猜大了或猜小了 直到用户猜对为止 二
  • 使用构建Docker镜像的方式部署Vue+node项目

    目录 一 安装镜像 二 创建Dockerfile文件构建容器 1 添加Dockerfile文件 2 上传文件 3 构建镜像 4 运行容器 三 如何优化 Docker 镜像 准备工作 电脑安装了node js 配置了vue cli 环境 远程
  • windows驱动开发3:第一个驱动及调试

    一 创建项目 新建一个以Kernel Mode Driver Empty KMDF 为模板的驱动项目 项目名称HelloDriver 在项目中新建一个hello cpp文件作为驱动入口文件 写一点简单的代码做测试 hello cpp代码 i
  • python基于图像颜色的火焰识别

    本文基于图像颜色 主要结合RGB和HSI两种判断依据进行火焰识别 判断依据参考了以下文章 实在是非常感谢 OpenCV学习记录之视频中的火焰检测识别 python版基于颜色的火焰识别 判断条件如下 R gt redThre R gt G g
  • 数据竞赛专题

    为了帮助更多竞赛选手入门进阶比赛 通过数据竞赛提升理论实践能力和团队协作能力 DataFountain 和 Datawhale 联合邀请了数据挖掘 CV NLP领域多位竞赛大咖 将从赛题理解 数据探索 数据预处理 特征工程 模型建立与参数调
  • mmcv读取配置文件,在windows上无法创建临时文件解决方法

    报错是写入 盘的Temp没有权限 因此修改到其他目录 在config中修改以下两个函数 def substitute predefined vars filename temp config name file dirname osp di
  • 用工厂模式管理多个solidity智能合约

    我们写了一份小的计算合约作为Hello World 如果我们可以创建一个允许用户创建自己的计数器的合约怎么办 让我们创建我们的合约CounterFactory 它将管理所有其他计数器Counters 它将包含一个映射 将所有者与其计数器合约
  • captcha验证码入门

    kaptcha是一个简单易用的验证码生成工具 而且支持中文 你还可以配置其很多属性 用法 1 首先到http code google com p kaptcha downloads list把压缩文件下下来 然后把里面的jar文件加到自己的
  • 项目一:用OpenCV识别银行卡号

    import cv2 def sort contours cnts method left to right reverse False i 0 if method right to left or method bottom to top
  • 阿里巴巴的数据库连接池 druid 优点

    阿里的 druid 它不仅仅是一个数据库连接池 它还包含一个ProxyDriver 一系列内置的JDBC组件库 一个SQL Parser Druid 相对于其他数据库连接池的优点 1 强大的监控特性 通过Druid提供的监控功能 可以清楚知
  • 凯恩帝数控系统面板介绍_凯恩帝数控车床操作面板按钮详解!

    KND1TB数控系统操作 在 视图 下拉菜单或者浮动菜单中选择 控制面板切换 后 数控系统操作键盘会出现在视窗的右上角 其左侧为数控系统显示屏 如下图所示 用操作键盘结合显示屏可以进行数控系统操作 KND1TB 输入面板 按键介绍 数字键
  • 黑苹果系统--Parallels Desktop虚拟机使用

    1 挂载外部磁盘到windows虚拟机 1 通过USB将外部磁盘连接至Mac 2 在虚拟机配置窗口中 选择 Hardware gt Add gt Hard Disk 3 在 Type 菜单中选择 Physical Disk 并在 Locat
  • Linux EOIP — 二层协议

    一 协议介绍 EOIP是一个 MikroTik的 Linux使用 TAP的 EoIP EoIPv6隧道的实现 EoIP Ethernet over IP 和 EoIPv6 Ethernet over IPv6 是 MikroTik Rout