网络排查案例课
杨胜辉
eBay 资深运维专家,流量系统负责人
22781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
实战三:不用抓包就能做的网络排查篇 (2讲)
网络排查案例课
15
15
1.0x
00:00/00:00
登录|注册

06 | 定位防火墙(二):网络层的精确打击

端口与协议不匹配
application-default设置
推导对端OS类型
反映网络路径跳数
路由设备递减
IP包属性
分析TCP流
过滤TCP流
过滤IP
IPSec使用
网络层加密
丢弃RST报文
插入RST报文
telnet第三方站点
路由配置
隧道创建
虚拟机配置
防火墙拦截行为
分析TTL变化
客户端和服务端抓包
防火墙策略问题
TTL详解
抓包分析
高效方法
直接方法
应用层分析(超时问题)
传输层分析
抓包文件
如何识别防火墙如果TTL不再是指标
防火墙未来可能改进
主动策略
实验步骤
搭建测试环境
保持TCP连接
防火墙一次性动作
iptables丢弃RST报文
案例2:访问LDAPS服务报connection reset by peer
案例1:Web站点访问被reset
不同场景适用不同方法
技术上没有“一招鲜”
聚焦网络层
网络设备、主机本身可能原因
不仅防火墙引发
网络层精确打击
两侧抓包对比分析
附录
思考题
拓展思考
动手实践
应对防火墙插入RST
案例分析
网络层定位防火墙
包乱序现象
定位方法
定位防火墙问题

该思维导图由 AI 生成,仅供参考

你好,我是胜辉。今天我们接着上节课的学习和思考,继续来探讨如何定位防火墙问题。
在上节课里,我们用两侧抓包并对比分析的方法,首先定位到了引发长耗时的数据包,然后对比两侧抓包文件,定位到了包乱序的现象及其原因。最后,我们综合这些有利证据,跟安全部门沟通后,拿到了真正的根因,并彻底解决了问题。
在那个案例中,大量的分析技术是位于传输层,而且要结合应用层(超时的问题)做综合分析。总的来说,难度还是不小的。而且还有一个不可回避的问题:包乱序难道只有防火墙才会引发吗?
其实不是的。包乱序是一种相对来说比较普遍的现象,除了防火墙,还有网络设备、主机本身都可能引起乱序。所以,单纯根据包乱序就断定是防火墙在中间捣鬼,就有点以偏概全了。
那么有没有一种方法,不需要借助那么多的传输层的复杂知识,就可以让我们更加明确地判断出,问题是在防火墙呢?
这节课,我就给你介绍这种方法,即聚焦在网络层的精确打击。这是一种更加直接、更加高效的办法。
你可能又会疑惑了:难道说我们上节课学的东西,其实是多余的吗?那倒不是。这两节讲防火墙的课程,各自有不同的侧重点和不同的适用场景。这次我们介绍的方法,在上节课的案例里就不会起到作用;反过来也是如此。技术上没有“一招鲜”,只是这次课讲的内容相对上节课来说,确实更加直接,这也是它的一大特点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了利用TTL值定位网络层问题的方法,以解决防火墙引发的连接问题。作者首先指出包乱序可能由多种因素引起,而非仅仅是防火墙的问题。随后,作者详细介绍了利用抓包分析和TTL来定位问题的方法,并通过案例分析展示了如何利用TTL值反映网络路径跳数以及内网连接中TTL值的稳定性。文章还提到了借助Wireshark的自定义列来更有效地分析TTL值的方法。最后,通过一个案例,作者展示了如何利用TTL值定位防火墙引发的问题,并修正防火墙策略解决了连接问题。文章还介绍了如何通过iptables规则来丢弃有害的RST报文,以及如何模拟防火墙行为进行实践。整体而言,本文为读者提供了全面的网络层问题排查和解决方法,对于网络技术人员具有重要的参考价值。文章内容技术性强,适合对网络层问题感兴趣的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络排查案例课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(28)

  • 最新
  • 精选
  • includestdio.h
    老师我这里有个小问题,既然是被防火墙RST了,为啥客户端抓包看到的SRC IP不是防火墙IP,而仍然是服务端IP,能理解为什么要这样做,但是不太了解这是怎么实现的,有啥说法吗

    作者回复: 那你要回头复习一下预习篇的网络分层了,这个还是TCP流的关系,五元组是跟连接一一对应的。如果防火墙用自己IP作为SRC IP,那么这个RST报文就被视为独立的一个报文而被丢弃,或者也被RST,但不影响防火墙意图要干扰的那个连接。

    2022-01-24
    13
  • webmin
    MAC地址中的组织唯一标识符 (OUI)由,IEEE(电气和电子工程师协会)分配给厂商,那么通过MAC地址可以辨别出厂商,防火墙的主要厂商也不多,从这块信息大约能判断出回包的是不是防火墙,因为是通过二层信息判断,所以这个方法是有局限性的。

    作者回复: 在这个小范围内确实也是一个可行的办法~

    2022-01-24
    3
    6
  • ThinkerWalker
    思考题:traceroute查看数据包经过的路径?

    作者回复: traceroute是可以看到路径上所有的三层设备的,这里强调“三层”,是因为只有工作在IP层的路由性质的设备(包括三层交换机)才会回复ICMP消息。如果是纯二层设备,不会回复ICMP消息,也就在traceroute输出里看不到它。 防火墙也经常出现在traceroute输出里,不过一般它的ip也不特殊,名称上(如果有反向解析记录的话)也未必说自己是防火墙。当然,事实上很多时候防火墙是没有反向解析记录的,也就是traceroute不加-n,那么别的节点可能显示为名称,但防火墙只是显示为ip,虽然准确率不太高,不过倒是可以用来参考:) 用TTL来判断是非常准的,几乎不会“失手”。但是题目不能用TTL了,那么IP层还有什么可以借用的吗?比如IP ID,因为ID号是通信两端自己各自生成的连续号码,防火墙插入报文的话,一般来说IP ID就不同了。你如果也有被防火墙干扰的抓包文件,可以观察IP ID在RST报文里跟其他正常报文是否不同:)

    2022-01-30
    3
    5
  • WalkRun
    老师 弱弱的问一句 如果想让vm1访问百度通过vm2那么把vm1的网关设置成vm2的IP不就可以了吗?

    作者回复: 是的,但是这有前提条件,也就是vm1和vm2必须在同一个广播域。如果是跨越了广播域(也就是仅仅三层可达,而不是二层可达),那么就无法设置对方为自己的网关。 通过隧道技术,无论是否在同一个广播域,你都可以把隧道IP作为网关,通用性更好一些:)

    2022-05-17
    2
    4
  • 潘政宇
    老师,有2个问题请教一下: 1. iptables作用点是在tcp IP协议栈之前吗? 2. iptables drop后的包,tcpdump还能抓到吗

    作者回复: 关于第一个问题,这要具体看在iptables的哪条链上: 1. 如果是在进来的PREROUTING和INPUT链上,那么iptables规则先生效,然后报文进入内核TCP/IP协议栈 2. 如果是在出去的OUTPUT或POSTROUTING链上,那么报文是先在内核处理后才到这两条链上的,所以这两条链上的iptables是后生效的 3. 如果是在转发链FORWARD上的规则,报文不进入本地处理 关于第二个问题: iptables drop的报文,tcpdump还是可以抓取到的,课程里面的试验3,就是这样的例子~

    2022-02-03
    3
    4
  • 那时刻
    我在Mac里通过docker 模拟两台虚机动手实践rst消息的例子,但是遇到问题 1. 在docker container里 执行 `nc -v www.baidu.com 443` 得到错误 `nc: getaddrinfo: Try again` 2. 如果在docker container里执行 nc -v 180.101.49.12 443 ,同时在另外一个docker里执行 tcpdump抓包, ``` 03:55:04.573358 IP 100.64.0.1.41036 > 180.101.49.12.443: Flags [S], seq 1595471296, win 64620, options [mss 1436,sackOK,TS val 1040158415 ecr 0,nop,wscale 7], length 0 03:55:04.573392 IP 100.64.0.2.41036 > 180.101.49.12.443: Flags [S], seq 1595471296, win 64620, options [mss 1436,sackOK,TS val 1040158415 ecr 0,nop,wscale 7], length 0 03:55:04.573455 IP 100.64.0.1 > 100.64.0.2: ICMP redirect 180.101.49.12 to host 180.101.49.12, length 68 03:55:04.573466 IP 100.64.0.2.41036 > 180.101.49.12.443: Flags [S], seq 1595471296, win 64620, options [mss 1436,sackOK,TS val 1040158415 ecr 0,nop,wscale 7], length 0 03:55:05.571442 IP 100.64.0.1.41036 > 180.101.49.12.443: Flags [S], seq 1595471296, win 64620, options [mss 1436,sackOK,TS val 1040159448 ecr 0,nop,wscale 7], length 0 03:55:05.571486 IP 100.64.0.2.41036 > 180.101.49.12.443: Flags [S], seq 1595471296, win 64620, options [mss 1436,sackOK,TS val 1040159448 ecr 0,nop,wscale 7], length 0 ``` 只有sync 包,即使加上 nat 也是如此。 具体的信息,请参见 https://gist.github.com/richzw/2948a9bc2de8dca1811b69c42796a576。麻烦老师抽空帮忙看看

    作者回复: 嗯,我看了你的github的内容,里面有点小问题: 1. 容器1设置route的时候,指定的网关ip应该是容器2的tunnel ip,而不是容器1自己的tunnel ip。所以这条命令: # ip route add 180.101.49.0/24 via 100.64.0.1 dev tun0 应该改成: # ip route add 180.101.49.0/24 via 100.64.0.2 dev tun0 2. 容器2不要添加route 改完这两个地方就可以通了:)

    2022-03-09
    3
  • JianXu
    我司现在碰到的问题是,当源到目的不通或者间歇性不通的情况下,源端应用的负责人就会找到基础架构问为什么。而我们现在并没有一个很好的办法可以得到答案。然后就变成应用,基础架构和数据中心物理网络把自己的三板斧当成免责,公司的应急反应中心最后就把所有人拉在一起。到了分布式后这个问题越来越严重 查起来也越来越繁琐了。现在有一种趋势就是应用,分布式防火墙,软件负载均衡都说要把日志送到监控部门手上,然后监控部门和网站可用性的副总说有谁对怎么用这些数据负责任吗?我给领导汇报说我觉得流量运维部门是定位这类问题的希望。

    作者回复: 嗯这是一个很大的话题,对于不同规模的公司: 1. 中小公司,直接做网络层分析(mtr等)和抓包分析(tcp行为),应该能解决大部分问题 2. 大型公司,需要先从错综复杂的环境里的各个环节里收集数据,第一步需要把问题初步定位到某几个子环节,然后再运用上面说的方法。另外一种思路是干脆不做抓包分析(或者尽量少依赖抓包分析),尽量用tracing的方式,这里又包括两种tracing: a. 网络中每一跳的tracing b. 主机/pod上的网卡到内核函数路径上的tracing 任重而道远:)

    2022-03-19
    2
  • 江山如画
    拓展思考,丢弃有害 RST 的办法: 方法1: 如果防火墙策略是基于 ipv4 的,并且服务器支持 ipv6 访问,可以使用 ipv6 地址绕过防火墙策略 方法2: 如果防火墙策略是通过源地址限制访问,可以通过自己搭建一台跳板机,先访问跳板机,通过跳板机再访问防火墙 思考题,识别防火墙的方法: 方法1: 我想在通信报文里设置一些特殊的标记来标识双方,只要是客户端和服务端通信都需要设置这个标记,如果是防火墙代发则没有这个标记。在 tcp flags 中有保留位可以用于设置,或者是在 tcp payload 中设置一些用于标记的字符串。

    作者回复: 你的3个回答都挺棒的,给你点👍 方法2是指SSH tunnel吧,这个方法也可以,不过要注意跳板机一般也会被安全部门管理,不过这个确实也技术上可以绕过防火墙了。另外,客户端也需要做一些额外配置。 关于设置特殊标记的方法,我觉得也很开“脑洞”:) 因为是保留位,也就是目前没有被标准定下来如何使用,那么可能还是需要对linux内核进行定制,并配合用户空间程序,然后让这种“识别”启用起来,然后就可以鉴别出防火墙了~

    2022-01-24
    2
    2
  • N0mansky
    这种绕过还是只能针对单向rst吧,如果双向rst就没法绕过了

    作者回复: 是的,双向的话,除非可以在靠两端的位置都各有一个这种的装置来丢弃RST报文,否则只要有一端收到RST,依然要断开的~

    2022-11-15归属地:上海
    1
  • 霍格沃兹小学徒
    ip addr add 100.64.0.2 peer 100.64.0.1 dev tun0 想知道这条命令里面的 ip地址是怎么确定的

    作者回复: 只是这个网段常用来给隧道用而已:)

    2022-04-12
    2
    1
收起评论
显示
设置
留言
28
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部