Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >能ping通traceroute不通

能ping通traceroute不通

作者头像
大大大黑白格子
发布于 2020-06-10 11:12:32
发布于 2020-06-10 11:12:32
14.3K00
代码可运行
举报
文章被收录于专栏:云服务笔记云服务笔记
运行总次数:0
代码可运行
问题现象:

Linux下可以ping通IP,但是traceroute不通

问题原因:

traceroute路由跟踪是利用IP数据包的TTL值来实现的,Linux 下 traceroute 首先发出 TTL = 1 的UDP 数据包,第一个路由器将 TTL 减 1 得 0 后就不再继续转发此数据包,而是返回一个 ICMP 超时报文,traceroute 从超时报文中即可提取出数据包所经过的第一个网关的 IP 地址。然后又发送了一个 TTL = 2 的 UDP 数据包,由此可获得第二个网关的 IP 地址。依次递增 TTL 便获得了沿途所有网关的 IP 地址。

因为UDP 常被用来做网络攻击,因为 UDP 无需连接,因而没有任何状态约束它,比较方便攻击者伪造源 IP、伪造目的端口发送任意多的 UDP 包,长度自定义。所以运营商为安全考虑,对于 UDP 端口常常采用白名单 ACL,就是只有 ACL 允许的端口才可以通过,没有明确允许的则统统丢弃。比如允许 DNS/DHCP/SNMP 等

注意: Linux下traceroute程序默认发送的探测包为UDP协议,windows下tracert、mtr,以及Linux下mtr默认都发送的是icmp的数据包,并不是所有网关都会如实返回 ICMP 超时报文。处于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可能被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿到所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops 默认最大为30)才结束追踪

验证: Linux 下 traceroute 114.114.114.114 如图,以第一跳和第五跳为例,对比抓包可以看出,第一组(每次发三个包)UDP 的 request 数据包 TTL 值为1,在到达第1个路由节点后,TTL减1后为0,则不继续传递,返回一个 ICMP 超时报文,这时客户端获取到了第1个路由节点IP,与traceroute测试信息相符

第五跳时,发送的 request 数据包 TTL 值为5,在到达第5个路由节点后,TTL减为0,则不继续传递,返回一个 ICMP 超时报文,这时客户端获取到了第5个路由节点IP,与traceroute测试信息相符

总结:
  1. Linux 下 traceroute 默认发送的时 udp 协议 request 包,很多路由节点上会丢弃该部分数据包不做响应;windows 下 tracert、mtr 以及 Linux 下 mtr 默认发送的是是 icmp 协议 request 包,测试网络时更有参考价值
  2. Linux 下 traceroute、mtr 都支持指定协议端口进行网络探测,建议使用 icmp 或 tcp 协议进行网络探测 traceroute 常用参数:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-I   --icmp     //指定ICMP协议
-T  --tcp       //指定TCP协议
-p port  --port=port   //指定端口

mtr 常用参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-c           //指定发包次数
--tcp        //指定tcp协议
--port=PORT  //指定端口
--udp        //指定udp协议

参考文档: https://www.cnblogs.com/littlek1d/p/9474288.html https://zhuanlan.zhihu.com/p/36811672

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
traceroute详解[通俗易懂]
traceroute (Windows系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。traceroute是一条缓慢的命令,因为每经过一台路由器都要花去大约10到15秒。
全栈程序员站长
2022/09/07
11K0
linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具[通俗易懂]
服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障,有服务器硬件造成的,也有服务商网络问题造成的,也有区域网络问题造成的,这个时候就需要用到ping,traceroute,mtr这三个命令
全栈程序员站长
2022/08/31
1.6K0
traceroute命令讲解
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
全栈程序员站长
2022/07/02
1.3K0
traceroute命令讲解
Traceroute原理「建议收藏」
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。 linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
全栈程序员站长
2022/09/16
6320
traceroute和tracert原理
traceroute 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 路由器收到TTL为1的包文减1后直接丢弃,然后回复 ICMP(type=11,code=0,TTL equals 0 during transit——传输期间生存时间为0)。 目标主机收到traceroute 的UDP探测包回复ICMP(type=3,code = 3,端口不可达)。Linux上称之为 traceroute,Windos类似的功能为tracert。
全栈程序员站长
2022/11/08
3.1K0
traceroute和tracert原理
三十天学不会TCP,UDP/IP网络编程-TraceRoute的哲学
新年快乐,继续来部分粘贴复制我的这一系列文章啦,如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)star我的这一系列文章,虽然说现在这种“看不见”的东西真正能在实用中遇到的机会不多,但是我始终觉得无论计算机的语言,热点方向怎么变化,作为一个程序员,很多基本的知识都应该有所了解。而当时在网上搜索资料的时候,这方面的资料真的是少的可怜,所以,我有幸前两年接触了这方面的知识,我觉得我应该把我知道的记录下
一心一怿
2018/04/16
1.1K0
三十天学不会TCP,UDP/IP网络编程-TraceRoute的哲学
ping, tracert, traceroute, netstat命令详解
ping可以测试计算机名和计算机的 ip 地址,验证与远程计算机的连接,通过将 icmp 回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接,该命令只有在安装了 tcp/ip 协议后才可以使用。
阳光岛主
2019/02/19
4.5K0
linux的traceroute命令详解[通俗易懂]
traceroute [-46dFITUnrAV] [-f first_ttl] [-g gate,…]
全栈程序员站长
2022/11/17
1.9K0
traceroute命令
traceroute命令尝试跟踪IP数据包到某个Internet主机的路由,方法是使用一个小ttl(生存时间)启动探测数据包,然后侦听来自网关的ICMP超时回复,它以ttl为1开始探测,并将其增加1,直到获得ICMP port unreachable或TCP reset,这意味着我们到达了host,或达到了最大值(默认为30跳),在每个ttl设置处发送三个探测(默认),并打印一行,显示ttl、网关地址和每个探测的往返时间,在请求时,地址后面可以有附加信息,如果探测结果来自不同的网关,则会打印每个响应系统的地址,如果在5.0秒内(默认值)没有响应,则会为该探测器打印一个*。
WindRunnerMax
2021/02/25
2.7K0
Linux命令详解:ping 和 traceroute命令
Linux命令有很多,今天跟大家介绍常用的两个命令ping 、traceroute命令,按照工具的作用,原理,用法三个维度来理解。
程序员小猿
2021/01/19
11.3K0
Linux命令详解:ping 和 traceroute命令
linux 命令:ping、fping、gping、hping3、tracert、traceroute
From: Nmap、Netcat、Hping3工具对比:http://www.2cto.com/article/201210/158961.html
全栈程序员站长
2022/09/14
4.7K0
linux 命令:ping、fping、gping、hping3、tracert、traceroute
快速排除故障命令除了 ping 还有 tracert
Tracert是测试报文从发送端到目的地所经过的路由的方法。它能够直观展现报文在转发的时候所经过的路径。
杰哥的IT之旅
2021/04/20
9230
Linux命令:traceroute命令(路由跟踪)
traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。
全栈程序员站长
2022/07/05
4K0
Linux命令:traceroute命令(路由跟踪)
排查网络问题,请务必掌握这款工具
traceroute 就如同它的名字一样,能够追踪到一个网络数据包传输经过的路由器路径。这是 Linux 上的一个命令,Windows 上类似的命令是 tracert。
网络工程师笔记
2021/05/17
9610
Tracert原理_traceroute命令工作原理
traceroute通过ICMP“超时”和“端口不可达”两种消息记录所经过路径的路由。
全栈程序员站长
2022/11/08
1.6K0
icmp协议是tcp还是udp_icmp协议使用udp
当访问到对端中途设备,发现ttl不够用的时候,中途设备随即返回一个icmp 报文 ttl不可达.
全栈程序员站长
2022/09/27
1.4K0
icmp协议是tcp还是udp_icmp协议使用udp
Linux traceroute 命令详解
Linux中traceroute 命令用于显示数据包到目的主机的路径 Windows中路由追踪命令是tracert。
全栈程序员站长
2022/11/02
3.1K0
Linux traceroute 命令详解
traceroute命令学习笔记
traceroute 是一个非常有用的网络诊断工具,用于追踪从源主机到目标主机的路径。这个工具在 Linux 系统中广泛使用,帮助网络管理员和用户了解数据包在网络中的传输情况,从而诊断网络问题。
程序熵
2024/08/05
2320
traceroute命令学习笔记
Traceroute网络排障实用指南(1)
一、概述 1.1 什么是Traceroute 当遇到网络问题,通常会用Traceroute去排查,但Traceroute是什么? 根据百度百科定义,Traceroute是一种电脑网络工具,它可显示数据包在IP网络经过的路由器的IP地址。 Traceroute有三大特点: 跨平台。Traceroute工具存在与各个操作系统平台,包括主流系统MAC OS、Windows、Linux、Android、IOS等; 使用方便。只要在Traceroute后输入IP或域名即可; 信息全面。Traceroute能够显示跳数
小小科
2018/05/02
2.5K0
Traceroute网络排障实用指南(1)
全平台网络路径跟踪工具全面指南:涵盖Windows/Linux/MacOS/ios/Android
对于一些网络排障场景,需要借助各类网络排障工具来做一些基础类信息排障和信息收集,本文将从多平台讲述各类网络排障工具的安装及使用方法。
RokasYang
2023/11/28
9.5K0
全平台网络路径跟踪工具全面指南:涵盖Windows/Linux/MacOS/ios/Android
相关推荐
traceroute详解[通俗易懂]
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文