排查网络常用命令

发布时间 2023-12-06 15:38:01作者: 要快乐不要emo

网络

1、设备概念

# 中继器
也称之为信号放大器,网络信号帧传输过程会随着距离或外在因素干扰而变弱,中继器用来将收到的信号重新放大
# hub
集线器,多端口的hub
# 网桥和交换机
都可以通过内部维护的mac表根据目标的mac地址对帧进行转发
交换机具有自主学习维护mac表的功能
# 路由器
可以隔离ip段,实现不同的ip段互相通信

2、网络技术

2.1 Vlan

2.1.1 优势

# 虚拟局域网
1、当具有较大规模的网络时,大量广播报文会消耗大量带宽,影响性能,Vlan可以隔离广播域
2、将物理意义上的网络设备通过逻辑划分形成网段,而不用关心物理设备是否在一起

2.1.2 技术实现

# 基于端口
# 基于mac
# 基于协议
# 基于网络地址

3、网络协议


4、常用命令

4.1 route

# 管理路由信息

route -n 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.3.2      0.0.0.0         UG    100    0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-2f4f8794f22c
172.31.3.0      0.0.0.0         255.255.255.0   U     100    0        0 ens33

Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
Genmask:目标网络对应的netmask
Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址 # 如果是直连网络,gateway是0.0.0.0
Metric: 开销cost,值越小,路由记录的优先级最高
# 添加路由信息
route add 
route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 # 添加一个到192.168.1.3的地址 网关地址是172.16.0.1 使用eth0网卡 主机路由
route add -net 192.168.8.0/24 dev eth1 metric 200 # 添加一个到192.168网段的路由信息,使用eth1网卡优先级设置为200 网络路由,作为路由器使用
route add default gw 172.16.0.1 # 将除了定义网关的其余流量转发到默认网关
# 删除路由信息
route del
route del -net 192.168.0.0 netmask 255.255.255.0

4.2 ip

4.2.1 网卡管理

# 禁用/启用
ip link set eth1 down|up
# 改名
ip link set ens33 name eht1
# 新增
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
# 删除
ip addr del 172.16.100.100/16 dev eth0 label eth0:0

4.3 ss

# 获取socket连接信息
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息

5、网络诊断工具

5.1 fping

# 针对批量主机进行ping操作
fping ip [ip2 ip3 ...] # 针对自定义多ip进行ping
fping -g 10.0.0.1/23 # 针对网段进行ping操作
fping < hots # 针对文件中定义的ip进行ping操作

5.2 tcpdump

5.2.1 简单介绍

# 抓包工具
# 命令格式:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

# 参数说明:
    -a 尝试将网络和广播地址转换成名称。
    -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
    -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
    -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
    -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
    -e 在每列倾倒资料上显示连接层级的文件头。
    -f 用数字显示网际网络地址。
    -F<表达文件> 指定内含表达方式的文件。
    -i<网络接口> 使用指定的网络截面送出数据包。
    -l 使用标准输出列的缓冲区。
    -n 不把主机的网络地址转换成名字。
    -nn 指定协议
    -N 不列出域名。
    -O 不将数据包编码最佳化。
    -p 不让网络界面进入混杂模式。
    -q 快速输出,仅列出少数的传输协议信息。
    -r<数据包文件> 从指定的文件读取数据包数据。
    -s<数据包大小> 设置每个数据包的大小。
    -S 用绝对而非相对数值列出TCP关联数。
    -t 在每列倾倒资料上不显示时间戳记。
    -tt 在每列倾倒资料上显示未经格式化的时间戳记。
    -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
    -v 详细显示指令执行过程。
    -vv 更详细显示指令执行过程。
    -x 用十六进制字码列出数据包资料。
    -w<数据包文件> 把数据包数据写入指定的文件

5.2.2 常用命令

# 对指定网卡进行检测
tcpdump -i eth1
# 对指定主机进行检测
tcpdump host 172.31.3.10
# 针对报文的来源或者目标进行检测
tcpdump src host 172.31.3.10
tcpdump dst host 172.31.3.10
# 针对端口进行监测
tcpdump port 10086
# 针对tcp/udp进行监测
tcpdump tcp port 22

# 万能公式
#详细示例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析

5.3 nmap

远程扫描工具,类似ping而功能远超ping
# 命令格式
nmap [Scan Type(s)] [Options] {target specification}
# 选项

-sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息
-sS TCP 同步扫描 (TCP SYN),因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志
-sF,-sX,-sN 秘密 FIN 数据包扫描、圣诞树 (Xmas Tree)、空 (Null) 扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应 RST 包,而打开的端口必需忽略有问题的包
-sP ping 扫描,用 ping 方式检查网络上哪些主机正在运行。当主机阻塞 ICMP echo 请求包是ping 扫描是无效的。nmap 在任何情况下都会进行 ping 扫描,只有目标主机处于运行状态,才会进行后续的扫描
-sU UDP 的数据包进行扫描,想知道在某台主机上提供哪些 UDP 服务,可以使用此选项
-sA ACK 扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW 滑动窗口扫描,非常类似于 ACK 的扫描
-sR RPC 扫描,和其它不同的端口扫描方法结合使用。


-bFTP 反弹攻击 (bounce attack),连接到防火墙后面的一台 FTP 服务器做代理,接着进行端口扫描。

-P0 在扫描之前,不 ping 主机。
-PT 扫描之前,使用 TCP ping 确定哪些主机正在运行
-PS 对于 root 用户,这个选项让 nmap 使用 SYN 包而不是 ACK 包来对目标主机进行扫描。
-PI 设置这个选项,让 nmap 使用真正的 ping(ICMP echo 请求)来扫描目标主机是否正在运行。
-PB 这是默认的 ping 扫描选项。它使用 ACK(-PT) 和 ICMP(-PI) 两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-PA 

-O 这个选项激活对 TCP/IP 指纹特征 (fingerprinting) 的扫描,获得远程主机的标志,也就是操作系统类型
-I 打开 nmap 的反向标志扫描功能。
-f 使用碎片 IP 数据包发送 SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图
-v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP>在一些情况下,nmap 可能无法确定你的源地址 。在这种情况使用这个选项给出指定 IP 地址
-g port设置扫描的源端口
-oN 把扫描结果重定向到一个可读的文件 logfilename 中
-oS 扫描结果输出到标准输出。
--host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制
--max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约 9000 毫秒
--min_rtt_timeout
--min-parallelism 并发数
-M  count设置 nmap 对每次探测至少等待你指定的时间,以毫秒为单位置进行 TCP connect() 扫描时,最多使用多少个套接字进行并行的扫描

5.3.2 常用命令

# Tcp ack 扫描,并发2000,速度快
nmap -n -PA --min-parallelism 2000 172.16.0.0/16
# 扫描主机并列出主机名称解析结果
nmap -sL 10.0.0.0/24
www.prom.com 172.31.3.77
# 指定一个范围进行扫描目前存在的主机
nmap -sP 10.0.0.1-10
# 从一个文件中导入IP地址,并进行扫描
nmap -iL hosts.txt
# 探测目标主机开放的端口,可指定一个以逗号分隔的端口列表(如-PS22,443,80)
nmap -PS 22,80,443 10.0.0.1
# 用于扫描目标主机服务版本号
nmap -sV 10.0.0.7
# 扫描TCP,UDP端口
nmap -s[T|U] -O 10.0.0.1
# 查看主机端口(1024-65535)中开放的端口
nmap -p 1024-65535 localhost
#探测目标主机开放的端口
nmap -PS 10.0.0.1
#探测目标主机操作系统类型
nmap -A 10.0.0.1