最近做一个压力测试,用到一个工具需要把一台机器上的某个端口的tcp流量复制到另一台机器上,其中需要配置在机器A上对于所有C地址的请求路由到机器B上,然后在B上有相应的进程会处理此请求。

在A上执行以下命令:

route add -host C gw B

那么如果在A上执行 ping C的命令时,同时在B上执行tcpdump -nn icmp应该可以得到类似以下结果:

20:23:41.522489 IP A > C: ICMP echo request, id 16360, seq 407, length 64

但是实际操作时却不起作用,在B上执行的tcpdump命令没有任何输出,说明路由转发不成功。

排查此问题的思路:

A和B是否连通?

通过IP地址和子网掩码计算可以判断A和B在同一个局域网内,并且从A 和 B之间可以双向ping通。

那是否是A到B的路由错误导致?

通过对路由的调整可以看到,新加的路由是起作用的,猜测是路由过程中数据包被丢弃。

由于A和B是一个局域网内的机器,当数据包需要从A路由到B上时,直接可以从本地arp地址缓存中查找到B的MAC地址来通信。

通过在A上查看arp -n的结果,很奇怪的发现所有的IP对应的hwaddress都是同一个mac地址MAC_S,也就是说路由到B的数据包其实会先经过MAC_S所在的机器。

经过查询发现这个子网的交换机有ARP代答功能,对于所有的ARP请求都会返回相同的mac地址,也就是本交换机的mac地址MAC_S,这个交换机会筛选数据包,将目的IP为C的数据包丢弃掉从而不会路由到B。

根据这样的信息,在A上执行手动设置arp缓存来重新设置B的下一跳hwaddress为B的mac地址MAC_B:

arp -s B MAC_B

然后再去在A上执行ping和在B上执行tcpdump icmp命令后,可以看到B上的tcpdump命令有输出了。

至此问题解决了,但是这种设置只能临时解决问题,不能一直这样,否则会使网络的架构变得复杂,对一些异常网络问题的排查有影响。

考虑到只是做临时的测试,所以在测试完成后可以马上恢复。

转载于:https://www.cnblogs.com/lifewithlight/p/9205851.html

记一次route配置不起作用的问题解决过程相关推荐

  1. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  2. 记一次 idea 配置scala 和运行 IDEA 错误: 找不到或无法加载主类

    #记一次 idea 配置scala 和运行 IDEA 错误: 找不到或无法加载主类 ##原因:Scala对JDK的版本有一定的要求. 因此,安装scala JDK 与 idea 的scala插件不要下 ...

  3. 记一次.Net Core程序启动失败的排查过程

    阅文时长 | 2分钟 字数统计 | 3212字符 主要内容 | 1.引言&背景 2.排查.NetCore启动失败详细过程 3.声明与参考资料 『记一次.Net Core程序启动失败的排查过程』 ...

  4. 网页java挂挖矿_记一次服务器被植入挖矿脚本的解决过程

    记一次服务器被植入挖矿脚本的解决过程 删除挖矿脚本和对应的进程 找出并删除对应挖矿脚本文件 找出进程pid,并且kill掉 无法kill掉的是原进程的守护进程,原进程不在它也会自动关闭,所以不用管它 ...

  5. TLB的作用及工作过程

    转载:TLB的作用及工作过程 前言: 页表一般都很大,并且存放在内存中,所以处理器引入MMU后,读取指令.数据需要访问两次内存:首先通过查询页表得到物理地址,然后访问该物理地址读取指令.数据.为了减少 ...

  6. 记一次用Win10电脑开启WiFi热点的过程以及遇到的问题

    记一次用Win10电脑开启WiFi热点的过程以及遇到的问题 环境 接入有线网络的电脑一台,且电脑应该具有无线网卡. 过程及问题 1 管理员运行cmd 2 输入命令 netsh wlan set hos ...

  7. LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决)

    LINUX学习笔记1 网卡配置(网络适配器安装失败问题解决) 概述 每一次选修课总会碰到一堆问题,我真的是幸运得很.这次是LINUX服务器管理这门课,最开始安装虚拟机一切正常(用的是VMware安装u ...

  8. 通过rpm包安装、配置及卸载mysql的详细过程.

    通过rpm包安装.配置及卸载mysql的详细过程. 以MySQL-server-4.0.14-0.i386.rpm为例,放在/data目录下 cd /data rpm -ivh MySQL-serve ...

  9. vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...

    最近在跑实验,但是突然发现程序运行变慢,然后top命令查看程序运行情况,发现有异常进程,名字叫 bash,占用 2400% CPU计算资源. 刚开始怀疑是挖矿程序,因实验室网络IP为教育网公网,怀疑被 ...

  10. 在CentOS7上安装配置Corosync高可用集群过程全记录

    在CentOS7上安装配置Corosync高可用集群过程全记录 一.环境.拓朴及其他准备工作: 1-1:准备网络YUM源环境: All Nodes OS CentOS 7.3 x86_64: # wg ...

最新文章

  1. php 设置时区_为什么没有 Asia/Beijing 时区?
  2. php增加mysql用户_PHP+MYSQL实现用户的增删改查_PHP
  3. HTML 样式兼容不同设备类型
  4. 微信小程序启动、更新机制
  5. 《精通ArcGIS Server 应用与开发》——1.3 ArcGIS 10 Mobile新特性1
  6. Android ViewFlipper源码分析
  7. 玩家可以输入辅助指令_三菱FX系列PLC输入输出与辅助继电器之间有什么关系?...
  8. 用Python写好友管理系统
  9. hcfax2e伺服驱动器说明书_SD伺服驱动器说明书
  10. 永中office之在线预览(vue/js版)
  11. 解决smtp出现(500, b'Error: bad syntax')
  12. 动态生成表格--JS案例
  13. TWEN-ASR ONE 语音识别系列教程(2)--- GPIO、ADC、PWM的使用
  14. 川的第一份博客——内容定义
  15. 不到 20 人的 IT 公司,要不要去呢?
  16. cadence allegro - PCB走线 线宽、线距
  17. 可视化利器Tensorboard
  18. pcr台服服务器连接中断,公主连结台服入坑 pcr台服入坑初始指南
  19. 图像处理问题解决师——求取每个颗粒到其他颗粒边缘的最近距离
  20. SC92F8003读24C64程序

热门文章

  1. 是用int还是用Integer?
  2. 团队作业——四则运算网页版
  3. 学长们的求职血泪史(C/C++/JAVA)
  4. 【Win 10应用开发】认识一下UAP项目
  5. License Server Version 11.9 Installation on Windows Server 2003 Hangs
  6. python的sift算法_opencv python SIFT(尺度不变特征变换)
  7. php curl exec 返回值,php curl_exec函数返回false的解决方法
  8. java web 开发环境布置学习笔记1
  9. Linux系统编程 -- 进程控制 进程终止
  10. vs2017可以写python_『vs python 使用教程』怎么用VS2017写一个最简单的Python程序,比如hello world?...