一、为什么需要路径探测?
想知道你的数据包从电脑到服务器,经过了哪些路由器。
二、三种技术原理对比
#mermaid-svg-zyupOaXSNl2DEN6a{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zyupOaXSNl2DEN6a .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zyupOaXSNl2DEN6a .error-icon{fill:#552222;}#mermaid-svg-zyupOaXSNl2DEN6a .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zyupOaXSNl2DEN6a .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zyupOaXSNl2DEN6a .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zyupOaXSNl2DEN6a .marker.cross{stroke:#333333;}#mermaid-svg-zyupOaXSNl2DEN6a svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zyupOaXSNl2DEN6a p{margin:0;}#mermaid-svg-zyupOaXSNl2DEN6a .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-zyupOaXSNl2DEN6a .cluster-label text{fill:#333;}#mermaid-svg-zyupOaXSNl2DEN6a .cluster-label span{color:#333;}#mermaid-svg-zyupOaXSNl2DEN6a .cluster-label span p{background-color:transparent;}#mermaid-svg-zyupOaXSNl2DEN6a .label text,#mermaid-svg-zyupOaXSNl2DEN6a span{fill:#333;color:#333;}#mermaid-svg-zyupOaXSNl2DEN6a .node rect,#mermaid-svg-zyupOaXSNl2DEN6a .node circle,#mermaid-svg-zyupOaXSNl2DEN6a .node ellipse,#mermaid-svg-zyupOaXSNl2DEN6a .node polygon,#mermaid-svg-zyupOaXSNl2DEN6a .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zyupOaXSNl2DEN6a .rough-node .label text,#mermaid-svg-zyupOaXSNl2DEN6a .node .label text,#mermaid-svg-zyupOaXSNl2DEN6a .image-shape .label,#mermaid-svg-zyupOaXSNl2DEN6a .icon-shape .label{text-anchor:middle;}#mermaid-svg-zyupOaXSNl2DEN6a .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zyupOaXSNl2DEN6a .rough-node .label,#mermaid-svg-zyupOaXSNl2DEN6a .node .label,#mermaid-svg-zyupOaXSNl2DEN6a .image-shape .label,#mermaid-svg-zyupOaXSNl2DEN6a .icon-shape .label{text-align:center;}#mermaid-svg-zyupOaXSNl2DEN6a .node.clickable{cursor:pointer;}#mermaid-svg-zyupOaXSNl2DEN6a .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zyupOaXSNl2DEN6a .arrowheadPath{fill:#333333;}#mermaid-svg-zyupOaXSNl2DEN6a .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zyupOaXSNl2DEN6a .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zyupOaXSNl2DEN6a .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zyupOaXSNl2DEN6a .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zyupOaXSNl2DEN6a .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zyupOaXSNl2DEN6a .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zyupOaXSNl2DEN6a .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zyupOaXSNl2DEN6a .cluster text{fill:#333;}#mermaid-svg-zyupOaXSNl2DEN6a .cluster span{color:#333;}#mermaid-svg-zyupOaXSNl2DEN6a div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zyupOaXSNl2DEN6a .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zyupOaXSNl2DEN6a rect.text{fill:none;stroke-width:0;}#mermaid-svg-zyupOaXSNl2DEN6a .icon-shape,#mermaid-svg-zyupOaXSNl2DEN6a .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zyupOaXSNl2DEN6a .icon-shape p,#mermaid-svg-zyupOaXSNl2DEN6a .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zyupOaXSNl2DEN6a .icon-shape .label rect,#mermaid-svg-zyupOaXSNl2DEN6a .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zyupOaXSNl2DEN6a .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zyupOaXSNl2DEN6a .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zyupOaXSNl2DEN6a :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ICMP
否
是
TCP
否
是
正常会话
否
是
开始路径探测
选择探测协议
发送 TTL=1/2/3... 的 UDP/ICMP 包
中间路由器 TTL 耗尽
返回 ICMP 超时消息
源端获取该跳 IP
到达目标?
目标返回 ICMP 端口不可达/应答
✅ 获得完整路径
发送 TTL=1/2/3... 的 SYN 包
中间路由器 TTL 耗尽
返回 ICMP 超时消息
源端获取该跳 IP
到达目标?
目标返回 SYN-ACK 或 RST
✅ 获得完整路径
在已建立的 TCP 连接中
发送 TTL递增的 ACK 包
中间路由器 TTL 耗尽
返回 ICMP 超时消息
源端获取该跳 IP
到达目标?
目标正常接收 ACK
不影响业务
✅ 获得完整路径
三、三种技术核心对比(一图看懂)
#mermaid-svg-5iIEBVcNMdOOSSwp{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5iIEBVcNMdOOSSwp .error-icon{fill:#552222;}#mermaid-svg-5iIEBVcNMdOOSSwp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5iIEBVcNMdOOSSwp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5iIEBVcNMdOOSSwp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5iIEBVcNMdOOSSwp .marker.cross{stroke:#333333;}#mermaid-svg-5iIEBVcNMdOOSSwp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5iIEBVcNMdOOSSwp p{margin:0;}#mermaid-svg-5iIEBVcNMdOOSSwp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster-label text{fill:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster-label span{color:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster-label span p{background-color:transparent;}#mermaid-svg-5iIEBVcNMdOOSSwp .label text,#mermaid-svg-5iIEBVcNMdOOSSwp span{fill:#333;color:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp .node rect,#mermaid-svg-5iIEBVcNMdOOSSwp .node circle,#mermaid-svg-5iIEBVcNMdOOSSwp .node ellipse,#mermaid-svg-5iIEBVcNMdOOSSwp .node polygon,#mermaid-svg-5iIEBVcNMdOOSSwp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5iIEBVcNMdOOSSwp .rough-node .label text,#mermaid-svg-5iIEBVcNMdOOSSwp .node .label text,#mermaid-svg-5iIEBVcNMdOOSSwp .image-shape .label,#mermaid-svg-5iIEBVcNMdOOSSwp .icon-shape .label{text-anchor:middle;}#mermaid-svg-5iIEBVcNMdOOSSwp .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5iIEBVcNMdOOSSwp .rough-node .label,#mermaid-svg-5iIEBVcNMdOOSSwp .node .label,#mermaid-svg-5iIEBVcNMdOOSSwp .image-shape .label,#mermaid-svg-5iIEBVcNMdOOSSwp .icon-shape .label{text-align:center;}#mermaid-svg-5iIEBVcNMdOOSSwp .node.clickable{cursor:pointer;}#mermaid-svg-5iIEBVcNMdOOSSwp .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5iIEBVcNMdOOSSwp .arrowheadPath{fill:#333333;}#mermaid-svg-5iIEBVcNMdOOSSwp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5iIEBVcNMdOOSSwp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5iIEBVcNMdOOSSwp .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5iIEBVcNMdOOSSwp .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5iIEBVcNMdOOSSwp .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5iIEBVcNMdOOSSwp .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster text{fill:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp .cluster span{color:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5iIEBVcNMdOOSSwp .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5iIEBVcNMdOOSSwp rect.text{fill:none;stroke-width:0;}#mermaid-svg-5iIEBVcNMdOOSSwp .icon-shape,#mermaid-svg-5iIEBVcNMdOOSSwp .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5iIEBVcNMdOOSSwp .icon-shape p,#mermaid-svg-5iIEBVcNMdOOSSwp .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5iIEBVcNMdOOSSwp .icon-shape .label rect,#mermaid-svg-5iIEBVcNMdOOSSwp .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5iIEBVcNMdOOSSwp .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5iIEBVcNMdOOSSwp .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5iIEBVcNMdOOSSwp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 0trace方案
发送 ACK
TTL递增
靠ICMP超时回显
TCP方案
发送 SYN
TTL递增
靠ICMP超时回显
ICMP方案
发送 UDP/ICMP
TTL递增
靠ICMP超时回显
❌ 设备禁用ICMP就废
❌ NAT设备丢包
⚠️ 依赖已有会话
四、优缺点速查表
| 方案 | 工具示例 | 原理一句话 | ✅ 优势 | ❌ 缺陷 |
|---|---|---|---|---|
| ICMP | traceroute |
TTL递增,靠ICMP超时报文反推路径 | 简单通用,所有系统自带 | 路径设备禁用ICMP则完全失效 |
| TCP | traceroute -T tcptraceroute |
TTL递增的SYN包,靠ICMP超时报文反推路径 | 可穿透仅允许TCP的防火墙 | 不完整握手被NAT/状态防火墙丢弃 |
| 0trace | 0trace |
在已有TCP会话中发TTL递增的ACK包 | 伪装成正常流量,可探测内网段,绕过防火墙 | 必须有现存的TCP连接,建议多次运行 |
五、三种场景下的路径可见性
#mermaid-svg-Kf9cAAPDGkktD0sC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Kf9cAAPDGkktD0sC .error-icon{fill:#552222;}#mermaid-svg-Kf9cAAPDGkktD0sC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Kf9cAAPDGkktD0sC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Kf9cAAPDGkktD0sC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Kf9cAAPDGkktD0sC .marker.cross{stroke:#333333;}#mermaid-svg-Kf9cAAPDGkktD0sC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Kf9cAAPDGkktD0sC p{margin:0;}#mermaid-svg-Kf9cAAPDGkktD0sC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster-label text{fill:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster-label span{color:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster-label span p{background-color:transparent;}#mermaid-svg-Kf9cAAPDGkktD0sC .label text,#mermaid-svg-Kf9cAAPDGkktD0sC span{fill:#333;color:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC .node rect,#mermaid-svg-Kf9cAAPDGkktD0sC .node circle,#mermaid-svg-Kf9cAAPDGkktD0sC .node ellipse,#mermaid-svg-Kf9cAAPDGkktD0sC .node polygon,#mermaid-svg-Kf9cAAPDGkktD0sC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Kf9cAAPDGkktD0sC .rough-node .label text,#mermaid-svg-Kf9cAAPDGkktD0sC .node .label text,#mermaid-svg-Kf9cAAPDGkktD0sC .image-shape .label,#mermaid-svg-Kf9cAAPDGkktD0sC .icon-shape .label{text-anchor:middle;}#mermaid-svg-Kf9cAAPDGkktD0sC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Kf9cAAPDGkktD0sC .rough-node .label,#mermaid-svg-Kf9cAAPDGkktD0sC .node .label,#mermaid-svg-Kf9cAAPDGkktD0sC .image-shape .label,#mermaid-svg-Kf9cAAPDGkktD0sC .icon-shape .label{text-align:center;}#mermaid-svg-Kf9cAAPDGkktD0sC .node.clickable{cursor:pointer;}#mermaid-svg-Kf9cAAPDGkktD0sC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Kf9cAAPDGkktD0sC .arrowheadPath{fill:#333333;}#mermaid-svg-Kf9cAAPDGkktD0sC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Kf9cAAPDGkktD0sC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Kf9cAAPDGkktD0sC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Kf9cAAPDGkktD0sC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Kf9cAAPDGkktD0sC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Kf9cAAPDGkktD0sC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster text{fill:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC .cluster span{color:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Kf9cAAPDGkktD0sC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Kf9cAAPDGkktD0sC rect.text{fill:none;stroke-width:0;}#mermaid-svg-Kf9cAAPDGkktD0sC .icon-shape,#mermaid-svg-Kf9cAAPDGkktD0sC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Kf9cAAPDGkktD0sC .icon-shape p,#mermaid-svg-Kf9cAAPDGkktD0sC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Kf9cAAPDGkktD0sC .icon-shape .label rect,#mermaid-svg-Kf9cAAPDGkktD0sC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Kf9cAAPDGkktD0sC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Kf9cAAPDGkktD0sC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Kf9cAAPDGkktD0sC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 场景3: 路径中有IDS/IPS
ICMP traceroute
⚠️ 可能告警
TCP traceroute
❌ 易被识别为扫描
0trace
✅ 隐蔽性最高
场景2: 路径中有NAT/状态防火墙
ICMP traceroute
⚠️ 可能断在NAT前
TCP traceroute
❌ NAT丢包
0trace
✅ 利用已有会话穿透
场景1: 目标禁用ICMP
ICMP traceroute
❌ 终点无响应
TCP traceroute
✅ 可到达
0trace
✅ 可到达
六、什么情况下永远探不到完整路径?
#mermaid-svg-DJ9zsaGmVOlVSFxk{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-DJ9zsaGmVOlVSFxk .error-icon{fill:#552222;}#mermaid-svg-DJ9zsaGmVOlVSFxk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DJ9zsaGmVOlVSFxk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .marker.cross{stroke:#333333;}#mermaid-svg-DJ9zsaGmVOlVSFxk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DJ9zsaGmVOlVSFxk p{margin:0;}#mermaid-svg-DJ9zsaGmVOlVSFxk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster-label text{fill:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster-label span{color:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster-label span p{background-color:transparent;}#mermaid-svg-DJ9zsaGmVOlVSFxk .label text,#mermaid-svg-DJ9zsaGmVOlVSFxk span{fill:#333;color:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .node rect,#mermaid-svg-DJ9zsaGmVOlVSFxk .node circle,#mermaid-svg-DJ9zsaGmVOlVSFxk .node ellipse,#mermaid-svg-DJ9zsaGmVOlVSFxk .node polygon,#mermaid-svg-DJ9zsaGmVOlVSFxk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .rough-node .label text,#mermaid-svg-DJ9zsaGmVOlVSFxk .node .label text,#mermaid-svg-DJ9zsaGmVOlVSFxk .image-shape .label,#mermaid-svg-DJ9zsaGmVOlVSFxk .icon-shape .label{text-anchor:middle;}#mermaid-svg-DJ9zsaGmVOlVSFxk .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .rough-node .label,#mermaid-svg-DJ9zsaGmVOlVSFxk .node .label,#mermaid-svg-DJ9zsaGmVOlVSFxk .image-shape .label,#mermaid-svg-DJ9zsaGmVOlVSFxk .icon-shape .label{text-align:center;}#mermaid-svg-DJ9zsaGmVOlVSFxk .node.clickable{cursor:pointer;}#mermaid-svg-DJ9zsaGmVOlVSFxk .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .arrowheadPath{fill:#333333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DJ9zsaGmVOlVSFxk .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-DJ9zsaGmVOlVSFxk .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DJ9zsaGmVOlVSFxk .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster text{fill:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk .cluster span{color:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-DJ9zsaGmVOlVSFxk .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-DJ9zsaGmVOlVSFxk rect.text{fill:none;stroke-width:0;}#mermaid-svg-DJ9zsaGmVOlVSFxk .icon-shape,#mermaid-svg-DJ9zsaGmVOlVSFxk .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DJ9zsaGmVOlVSFxk .icon-shape p,#mermaid-svg-DJ9zsaGmVOlVSFxk .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-DJ9zsaGmVOlVSFxk .icon-shape .label rect,#mermaid-svg-DJ9zsaGmVOlVSFxk .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DJ9zsaGmVOlVSFxk .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-DJ9zsaGmVOlVSFxk .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-DJ9zsaGmVOlVSFxk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 防火墙丢弃所有出站ICMP
❌ 收不到任何回显
防火墙重写TTL值
路径中有七层代理/负载均衡
目标后无三层设备
如容器/虚拟网络
IPS主动检测并干扰
结论: 路径探测不是万能的
需结合业务拓扑综合判断
七、一句话选型建议
#mermaid-svg-3VkJUWXKF1CmGNRB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3VkJUWXKF1CmGNRB .error-icon{fill:#552222;}#mermaid-svg-3VkJUWXKF1CmGNRB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3VkJUWXKF1CmGNRB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3VkJUWXKF1CmGNRB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3VkJUWXKF1CmGNRB .marker.cross{stroke:#333333;}#mermaid-svg-3VkJUWXKF1CmGNRB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3VkJUWXKF1CmGNRB p{margin:0;}#mermaid-svg-3VkJUWXKF1CmGNRB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster-label text{fill:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster-label span{color:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster-label span p{background-color:transparent;}#mermaid-svg-3VkJUWXKF1CmGNRB .label text,#mermaid-svg-3VkJUWXKF1CmGNRB span{fill:#333;color:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB .node rect,#mermaid-svg-3VkJUWXKF1CmGNRB .node circle,#mermaid-svg-3VkJUWXKF1CmGNRB .node ellipse,#mermaid-svg-3VkJUWXKF1CmGNRB .node polygon,#mermaid-svg-3VkJUWXKF1CmGNRB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3VkJUWXKF1CmGNRB .rough-node .label text,#mermaid-svg-3VkJUWXKF1CmGNRB .node .label text,#mermaid-svg-3VkJUWXKF1CmGNRB .image-shape .label,#mermaid-svg-3VkJUWXKF1CmGNRB .icon-shape .label{text-anchor:middle;}#mermaid-svg-3VkJUWXKF1CmGNRB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3VkJUWXKF1CmGNRB .rough-node .label,#mermaid-svg-3VkJUWXKF1CmGNRB .node .label,#mermaid-svg-3VkJUWXKF1CmGNRB .image-shape .label,#mermaid-svg-3VkJUWXKF1CmGNRB .icon-shape .label{text-align:center;}#mermaid-svg-3VkJUWXKF1CmGNRB .node.clickable{cursor:pointer;}#mermaid-svg-3VkJUWXKF1CmGNRB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3VkJUWXKF1CmGNRB .arrowheadPath{fill:#333333;}#mermaid-svg-3VkJUWXKF1CmGNRB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3VkJUWXKF1CmGNRB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3VkJUWXKF1CmGNRB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3VkJUWXKF1CmGNRB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3VkJUWXKF1CmGNRB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3VkJUWXKF1CmGNRB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster text{fill:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB .cluster span{color:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3VkJUWXKF1CmGNRB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3VkJUWXKF1CmGNRB rect.text{fill:none;stroke-width:0;}#mermaid-svg-3VkJUWXKF1CmGNRB .icon-shape,#mermaid-svg-3VkJUWXKF1CmGNRB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3VkJUWXKF1CmGNRB .icon-shape p,#mermaid-svg-3VkJUWXKF1CmGNRB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3VkJUWXKF1CmGNRB .icon-shape .label rect,#mermaid-svg-3VkJUWXKF1CmGNRB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3VkJUWXKF1CmGNRB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3VkJUWXKF1CmGNRB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3VkJUWXKF1CmGNRB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
是
否
我要探测路径
目标是否允许ICMP?
✅ 直接用 traceroute
最快最简单
是否有已有的TCP会话?
✅ 用 0trace
最隐蔽
⚠️ 用 traceroute -T
但可能被NAT丢包
八、核心结论
没有万能的路径探测工具,ICMP最快但最容易被禁,TCP能绕过ICMP限制但怕NAT,0trace最隐蔽但依赖已有会话。实际工作中,三种方法结合使用,并接受"某些路径永远看不到"的现实。