arp代答观察

文章目录

    • 代答和代理简述
    • 实验前提
    • 先不开启proxy代答的配置
    • 开启代答
    • 总结

代答和代理简述

ARP(地址解析协议)是在局域网中用于将IP地址映射到MAC地址的协议。在理解 ARP 代答和 ARP 代理之前,让我们先澄清一下 ARP 的基本工作原理。

  • ARP 代答(ARP Reply):ARP 代答是指设备在收到 ARP 请求后向请求者发送的响应。当一个设备需要将 IP 地址解析为 MAC 地址时,它会在局域网上广播 ARP 请求,请求与目标 IP 地址对应的 MAC 地址。目标设备收到请求后,如果拥有对应的 IP 地址,会发送 ARP 代答,将自己的 MAC 地址发送给请求者,从而建立 IP 到 MAC 的映射关系。

  • ARP 代理(ARP Proxy):ARP 代理是指网络设备(通常是路由器或者交换机)在局域网内代表其他设备响应 ARP 请求。当一个设备无法直接解析某个IP地址的MAC地址时,它会向本地网络内的所有设备发送ARP请求。在某些情况下,网络设备可以充当 ARP 代理,接收到 ARP 请求后代替目标设备进行回应。这样可以在某些网络拓扑结构下提供更高效的 ARP 解析服务。

因此,ARP 代答和 ARP 代理的区别在于:

  • ARP 代答是指设备直接响应 ARP 请求,提供自己的 MAC 地址(具体请看文末的总结)。
  • ARP 代理是指网络设备代表其他设备响应 ARP 请求,帮助解析 IP 地址和 MAC 地址之间的映射关系。

实验前提

用namespace模拟vtep下挂的虚拟机,同时又尽可能模拟我们已有的环境中的配置

项目代码中arp代答部分的配置如下

  cmd = "ip link add %s mtu %s type vxlan id %s proxy %s %s %s" % \(tun_name, vxlan_mtu, tun_key, _nolearning, _l2miss, _l3miss)

以上配置中的proxy即为arp代答的配置。
注:arp代答和arp代理是不一样的两个东西勿混淆。

先不开启proxy代答的配置

  1. 准备对应的namespace和bridge等

    root@i-l185a7rl:~# cat test.sh
    #!/bin/bash
    sysctl -w net.ipv4.ip_forward=1
    ip netns add ns1
    ip link add veth1 type veth peer name eth0 netns ns1
    ip netns exec ns1 ip link set eth0 up
    ip netns exec ns1 ip link set lo up
    ip netns exec ns1 ip addr add 3.3.3.3/24 dev eth0
    ip link set up dev veth1
    ip link add br1 type bridge
    ip link set br1 up
    ip link set veth1 master br1
    ip link add vxlan100 type vxlan id 100
    ip link set vxlan100 master br1
    ip link set up vxlan100
    
    #!/bin/bash
    sysctl -w net.ipv4.ip_forward=1
    ip netns add ns1
    ip link add veth1 type veth peer name eth0 netns ns1
    ip netns exec ns1 ip link set eth0 up
    ip netns exec ns1 ip link set lo up
    ip netns exec ns1 ip addr add 3.3.3.4/24 dev eth0
    ip link set up dev veth1
    ip link add br1 type bridge
    ip link set br1 up
    ip link set veth1 master br1
    ip link add vxlan100 type vxlan id 100
    ip link set vxlan100 master br1
    ip link set up vxlan100
    

    左边为host1,右边为host2
    在这里插入图片描述
    这个时候在3.3.3.3上ping3.3.3.4,肯定ping不通
    在这里插入图片描述
    原因在于,Host1的3.3.3.3接口需要先发送ARP广播包查询3.3.3.4的MAC地址。ARP广播包到达接口vxlan100之后,根据FDB表项无法找到VTEP地址,因而ARP广播包无法发出。

    然后在Host1上手动增加VXLAN FDB表项:

    bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 192.168.100.2
    bridge fdb append 2a:e7:fc:de:91:f7 dev vxlan100 dst 192.168.100.2
    

    然后在Host2手动增加VXLAN FDB表项:

    bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 192.168.100.3
    bridge fdb append ea:ec:1b:c8:cb:07 dev vxlan100 dst 192.168.100.3
    

    在这里插入图片描述
    可以看到arp广播泛洪的流量到达了host2上的vtep口,这个时候没有开启代答,符合预期的。

开启代答

配置如下
host1调整如下

root@i-l185a7rl:~# cat test_arp.sh
#!/bin/bash
ip link del vxlan100
ip link add vxlan100 type vxlan id 100 proxy
ip link set vxlan100 master br1
ip link set up vxlan100
bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 192.168.100.2
bridge fdb append 2a:e7:fc:de:91:f7 dev vxlan100 dst 192.168.100.2

host2调整如下

!/bin/bash
ip link del vxlan100
ip link add vxlan100 type vxlan id 100 proxy
ip link set vxlan100 master br1
ip link set up vxlan100
bridge fdb append 00:00:00:00:00:00 dev vxlan100 dst 192.168.100.3
bridge fdb append ea:ec:1b:c8:cb:07 dev vxlan100 dst 192.168.100.3

图中的proxy即为新增的代答参数
在这里插入图片描述
先删除之前没有开启arp代答的时候,产生是arp条目
在这里插入图片描述
再来ping,可以看到开启代答后,只有本地的vtep才会收到arp广播包了,host2上的vtep已经没有收到广播包了。并且这个时候是ping不通3.3.3.4的
在这里插入图片描述
为啥ping不通3.3.3.4呢,因为host1上的vtep上没有3.3.3.4的条目
在这里插入图片描述
手动将3.3.3.4的arp信息加入到host1上的vtep上

ip neighbor add 3.3.3.4 lladdr 2a:e7:fc:de:91:f7 dev vxlan100
ip netns exec ns1 ip neigh delete 3.3.3.4 dev eth0
ip netns exec ns1 ip neigh flush all

host2

ip neighbor add 3.3.3.3 lladdr ea:ec:1b:c8:cb:07 dev vxlan100

再次ping可以看到arp泛洪广播,只停留在了本地vtep
在这里插入图片描述

总结

可以看到proxy用来让vtep代答。代答的主要目的是减少泛洪流量,将泛洪范围控制在本地vtep口,如果不用proxy,则需要将流量泛洪到所有相关的vtep口。但是要提前把将对应的arp配置到vtep上,这个动作可以用我们其它的辅助程序完成

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

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

相关文章

鹏哥C语言81-82---指针和数组+二级指针+指针数组

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> //--------------------------------------------------------------------------------------------------------5. 指针和数组 数组&#xff1a;一组相同类型元素的集合 指针变量&…

在 VS Code 中轻松绘图:Draw.io Integration 插件详解

文章目录 在 VS Code 中轻松绘图&#xff1a;Draw.io Integration 插件详解一、什么是 Draw.io Integration 插件&#xff1f;二、插件安装指南1. 安装步骤2. 配置插件 三、如何使用 Draw.io Integration 插件&#xff1f;1. 创建新绘图文件2. 编辑现有图表3. 常用功能与技巧 四…

中小型医院网站:Spring Boot框架详解

5 系统实现 5.1 用户功能模块的实现 用户进入本系统可查看系统信息&#xff0c;包括首页、门诊信息、药库信息以及系统公告信息等&#xff0c;系统前台主界面展示如图5-1所示。 图5-1系统前台主界面图 5.1.1用户登录界面 用户要想实现预约挂号功能&#xff0c;必须登录系统&a…

QGraphics类型学习使用【Qt】【C++】

QGraphics类型学习使用 需求过程全部完整代码 首先已知&#xff0c;QGraphicsView&#xff0c;QGraphicsScene, QGraphicsItem&#xff0c;分别称为&#xff1a;视图&#xff0c;场景&#xff0c;图元&#xff0c;图表就是各种各样的元素&#xff0c;图片元素&#xff0c;线条元…

k8s部署Kafka集群超详细讲解

准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka&#xff1a;3.7.1版本&#xff0c;apche版本 Zookeeper&#xff1a;3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…

股价创52周新高,云顶新耀成为“黑马”的启示录

踏入2024年以来&#xff0c;创新药产业持续释放积极信号。今年本土创新药出海交易额已超200亿美元&#xff0c;最近医保续约和谈判也有望促进国内创新药长期放量。 市场预期转好之下&#xff0c;生物医药板块在新一轮牛市中进入了估值修复的阶段。HSHKBIO&#xff08;恒生香港…

【LVGL快速入门(二)】LVGL开源框架入门教程之框架使用(UI界面设计)

零.前置篇章 本篇前置文章为【LVGL快速入门(一)】LVGL开源框架入门教程之框架移植 一.UI设计 介绍使用之前&#xff0c;我们要学习一款LVGL官方的UI设计工具SquareLine Studio&#xff0c;使用图形化设计方式设计出我们想要的界面&#xff0c;然后生成对应源文件导入工程使用…

openssh openssl zlib 升级至最新版解决安全问题

openssl依赖于zlib&#xff0c; openssh依赖于openssl和zlib&#xff0c; 所以我们要先安装zlib&#xff0c;然后是openssl&#xff0c;最后是openssh。 各软件下载地址&#xff1a; zlib 地址&#xff1a; zlib Home Site openssl 地址&#xff1a; Downloads | Library…

C#从零开始学习(接口,强制转化和is)(7)

有时根据对象能做什么来分组,而不是根据他们继承的类.这就引入了接口 让无关的类做相同的动作 接口定义一个类必须实现的方法和属性 一个类实现一个接口时,必须包含接口中列出的所有方法和属性 向下强制转化 Appliance是CoffeeMaker的基类 Appliance powerConsumer new Co…

时空智友企业流程化管控系统uploadStudioFile接口存在任意文件上传漏洞

免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 时空智友…

【密码分析学 笔记】ch3 3.1 差分分析

ch3 分组密码的差分分析和相关分析方法 3.1 差分分析 评估分组密码安全性通用方法可用于杂凑函数和流密码安全性 预备知识&#xff1a; 迭代性分组密码&#xff08;分组密码一般结构&#xff09;简化版本 mini-AES CipherFour算法 3.1.1 差分分析原理 现象&#xff1a;密…

JMeter使用不同方式传递接口参数

1、使用 HTTP 请求中的参数&#xff1a; 在 JMeter 的测试计划中&#xff0c;添加一个 "HTTP 请求" 元件。 在 "HTTP 请求" 元件的参数化选项中&#xff0c;可以添加参数的名称和值。可以手动输入参数&#xff0c;也可以使用变量来传递参数值。 如果要使…

汇川机器人与PLC通信-ModbusTCP超详细案例

#SCARA机器人与H5UPLC通过ModbusTCP通信,HMI界面手动操作# 应用背景: 本项目案例部分软件界面已被更新,如机器人示教软件旧版本S01.19R03。但通信的原理基本一致,废话少说,我们直接上图。 一、PLC端配置 1.添加ROB通讯表(自定义),变量表内容包括ROB系统变量,IN区和…

【利用Seaborn进行高级数据可视化】创建美观且信息丰富的图表!

利用Seaborn进行高级数据可视化&#xff1a;创建美观且信息丰富的图表 数据可视化是数据分析和科学研究中不可或缺的部分。通过有效的图表&#xff0c;我们可以迅速了解数据的分布、趋势和关系。在Python的数据科学生态系统中&#xff0c;Seaborn是一个基于Matplotlib的高级库…

大厂面试真题-了解云原生吗,简单说一下docker和k8s

K8s&#xff08;Kubernetes&#xff09;和Docker都是容器化技术中的关键组件&#xff0c;但它们各自扮演着不同的角色。以下是对这两者的详细解析&#xff1a; 一、Docker Docker是一个开源的容器化平台&#xff0c;它允许开发人员将应用程序及其依赖项打包为一个独立的镜像&…

条款8 优先考虑nullptr而非0和NULL

目录 一、nullptr,0,NULL都是什么类型 二、正确调用函数指针版本的函数重载 三、模板推导时使用不能混用 一、nullptr,0,NULL都是什么类型 auto a = 0; -> int auto a = NULL; -> long auto a = nullptr; -> std::nullptr_t 二、正确调用函数…

Notepad++将搜索内容所在行选中,并进行复制等操作

背景 Notepad在非常多的数据行内容中&#xff0c;按照指定内容检索&#xff0c;并定位到具体行&#xff0c;而后对内容行的数据进行复制、剪切、删除等处理动作。 操作说明 检索并标记所在行 弹出搜索框&#xff1a;按下 Ctrl F。 输入查找字符串&#xff1a;在搜索框中输入要…

Cursor零基础小白教程系列「进阶」 - Cursor 智能代码补全详解(Tab)

最适合小白零基础的Cursor教程 网站lookai.top相同作者&#xff0c;最新文章会在网站更新&#xff0c;欢迎收藏书签 Cursor 智能代码补全详解(Tab) 概述 Cursor的智能代码补全&#xff0c;也就是快捷键Tab&#xff0c;是其最强大和独特的AI辅助编程工具之一。本教程将详细介绍…

“避免序列化灾难:掌握实现 Serializable 的真相!(二)”

文章目录 一、什么是序列化&#xff1f;二、Serializable 是如何起作用的&#xff1f;三、为什么不自动序列化所有对象&#xff1f;四、Java 序列化的底层原理序列化的核心步骤&#xff1a; 五、反序列化的原理六、总结&#xff1a;为什么必须实现 Serializable 才能序列化&…

最好的ppt模板网站是哪个?做PPT不可错过的18个网站!

现在有很多PPT模板网站&#xff0c;但真正免费且高质量的不多&#xff0c;今天我就分享主流的国内外PPT模板下载网站&#xff0c;并且会详细分析这些网站的优缺点&#xff0c;这些网站都是基于个人实际使用经验的&#xff0c;免费站点会特别标注&#xff0c;让你可以放心下载&a…