大纲
| 命令 | 功能 | 常用示例 | |
|---|---|---|---|
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 | |
| ip | ip及路由相关 | `ip a | ip route show` |
| hostname | 主机名配置 | hostname | |
| curl | 请求下载url | curl 域名 |
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 received 0 forwarded 0 incoming packets discarded 29993749 incoming packets delivered 30489738 requests sent out 7 outgoing packets dropped Icmp: 283312 ICMP messages received 53210 input ICMP message failed. ICMP input histogram: destination unreachable: 264212 echo requests: 735 echo 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 -c 1 established) 1 ESTABLISHED 1 Foreign 9 LISTEN ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn # 倒序查看 9 LISTEN 5 TIME_WAIT 1 Foreign 1 ESTABLISHED 1 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 packets 1 gateway (网关) 4.951 ms 5.575 ms 6.347 ms 2 路由器 (路由器) 0.217 ms 0.217 ms 0.206 ms 3 外网出口地址 (外网出口地址) 76.053 ms 76.996 ms 77.922 ms 4 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 packets 1 gateway (网关) 6.338 ms 7.019 ms 7.697 ms 8.370 ms 2 路由器 (路由器) 0.179 ms 0.412 ms 0.398 ms 0.383 ms 3 外网出口地址 (外网出口地址) 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 packets 1 gateway (网关) 4.951 ms 5.575 ms 6.347 ms 2 路由器 (路由器) 0.217 ms 0.217 ms 0.206 ms 3 外网出口地址 (外网出口地址) 76.053 ms 76.996 ms 77.922 ms 4 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详解,linux ip命令和ifconfig命令
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满足任一条件的数据包 tcpdump port 443 or port 80`tcpdump icmparp`
-
-
基本语法
-
过滤主机
# 抓取所有经过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))'
-
scp
本地文件传送至远程主机,或从远程主机拉取至本地
-
参数
参数 说明 -P 指定远程连接端口 -q 把进度参数关闭 -r 递归地复制整个文件夹 -V 冗余模式,打印排错信息定位 -
示例
-
从本地发到对端
# 固定格式: -P:指定端口 文件1 用户@地址:地址 ~]# scp -P 22 test.txt root@192.168.9.25:/tmp/ root@192.168.9.25's password: test.txt 100% 0 0.0KB/s 00:00 -
从本地将远端文件拉回来
# 拉取远端文件回本地 ~]# scp -P 22 root@192.168.9.25:/tmp/test.txt /tmp/ root@192.168.9.25's password: test.txt 100% 0 0.0KB/s 00:00
-
IP
用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道, 替代netstat|ifconfig命令的工具
-
语法:
ip [ OPTIONS ] OBJECT { COMMAND | help } -
参数
参数 说明 -v 显示指令版本信息 -s 输出更详细的信息 -h 输出人类可读的统计信息和后缀 -o 将每条记录输出到一行,用‘\’字符替换换行符 -
常用对象
参数 说明 link 网络设备 address 设备上的协议(IP或IPv6)地址 addrlabel 协议地址选择的标签配置 route 路由表条目 rule 路由策略数据库中的规则 -
ip 命令常用备忘
-
示例
-
添加|修改地址
# 添加地址, 如果存在则是多地址, ~]# ip addr add 192.168.189.135/24 dev ens36 ~]# ip a sh ens36 3: ens36: <BROADCAST,MULTICAST> mtu 1500 group default qlen 1000 link/ether 00:0c:29:fa:dc:09 brd ff:ff:ff:ff:ff:ff inet 192.168.189.134/24 scope global ens36 inet 192.168.189.135/24 scope global secondary ens36 # 删除地址后添加新配置 ~]# ip addr del 192.168.189.135/24 dev ens36 ~]# ip addr del 192.168.189.134/24 dev ens36 ~]# ip addr del 192.168.189.133/24 dev ens36 ~]# ip a sh ens36 3: ens36: <BROADCAST,MULTICAST> mtu 1500 group default qlen 1000 inet 192.168.189.133/24 scope global ens36 -
设置网卡别名
~]# ip addr add 10.0.0.1 label ens36:1 dev ens36 3: ens36: ---- group default qlen 1000 inet 192.168.189.133/24 scope global ens36 inet 10.0.0.1/32 scope global ens36:1 <-- 设置别名 -
显示网卡流量
~]# ip -s link show ens33 2: ens33: < ...... qlen 1000 link/ether 00:0c:29:fa:dc:ff brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 218002 2828 0 0 0 0 TX: bytes packets errors dropped carrier collsns 195264 1598 0 0 0 0 -
删除网卡地址
# 先查看网卡地址 ~]# ip -4 addr show dev ens33 2: ens33: <.... 1000 inet 192.168.189.133/24 brd 192.168.189.133 scope global noprefixroute ens160 inet 10.0.0.1/24 brd 10.0.0.255 scope global ens160:1 # 删除别名以及地址 ~]# ip addr del 10.0.0.1/24 dev ens33:1 # 在次查看就已经删除了 ~]# ip -4 addr show dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.189.133/24 brd 192.168.189.133 scope global noprefixroute ens160 # 一次性删除当前网络设备的所有地址, 慎用 ~]# ip addr flush dev ens160 -
激活或者停用网络接口
~]# ip link set ens33 down # 禁用网卡 ~]# ip link set ens33 up # 启用网卡
-
hostname
-
示例
# 设置主机名 ~]# vim /etc/hostname # 显示主机名 ~]# hostname # 查看详细信息 ~]# hostnamectl Static hostname: localhost.localdomain Transient hostname: show Icon name: computer-vm Chassis: vm Machine ID: 8b96b8f3119f49eb8c867204b5a82ef2 Boot ID: cc5712e82fe14c3c99ecf61e1b28571a Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-957.el7.x86_64 Architecture: x86-64 # 设置主机名立即生效 ~]# hostnamectl set-hostname xiong
curl
-
参数
功能分类 关键选项 作用说明 示例命令 基础请求 无选项 发送 GET 请求,输出响应内容 curl www.baidu.com-i显示响应头+内容 curl -i www.baidu.com-I仅显示响应头(HEAD 请求) curl -I www.baidu.com文件操作 -o <文件名>保存响应到指定文件 curl -o baidu.html www.baidu.com-O以 URL 中文件名保存(需指向具体文件) curl -O https://example.com/file.zip-C -断点续传(恢复中断下载) curl -C - -o file.zip https://url请求方法 -X POST指定 POST 请求 curl -X POST https://api.example.com-d <数据>发送 POST 数据(如表单参数) curl -d "user=test&pass=123" https://url认证与代理 -u <用户:密码>服务器认证(如 Basic Auth) curl -u admin:123456 https://secure.url-x <代理>通过代理服务器请求 curl -x http://proxy:8080 www.baidu.com调试与跟踪 -v输出详细通信过程(含 DNS 解析、请求头) curl -v www.baidu.com-s静默模式(不显示进度/错误,仅输出结果) curl -s www.baidu.com