从零开始的网络排障
一.常用网络排障工具:
ping
随着ip协议一同诞生的协议 虽然基于ip数据包封装协议号为1
从报文结构上看属于传输层协议
从功能角度看 ping常用于测试ip转发是否正常 所以icmp常常被作为网络层协议
icmp由type和code字段区分数据包类型:
- 当type为0时 做响应数据包 code为0
- 当type为8时 表示请求数据报 code为0
- 当type为9时 表示通报路由 code为0
- code 只有在细分数据包类型时 才会使用
其中type9 为icmp重定向 本意为 当数据传递给路由器从a口进时 通过路由又要从a口出 路由器会通过icmp通报路由 让数据包直接从下一跳路由转发
那么这个报文可以被攻击者利用 直接重定向到攻击者主机 由攻击者对受害主机的数据包任意修改 窃取 阻断
所以为了提高局域网的安全性 icmp很可能会被禁用
使用方法与参数
ping [选项] 目标地址/域名
选项:
-t 不断发包
-a 反向解析通过地址求得域名 如果解析不到 只显示ip
-n 指定数据包个数
-l 指定数据包的大小
具体不同的操作系统 会有不同的选项 可以查看帮助手册
简而言之 ping命令是常用于测试网络连通性 测试转发效率 解析或反解域名的常用命令
tracert
tracert是基于icmp或udp封装的 通过增量ip数据包首部中的ttl值 不断查询对应跳数与可到达设备的对应关系 从而得出到达目标每一跳的路由
具体原理如:
ping -i 1 www.baidu.com
正在 Ping www.a.shifen.com [157.148.69.80] 具有 32 字节的数据:
来自 172.16.26.1 的回复: TTL 传输中过期。
ping -i 2 www.baidu.com
正在 Ping www.a.shifen.com [157.148.69.80] 具有 32 字节的数据:
来自 192.168.1.1 的回复: TTL 传输中过期。
ping -i 3 www.baidu.com
正在 Ping www.a.shifen.com [157.148.69.80] 具有 32 字节的数据:
来自 100.74.0.1 的回复: TTL 传输中过期。
从上述三个ping与执行结果可以看出前三个越点分别是:
172.16.26.1 -> 192.168.1.1 -> 100.74.0.1
使用方法与参数
tracert [选项] 目标地址/域名
选项:
-d 不将地址解析成主机名
-h maximum_hops 搜索目标的最大跃点数,默认30
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于 IPv6)
-S srcaddr 要使用的源地址(仅适用于 IPv6)
-4 强制使用 IPv4
-6 强制使用 IPv6
-j 指定源地址列表
具体不同的操作系统 会有不同的选项 可以查看帮助手册
sniffer
sniffer 是一种抓包工具 sniffer将网卡设定为混杂模式 接受目标mac为任意mac的数据帧
sniffer 使用过程是:
sniffer filter:过滤器 用于过滤筛选数据包
sniffer capture:监听器 会监听抓取符合过滤器特征的数据
sniffer count:统计器 对抓取到的数据统计
filter:
sniffer filter 【过滤规则】
sniffer filter all #过滤所有数据包
sniffer filter dev【接口】#过滤对应接口数据包
sniffer filter vcpu【cpu】#过滤对应cpu的数据包
sniffer filter 【协议类型】#过滤对应协议类型的数据包
capture:
sniffer capture 【过滤规则】【报文数 1-1000】
sniffer capture ip #抓取ip数据包
sniffer capture vlan #抓取交换转发的数据包
sniffer capture pf #抓取通过packet-filter匹配后的数据包
sniffer cpature drop #抓取丢弃的数据包
sniffer cpature drop #抓取丢弃的数据包
count:
sniffer count start 【过滤规则】#匹配到规则的报文进行统计
sniffer count stop #结束报文统计
packet-monitor
packet 相较于sniffer更加细化 sniffer只能对普通的数据包转发记录
packet 甚至可以抓取数据包在各处理过程的细节:
从普通的数据包接收发送 基础攻击检测模块 会话模块 目标nat 路由 安全策略 虚拟专用网络 到源nat 这些数据包转发经历的每一个阶段 都会被监听 检测
packet-monitor 【ip/ipv6/all】【传输层协议 (指定协议号)】【vlan/接口】
packet-monitor ip host 192.168.0.1 icmp #查询 指定ip协议 主机为192.168.0.1 协议类型为icmp的数据包
packet-monitor ip host 10.0.0.1 udp src-port 5000 des-port 9505 #查询 指定ip为10.0.0.1 源端口为5000 目标端口为9505
namp
namp作为一款渗透前期信息收集的工具 非常好用 可以扫描局域网的主机状态 可以扫描主机的端口状态
可以探测主机的操作系统 用来测试局域网主机启动情况 服务器端口启用情况 非常好用
常用选项:
nmap -sS -T4 -F [目标]
扫描目标的端口开启情况 使用syn扫描模式 快速扫描常用端口 T4为速度 速度可选0-6
nmap -sT -T4 -p1-1024 [目标]
扫描目标的端口开启情况 使用tcp全连接扫描 扫描端口1到1024的状态
nmap -sP -T6 [目标网段]
扫描目标网段的主机情况 有启用 有关闭
wireshark
wireshark是非常经典的一款抓包工具 能通过wireshark更好的了解数据转发过程 可以将数据包截获,重发,编辑和缓存 能实现七层的解码 对协议的细节都可以了解
我们也可以选择追踪流 查看一次会话的完整流程
二.故障信息收集:
不同厂家的设备 命令会不同:
思科体系的设备 使用show命令来查看信息
华为体系的设备 使用dis命令来查看信息
<DPTECH>show tech-support
******************************show clock******************************
Tue Aug 13 16:07:51 2024 GMT +8:00
******************************show version******************************
Software Release S311C013D066
Conplat Version is V100R006B01D066
Compiled Fri, 10 Nov 2023 09:57:20 +0800
Signature base, Version , AV 1.6.1 IPS 3.1.103 WAF 3.1.109
Copyright (c) 2008-2023 Hangzhou DPtech Technologies Co., Ltd. All rights reserved.
Without the owner's prior written consent, neither decompiling nor reverse-engineering shall be allowed.
IPS2000-MA-X Uptime is 0 week(s), 1 day(s), 5 hour(s), 15 minute(s)
CPU type: Intel(R) Atom(TM) CPU C3336 @ 1.50GHz
SDRAM: 4096M bytes
Flash Memory: 16M
EMMC card Memory: 4G
PCB Version: D
CPLD Version: 7.00
BASIC CONBOOT Version: 17.05.16
EXTEND CONBOOT Version: 17.05.16
Serial Number: 02051143N246000009
[SLOT 0] DP1MAXM (PCB)D, (CPLD)7.00, (FPGA)NONE, (CONBOOT)
******************************show patch******************************
******************************show device******************************
SlotID BoardName Online Status
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 DP1MAXM Present Normal
1 Offline Forbidden
2 Offline Forbidden
******************************show local-user******************************
----------------------------------------------------------------------------
UserName : admin
Password : ******
SerVice Type :
Description :
Configure Range : Super
Web status : Normal
Telnet/SSH status : Normal
----------------------------------------------------------------------------
******************************show timeout******************************
Console current timeout is 300 second(s).
Telnet current timeout is 300 second(s).
SSH current timeout is 300 second(s).
Web current timeout is 300 seconds.
******************************show snmp-info******************************
snmp v1: not used
snmp v2c: not used
snmp v3: not used
snmp location: HangZhou
snmp contact: admin@mail.com
******************************show console information******************************
Bard rate: 9600 bit/s
Data bits: 8
Stop bits: 1
以上只是部分信息 该命令其实就是做了一个封装 将大量的show命令封装为一个show tech-support
我们可以搭建本地tftp服务器 网络设备将信息保存到磁盘 然后发送给本地的tftp服务器 使得我们可以在本地查看配置信息
一般设备都会存在日志功能 多看看日志 一定能找到结果
巧用数据包追踪功能
sniffer filter ip
sniffer capture ip drop
抓取丢弃的ip数据包
packet-monitor 监控数据包
三.防火墙问题排查:
策略不生效
案例一:
策略冗余导致不生效:
我们都知道 acl是从上向下匹配的
当上层策略生效后 数据包被处以动作后 该数据包不会再次进行匹配
而如果下层的策略生效范围 被包含在上层策略的生效范围之内
会导致 下层策略不生效
如:
seq szone dzone saddr daddr server user time active
1 trust untrust any 10.0.0.0/24 any any any drop
2 trust untrust any 10.0.0.5/32 any any any permit
其中策略2是策略1的冗余 不能被成功运用
案例二:
会话长连接导致网络中断
当企业需要视频会议或其他操作时 需要使用会话长连接 该功能会大大延迟会话的老化时间 当不断有新的主机连接 会话表迟迟不超时 很可能会话表会被塞满 导致不能建立新的会话 从而中断连接
注意 会话长连接推荐 细化区域 细化设备 不要将大部分设备都设为会话长连接 对网络会话的建立非常不利
以下是一个错误的演示:
seq name dzone szone server user time active
any any any any any any any any
匹配到这个过滤器的设备会保持会话长连接 这会导致所有设备的会话都会被保持在会话表中 对正常业务出现影响
案列三:
会话不及时更新导致业务短时间不生效
由于安全设备是根据会话表转发数据的 策略下发后 只对新建立的会话生效 旧的会话不能使策略生效 所以在添加新的策略后 建议对会话表做一个刷新
或者等待会话老化后 新的策略会生效
源NAT
案例一:
地址池与出口非同一网段导致出现环路
当防火墙的漂浮地址与防火墙出口地址不是一个网段时 且用户刚好要访问漂浮地址时
会导致内网数据包通过一个缺省转发到公网的isp 此时做了nat 源地址为防火墙的漂浮地址 isp收到后发现目标为防火墙 将数据传递给防火墙 防火墙读入数据后 并没有到达漂浮地址的路由 形成环路
案例二:
地址池与出口地址位于同一个网段 但不包含出口地址
此时用户访问地址池 到了防火墙 防火墙有路由条目 认为可达 且同一网段 会发起arp请求 但由于地址为漂浮地址 请求不到从而出现arp风暴
如图 该情况下会出现arp广播风
案例三:
地址池与出口地址位于同一网段 且包含出口地址
此时用户访问接口地址 其可能为访问地址本身服务 也有可能为访问地址nat前的目标 会导致业务紊乱导致设备异常 无法识别数据包具体访问的目标
该情况会大大影响业务的正常访问
目的NAT
目的NAT是 将数据包的目标地址映射到内网服务器地址
将目标地址转换为内网服务器地址
那么当客户端访问防火墙出接口的80端口时 会先匹配nat策略 优先访问内网服务器
案例一:
防火墙公网ip的80端口 服务器的80端口都无法访问
这种情况建议联系运营商 一般国家出于网络安全的考虑要求多家isp封堵tcp的80端口
案例二:
当端口出现冲突 管理端口使用80 内网服务器端口也使用80 此时访问80端口 优先进行目的nat 导致设备无法被管理
建议修改管理端口 或者用https管理
案例三:
没有开启ALG 应用层网关功能 这会导致无法识别数据包中的端口
比如ftp的被动模式 他会将设备的传输端口放在数据包中 由服务器发出 进行协商 服务器的数据包中会传递客户端需要连接的目标端口 需要在应用层对端口做出修改
案例四:
内网主机不能通过公网映射ip访问服务器
原因是:
内网主机访问公网ip公网ip将目标修改为服务器 服务器与内网主机在一个内网中 路由可达 服务器直接把数据交给了内网主机 此时双方由于tcp握手会话不一致 导致tcp会话无法建立 建议再进行源nat 将经过防火墙的内网数据的源地址修改为防火墙地址 这样就能够建立tcp会话
案例五:
内网客户端不能通过域名访问内网服务器
dns将域名的地址解析到防火墙的出口地址 当内网主机访问目标地址时 由于目标主机访问内网服务器会出现案例四同样的问题
现在可以选择开启源nat和目标nat 实现可达性 或者开启dnsalg 当返回dns数据时 直接返回内网服务器的地址 通过内网直接访问
双向nat
案例一:nat冗余不生效
当内网与外网接口地址进行一对一nat时 此时访问外网接口会直接转换到内网服务器
当目的nat为将内网80端口的服务映射到外网8080端口的服务时 此时访问公网接口8080会映射到内网80
这种情况建议建议直接访问目标端口 或者根据业务调整nat逻辑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本