arp_annouce=0的时候

手册上说的是到底是是说当我这个包出去的时候询问arp地址,

当arp_announce=0的时候,是说使用数据包中的地址去进行arp的请求,

当arp_announce=2的时候,是根据端口号决定如何进行arp的请求;

于是我就做了这样一个试验: 还是三大件,树莓派+虚机+宿主机,

虚机:ethA1 192.168.0.110

宿主机 ethA2 192.168.0.1  ethB2 192.168.1.1

树莓派 ethB 192.168.1.110

增加路由信息

虚机上:route add default gw 192.168.0.1

树莓派上:route add default gw 192.168.1.1

这个样子三者的网算是通了,

然后我想测试的是arp_annouce=0的时候,echB2到echB的arp请求都是由由数据包中的地址发起,但是万万没想到呢,于是我从虚拟机中ping树莓派,然后通过wireshark抓包工具,希望看到arp请求是有192.168.0.110发起,但是发现并不是,竟然是由192.168.1.1发起,这并不符合arp_announce的行为呀,百思不得其解,只能看代码了,于是我就开始抓在arp源地址设置的代码,stap脚本在:net/arp/arp_send_dst.stp中,然后我发现了一件事情。。。那就是在进行函数inet_addr_type_dev_table判断会返回的不是RTN_LOCAL,而是RTN_UNICAST,也就是说我ping的数据包中的源地址啊并不是本机地址,这不在arp_annouce数据包的职责范围了。这就是ip地址不是用本端口的根因,于是我自己写了一个sender不断向树莓派中发数据包,不同的是,这次的源地值是我主机上的另一套地址了,按理说这次arp请求的地址就会换掉了:sedner的代码见net/arp/sender.c

现在问题是在socket中设置源地址呢,这个可以通过raw socket来解决。

这次就对了,随便从网上copy下来了一个sende使用raw socket来完成该功能的程序,然后设置源地址发送,发现是可以的呢。

好了,证明结束,我们就来看一下相关的代码: arp_solicit,这个函数里面有所有对arp_announce的约束,都约束啥东西呢?

所以总结一下:

对于本地产生的数据包:

arp_announce=0:使用数据包的地址去访问,这个数据包一定是来源于本地的数据包;(LVS)

arp_announce=1:  数据包中的地址必须与目的地址位于同一个网段;【可以自行做下试验】

arp_announce=2:使用接口地址去访问;

如果如果上述的结果都不满足,那么就使用端口地址去访问了

对于本地转发的数据包:

使用接口地址去访问;

转载于:https://www.cnblogs.com/honpey/p/9061000.html

arp_annouce=2详解相关推荐

  1. LVS-NAT和LVS-DR模式的实现详解

    LVS-NAT和LVS-DR模式的实现详解 2011-09-10 10:51:08     我来说两句 收藏我要投稿 linux下LVS的实现 在2.4.23之前的linux内核想要使用LVS需要重新 ...

  2. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  3. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  4. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  5. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  6. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

  7. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  8. Bert代码详解(一)重点详细

    这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...

  9. CRF(条件随机场)与Viterbi(维特比)算法原理详解

    摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...

最新文章

  1. one pragmatical sqlhelper
  2. C++_pointer-like classes,function-like classes
  3. pycharm 汉化
  4. webdriver(python)学习笔记一
  5. 动态鼠标指针_推荐8款电脑鼠标指针,让你电脑不再千篇一律
  6. Golang之slice操作
  7. MySQL 数据库恢复
  8. centos 6.5 rsync+inotify 实时同步
  9. 推荐系统和搜索引擎的关系
  10. 为什么Byte类型的运算结果要用int类型来接收
  11. delphi读取xml中的内容property name传递参数_python3 Json和XML数据解析
  12. Spring——自动装配
  13. vue-symbol
  14. 我的面试经历(2013.5)
  15. 宝马将自动驾驶和打车服务结合,最快明年在德国上路
  16. FamaMacBeth在Python中的最新位置
  17. unity 扎金花比大小
  18. Android Webview加载网页内容不全
  19. 银川水利学校计算机专业怎么样,黄河水利职业技术学院的计算机专业怎么样
  20. Python3一行代码实现图片文字识别

热门文章

  1. 4.24企业数据库应用实践技术沙龙
  2. Gradle 编译速度提升 70%!怎么做到的?
  3. 智能技术可以帮助解决人口老龄化问题吗?
  4. c语言sum出错,ACM:Sum Problem 求和问题C语言源码
  5. 游戏运营期间我的项目开发经验总结——纪律性和卡顿处理
  6. Android中SQLlite数据库的增删改查
  7. 这两款无“节操”的浏览器,在315被曝光后,终于被下架了
  8. 常见java面试题 普通类和抽象类的区别?
  9. 零基础学Python-爬虫-5、下载音频
  10. 随手记录自动化常用的一些事情