linux命令-网络工具-3
大纲
| 命令 | 功能 | 常用示例 |
|---|---|---|
ping | 测试网络连通性 | ping -c 4 google.com |
netstat | 网络连接统计 | netstat -tulnp(监听端口) |
ss | 网络连接统计 | ss -tnlp |
traceroute | 跟踪数据包路径 | traceroute -n 8.8.8.8 |
scp | 安全远程拷贝 | scp file user@remote:/path/ |
tcpdump | 网络抓包分析 | tcpdump -i eth0 port 80 |
ping
检查网络是否通畅或网络连接速度
-
参数
参数 作用 示例 -c <次数>指定发送请求包的数量 ping -c 5 192.168.1.1(发送5次请求)-i <间隔秒数>设置包发送间隔(默认1秒) ping -i 0.5 www.baidu.com(每0.5秒发送1个包)-s <字节数>自定义数据包大小(默认56字节,总64字节含ICMP头) ping -s 1024 172.17.0.254(发送1024字节数据包)-fFlood模式(快速发送包,仅root可用) ping -f example.com(每秒最多发送100个包,用于压力测试)-n仅显示IP地址,不解析主机名 ping -n www.csdn.net(避免DNS查询延迟) -
示例
-
指定 0.4秒一个包, 每包大小18字节, 默认64
[root@localhost cc]# ping -i 0.4 -c 3 www.baidu.com PING www.baidu.com (183.2.172.17) 56(84) bytes of data. 64 bytes from 183.2.172.17 (183.2.172.17): icmp_seq=1 ttl=128 time=43.4 ms 64 bytes from 183.2.172.17 (183.2.172.17): icmp_seq=2 ttl=128 time=38.6 ms 64 bytes from 183.2.172.17 (183.2.172.17): icmp_seq=3 ttl=128 time=65.8 ms -
ping 3次
# 过程跟上面一样,但如果不通可能就要很长时间,加上-i更方便一些 [root@localhost cc]# ping -c 3 www.baidu.com -
Flood模式(快速发送包,仅root可用) 如果不ctrl+c会一直ping
# Flood模式(快速发送包,仅root可用) 如果不ctrl+c会一直ping # 压测时使用 cc]# ping -f -c3 www.baidu.com PING www.baidu.com (183.2.172.177) 56(84) bytes of data. -
只显示最终的结果, 需要跟上 -c 这个参数,不加-c就需要手动 ctrl+c
[root@localhost cc]# ping -c 2 -q www.baidu.com PING www.baidu.com (183.2.172.17) 56(84) bytes of data.--- www.baidu.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 33.335/34.682/36.030/1.360 ms # 仅显示最终的结果,不会有打印过程
-
netstat
netstat 是监控 TCP/IP 网络的控制台命令,能提供网络连接、路由表、接口状态等关键信息,常用于网络问题诊断和连接监控
-
cenos7已废弃, 推荐使用ss , 需要使用
yum -y install net-tools -
参数
参数组合 功能描述 典型用途 netstat -a显示所有网络连接(含 LISTEN 状态) 全面了解系统网络活动 netstat -t/-u仅显示 TCP / UDP 连接 过滤特定协议连接 netstat -l显示监听状态的端口 检查服务器端口是否正常开放 netstat -p显示连接关联的进程 ID 和名称 定位占用端口的进程 netstat -r显示系统路由表 分析网络数据包转发路径 netstat -tlpn组合参数:TCP + 监听 + 进程 + 数字IP 快速排查服务端口占用 netstat -c 3 -
示例
-
以数字形式显示建立tcp的连接
[root@localhost cc]# netstat -tn Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 36 192.168.189.129:22 192.168.189.1:3185 ESTABLISHED tcp 0 0 192.168.189.129:22 192.168.189.1:3199 ESTABLISHED -
显示本地监听以及建立tcp连接
[root@localhost cc]# netstat -tna Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN ... tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN -
上面的都有,只是多了个pid跟程序名
[root@localhost cc]# netstat -tnap Proto Recv-Q Send-Q Local Address .. PID/Program name tcp 0 0 0.0.0.0:22 .. 9275/sshd tcp 0 0 127.0.0.1:25 .. 9422/master tcp 0 36 192.168.189.129:22 .. 9534/sshd: root@pts tcp 0 0 192.168.189.129:22 .. 9540/sshd: root@not tcp6 0 0 :::22 .. 9275/sshd tcp6 0 0 ::1:25 .. 9422/master -
列出所有端口的统计信息
~]# netstat -s Ip:29993749 total packets received0 forwarded0 incoming packets discarded29993749 incoming packets delivered30489738 requests sent out7 outgoing packets dropped Icmp:283312 ICMP messages received53210 input ICMP message failed.ICMP input histogram:destination unreachable: 264212echo requests: 735echo replies: 18365 -
显示核心路由信息
[root@localhost cc]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.189.2 0.0.0.0 UG 0 0 0 ens33 192.168.189.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 -
统计连接的状态
~]# netstat -nat |awk '{print $6}' |sort| uniq -c1 established)1 ESTABLISHED1 Foreign9 LISTEN~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn # 倒序查看9 LISTEN5 TIME_WAIT1 Foreign1 ESTABLISHED1 established)
-
ss
ss(Socket Statistics)用于显示系统套接字统计信息,相较于传统的 netstat,它能提供更详细的 TCP 状态信息,且因直接读取内核 tcp_diag 模块数据,在高并发场景下速度更快.
-
参数
选项组合 功能描述 示例命令 -t -a显示所有 TCP 连接(监听+非监听) ss -t -a-u -a显示所有 UDP 连接 ss -u -a-l -p显示监听状态的套接字及对应进程 ss -l -p-n -a -s以数字格式显示所有连接及统计摘要 ss -n -a -s-o显示套接字内存使用信息 ss -o-r解析服务名为主机名 ss -r -
示例-netstat差不多
-
与netstat对比
特性 ss 命令 netstat 命令 数据来源 内核 tcp_diag 模块(直接高效) /proc 文件系统(开销较大) TCP 状态细节 支持显示更丰富的状态(如 SYN-RECV) 状态展示较基础 高并发表现 处理大量连接时速度更快 连接数多时卡顿明显
traceroute
traceroute 是网络诊断工具,通过发送不同协议的数据包,记录途经路由器的 IP 地址和响应时间,帮助定位网络延迟或故障节点其主要协议及对应选项如下:
-
参数
协议类型 选项 端口/说明 适用场景 UDP(默认) 无 30000 以上随机端口 常规路径追踪,多数场景适用 TCP -T -p <端口> 指定端口(如 80、443) 需穿透防火墙或检测特定服务端口可达性 ICMP -I 使用 ICMP 回显请求(类似 ping) 需模拟 ping 路径追踪,部分网络仅允许 ICMP -
示例: 使用前需要先安装:
yum -y install traceroute-
默认 UDP 追踪(带域名解析)
~]# traceroute www.badui.com traceroute to www.badui.com (67.23.129.4), 30 hops max, 60 byte packets1 gateway (网关) 4.951 ms 5.575 ms 6.347 ms2 路由器 (路由器) 0.217 ms 0.217 ms 0.206 ms3 外网出口地址 (外网出口地址) 76.053 ms 76.996 ms 77.922 ms4 172.30.20.1 (172.30.20.1) 2.323 ms 2.624 ms 2.893 ms.... 10 202.127.113.253 (202.127.113.253) 48.204 ms 48.171 ms 47.916 ms....# 我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包 ~]# traceroute -q 4 www.badui.com traceroute to www.badui.com (67.23.129.4), 30 hops max, 60 byte packets1 gateway (网关) 6.338 ms 7.019 ms 7.697 ms 8.370 ms2 路由器 (路由器) 0.179 ms 0.412 ms 0.398 ms 0.383 ms3 外网出口地址 (外网出口地址) 8.532 ms 9.393 ms 11.872 ms 12.895 ms。。。。 -
禁用 DNS 解析(仅显示 IP)
~]# traceroute -n www.jd.com # 直接输出 IP 地址,减少 DNS 查询耗时,适合快速定位网络节点 -
ICMP 协议追踪
~]# traceroute -I -n www.jd.com # 使用 ICMP 协议,结果与 ping 路径更接近,部分网络中响应更稳定 -
TCP 协议追踪(指定端口 80)
traceroute -T -p 80 -n www.jd.com # 模拟 TCP 连接请求,可检测目标服务器 80 端口的可达性,中间节点可能因防火墙显示 ***(超时) -
跳数设置
~]# traceroute -m 4 www.baidu.com # 只显示4跳 traceroute to www.badui.com (67.23.129.4), 4 hops max, 60 byte packets1 gateway (网关) 4.951 ms 5.575 ms 6.347 ms2 路由器 (路由器) 0.217 ms 0.217 ms 0.206 ms3 外网出口地址 (外网出口地址) 76.053 ms 76.996 ms 77.922 ms4 172.30.20.1 (172.30.20.1) 2.323 ms 2.624 ms 2.893 ms -
把对外发探测包的等待响应时间设置为3秒
# 超过3秒就直接返回 *** ~]# traceroute -w 3 www.baidu.com
-
tcpdump
Linux抓包工具tcpdump详解
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
-
关键字&选项
-
指定地址
参数 说明 host host 210.27.48.2, 指明 210.27.48.2是一台主机 net net 202.0.0.0指明202.0.0.0是一个网络地址 port port 23 指明端口号是23, 如果没有指定类型,缺省的类型是host -
指定源或目标
参数 说明 src 指定IP包的源地址 dst 指定IP包的目标地址 dst or src 源地址或目标地址中的其中一个, 不指定默认就是这种 dst and src 源地址或目标地址 需要同时满足 -
协议类型
参数 说明 ip 指定ip地址 arp arp协议 tcp 指定协议为tcp udp 指定协议为udp -
常用表达式
逻辑关系 符号形式 英文形式 功能说明 使用示例 非 (不等于) !not排除指定条件的数据包 tcpdump not port 22tcpdump ! host 192.168.1.1且 (同时满足) &&and需同时满足两个条件的数据包 tcpdump port 80 and src 10.0.0.1tcpdump udp && dst port 53或 (满足其一) ` ` or
-
-
基本语法
-
过滤主机
# 抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据 ~]# tcpdump -i ens160 host 192.168.2.22# 指定源地址 host可不要 默认 ~]# tcpdump -i ens160 src host 192.168.2.22# 指定目标地址 ~]# tcpdump -i ens160 dst 192.168.2.22 -
过滤端口
# 抓取经过ens160, 目的或源端口是10050 并源地址是192.168.2.18的地址 ~]# tcpdump -i ens160 port 22 and src 192.168.2.18# 指定源端口是22的包, 源=自已 ~]# tcpdump -i ens160 src port 22# 抓取目标端口是22的包 目标=谁在连接 ~]# tcpdump -i ens160 dst port 22 -
网络过滤
# 过滤源或目标是 192.168的网络段 ~]# tcpdump -i eth1 net 192.168 # 过滤源的网段是192.168的 ~]# tcpdump -i eth1 src net 192.168# 过滤目标的网段是192.168的 ~]# tcpdump -i eth1 dst net 192.168 -
协议过滤
tcpdump -i eth1 arp tcpdump -i eth1 ip tcpdump -i eth1 tcp tcpdump -i eth1 udp tcpdump -i eth1 icmp -
运算符过滤
# 过滤 tcp 端口为999 并且目标是 2.18或2.22的主机, 注意括号 ~]# tcpdump -i ens160 '(tcp and port 999 and (dst host 192.168.9.18 or dst host 192.168.2.22))'
-
