ping失败,如果在路由表main内没有entry

2024-03-17 10:08

本文主要是介绍ping失败,如果在路由表main内没有entry,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是一个没有完全理解的网络路由问题,现象如下:

[root@localhost ~]# ip a s dev eth1                                            
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:1e:67:64:ee:b8 brd ff:ff:ff:ff:ff:ff                         inet 192.168.19.22/24 brd 192.168.19.255 scope global eth1                 inet6 fe80::21e:67ff:fe64:eeb8/64 scope link                               valid_lft forever preferred_lft forever [root@localhost ~]# ip ro s
default via 192.168.19.254 dev eth1     [root@localhost ~]# ip ru s
0:      from all lookup 255
32764:  from all to 192.168.19.22 lookup HOST
32765:  from 192.168.19.22 lookup HOST
32766:  from all lookup main
32767:  from all lookup default[root@localhost ~]# ip ro s t HOST
192.168.19.0/24 dev eth1  scope link  src 192.168.19.22
default via 192.168.19.254 dev eth1[root@localhost ~]# ping 192.168.19.51 -w 5
PING 192.168.19.51 (192.168.19.51) 56(84) bytes of data.--- 192.168.19.51 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 4999ms[root@localhost ~]# ping 192.168.19.51 -I eth1 -w 5                              
PING 192.168.19.51 (192.168.19.51) from 192.168.19.22 eth1: 56(84) bytes of data.--- 192.168.19.51 ping statistics ---                                            
6 packets transmitted, 0 received, 100% packet loss, time 4999ms      

但是如果我增加ping的参数,就可以ping通了,如下:

[root@localhost ~]# ping 192.168.19.51 -I eth1 -w 5 -r -c 3                      PING 192.168.19.51 (192.168.19.51) from 192.168.19.22 eth1: 56(84) bytes of data.64 bytes from 192.168.19.51: icmp_seq=1 ttl=64 time=2.20 ms                      64 bytes from 192.168.19.51: icmp_seq=2 ttl=64 time=0.226 ms                     64 bytes from 192.168.19.51: icmp_seq=3 ttl=64 time=0.437 ms                     --- 192.168.19.51 ping statistics ---                                            3 packets transmitted, 3 received, 0% packet loss, time 2001ms                   rtt min/avg/max/mdev = 0.226/0.955/2.204/0.887 ms                                [root@localhost ~]# ping 192.168.19.51 -I 192.168.19.22 -w 5 -c 3            
PING 192.168.19.51 (192.168.19.51) from 192.168.19.22 : 56(84) bytes of data.
64 bytes from 192.168.19.51: icmp_seq=1 ttl=64 time=1.86 ms                  
64 bytes from 192.168.19.51: icmp_seq=2 ttl=64 time=0.630 ms                 
64 bytes from 192.168.19.51: icmp_seq=3 ttl=64 time=0.210 ms                 --- 192.168.19.51 ping statistics ---                                        
3 packets transmitted, 3 received, 0% packet loss, time 2002ms               
rtt min/avg/max/mdev = 0.210/0.902/1.866/0.702 ms   

"-I" 和 "-r"的区别如下:

-I eth1 会调用 setsockopt 设置SO_BINDTODEVICE;

-I 192.168.19.22 会调用bind;

-r 会调用 setsockopt 设置 SO_DONTROUTE;

但是如果我在main路由表内增加entry也是可以ping通的,如下:

[root@localhost ~]# ip ro a 192.168.19.0/24 dev eth1          
[root@localhost ~]# ip ro s                                   
192.168.19.0/24 dev eth1  scope link                          
default via 192.168.19.254 dev eth1                           
[root@localhost ~]# ping 192.168.19.51 -c 3                   
PING 192.168.19.51 (192.168.19.51) 56(84) bytes of data.      
64 bytes from 192.168.19.51: icmp_seq=1 ttl=64 time=1.99 ms   
64 bytes from 192.168.19.51: icmp_seq=2 ttl=64 time=0.207 ms  
64 bytes from 192.168.19.51: icmp_seq=3 ttl=64 time=0.435 ms  --- 192.168.19.51 ping statistics ---                         
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.207/0.879/1.997/0.796 ms        

如果main table有路由,或者ping -I address 或者 ping -I interface -r, 都会通过,但是如果仅仅是 ping with -I interface 是不会通的.

到目前为止,还没有完全弄明白,因为对内核的路由策略不是特别的清楚,如果有哪位大神看到,还望回复给予解答,不胜感激!




这篇关于ping失败,如果在路由表main内没有entry的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818640

相关文章

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

电脑没有仿宋GB2312字体怎么办? 仿宋GB2312字体下载安装及调出来的教程

《电脑没有仿宋GB2312字体怎么办?仿宋GB2312字体下载安装及调出来的教程》仿宋字体gb2312作为一种经典且常用的字体,广泛应用于各种场合,如何在计算机中调出仿宋字体gb2312?本文将为您... 仿宋_GB2312是公文标准字体之一,仿China编程宋是字体名称,GB2312是字php符编码标准名称(简

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控