【DevOps】Linux 网络命令详解:举例说明

目录

1. ip 命令

查看和配置网络接口

管理路由表

2. netstat 和 ss 命令

查看网络连接

显示详细统计信息

查看某个端口被什么进程占用

详解各个选项参数

示例

注意事项

使用 ss 命令查看端口占用

3. ping 命令

基本用法

常用选项

实际应用示例

4. traceroute 命令

基本工作原理

使用traceroute

常用选项

示例

注意事项

5. tcpdump 命令

基本工作原理

基本语法

常用选项

常用过滤表达式

示例

注意事项


在 Linux 系统中,网络配置和故障排查是系统管理员的常见任务。Linux 提供了丰富的命令行工具来帮助管理网络、监控性能、诊断问题,以及优化网络设置。本文将详细介绍一系列关键的 Linux 网络命令,并通过实际例子来展示它们的用法和功能。

1. ip 命令

ip 命令是用来显示和操作路由、设备、策略路由和隧道的工具,是旧的 ifconfigroutearp 等命令的替代品。

查看和配置网络接口

  • 查看所有接口的 IP 地址:

    ip addr show
    

    或简写为:

    ip a
    
  • 查看特定接口的详细信息:

    ip addr show dev eth0
    

    这里 eth0 是网络接口的名称,根据实际情况替换。

  • 启用和禁用网络接口:

    ip link set eth0 up   # 启用 eth0
    ip link set eth0 down # 禁用 eth0
    
  • 添加或删除 IP 地址:

    ip addr add 192.168.1.100/24 dev eth0  # 添加 IP 地址
    ip addr del 192.168.1.100/24 dev eth0  # 删除 IP 地址
    

管理路由表

  • 查看路由表:

    ip route show
    

    或简写为:

    ip r
    
  • 添加和删除路由:

    ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0  # 添加路由
    ip route del 192.168.2.0/24                           # 删除路由
    

2. netstatss 命令

netstat 命令用于显示网络连接、路由表、接口统计等信息,而 ss 是 netstat 的更强大和快速的替代品。

查看网络连接

  • 使用 netstat 查看所有连接:

    netstat -a
    
  • 使用 ss 查看所有 TCP 连接:

    ss -t -a
    
  • 查看所有监听端口:

    ss -t -l
    

显示详细统计信息

  • 使用 netstat 查看接口统计:

    netstat -i
    
  • 使用 ss 查看 TCP 连接的统计:

    ss -ti
    

查看某个端口被什么进程占用

当你需要查看某个端口被哪个进程占用时,netstat 可以提供详细的信息,包括服务的 PID 和进程名称。

要使用 netstat 查看某个特定端口(例如 80 端口)被哪个进程占用,你可以使用以下命令:

netstat -tulnp | grep :80
详解各个选项参数
  • -t (TCP): 这个选项指示 netstat 显示 TCP 协议的连接。
  • -u (UDP): 这个选项指示 netstat 显示 UDP 协议的连接。
  • -l (Listening): 这个选项让 netstat 仅列出处在监听状态的套接字,这对于查找哪个进程在监听某个端口非常有用。
  • -n (Numeric): 通常,netstat 会显示服务名称(如 http)和主机名(如 localhost)。使用 -n 选项,netstat 会直接使用 IP 地址和端口号,避免域名解析带来的延迟和不必要的 DNS 查找。
  • -p (Program): 最重要的选项之一,它显示每个套接字关联的进程 ID 和程序名。这对于确定哪个程序绑定了某个端口至关重要。
示例

假设你想找出哪个进程监听了 TCP 80 端口(通常是 HTTP 服务),你可以运行:

netstat -tulnp | grep :80

输出可能类似于:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1316/nginx: master  
tcp6       0      0 :::80                   :::*                    LISTEN      1316/nginx: master  

这里,1316/nginx: master 表示 PID 为 1316 的进程(nginx 的主进程)正在监听端口 80。

注意事项
  • 权限:运行 netstat -p 需要足够的权限(通常是 root 权限),因为查看系统上所有用户的进程信息需要管理员权限。
  • 过时的 netstat:在一些较新的 Linux 发行版中,netstat 被 ss 命令替代了。如果你发现 netstat 不可用或希望使用更现代的工具,可以使用 ss 命令作为替代。
使用 ss 命令查看端口占用

ss 是另一个非常有用的工具,用于显示类似的信息。使用 ss 查看被占用的端口,可以执行:

ss -tulnp | grep :80

其中选项的含义与 netstat 类似,ss 命令通常更快,更推荐在现代系统上使用。

3. ping 命令

ping 命令是网络管理员用来测试网络连接的一个非常基础和强大的工具。它利用 ICMP (Internet Control Message Protocol) 协议发送回显请求消息到目标主机,并监听回显应答来检测两个主机间的连通性。

基本用法

最基本的 ping 命令只需要一个参数,即目标主机的地址,可以是 IP 地址或者域名:

ping google.com

或者直接使用 IP 地址:

ping 8.8.8.8

这将持续发送 ICMP Echo Request 消息到目标地址,并显示每次回显应答的详细信息,包括往返时间(RTT)。

常用选项

ping 命令有许多选项,可以用来修改命令的行为或输出的详细程度。以下是一些常用的选项:

  • -c count: 停止发送报文的数量。使用这个选项可以指定发送多少个 ICMP 请求后停止。例如,发送 4 个 ICMP Echo 请求后停止:

    ping -c 4 google.com
    
  • -i interval: 设置连续 Echo 请求之间的间隔秒数。默认是 1 秒,但可以设置更短的时间来进行更快速的检测。例如,每 0.5 秒发送一个请求:

    ping -i 0.5 google.com
    
  • -t ttl: 设置 IP Time To Live 域。这个选项可以用来测试网络层的特定路径,因为 TTL 值决定了数据包能通过的最大网络跳数。例如,设置 TTL 为 5:

    ping -t 5 google.com
    
  • -W timeout: 设置等待每次回显回复的超时时间(以秒为单位)。这个选项可以用来判断网络延迟和丢包率。例如,设置超时为 2 秒:

    ping -W 2 google.com
    
  • -s packetsize: 设置 ICMP 数据包的数据大小(以字节为单位)。默认是 56 字节的数据,加上 8 字节的 ICMP 头,因此默认 ICMP 请求是 64 字节。例如,发送数据大小为 120 字节的 ICMP 请求:

    ping -s 120 google.com
    
  • -q: 安静输出。只显示摘要行,包含丢包信息和平均、最小、最大 RTT。

    ping -q -c 5 google.com
    
  • -v: 详细输出模式。显示 ICMP 消息的详细信息,对于调试很有帮助。

  • -f: 快速发送模式。发送请求的速度非常快,不等待回应,也不显示单个的回应时间,通常用于压力测试。

    ping -f localhost
    
  • -D: 使用绝对时间戳显示输出。

    ping -D google.com
    
  • -A: 自适应模式。动态调整间隔时间,根据网络响应时间自适应调整发送数据包的间隔。

    ping -A google.com
    
  • -n: 数字输出。直接使用数字 IP 地址而不进行 DNS 解析。

    ping -n 8.8.8.8
    
  • -m pmtudisc_opt: 设置 Path MTU Discovery (PMTU) 选项。可以是 do (开启 PMTU Discovery),dont (关闭),或 want (开启,但不设置 DF 标志)。

    ping -m do google.com
    
  • -4: 强制使用 IPv4。

  • -6: 强制使用 IPv6。

实际应用示例

让我们看几个 ping 命令的实际应用示例:

  • 检测网络连通性:发送 5 个 ICMP 请求到 google.com 并显示结果。

    ping -c 5 google.com
    
  • 快速检测本地网络:快速发送大量 ICMP 请求到本地路由器。

    ping -f -c 100 192.168.1.1
    
  • 检测网络延迟:测量到 google.com 的平均往返时间。

    ping -c 10 google.com
    
  • 查找网络路径问题:逐步增加 TTL 值来查看数据包的路径。

    for i in {1..10}; do ping -c 1 -t $i google.com; done
    

这些示例和选项展示了 ping 命令的多样性和实用性,使其成为网络诊断和性能评估的重要工具。

4. traceroute 命令

traceroute 是一个非常有用的网络诊断工具,它用于显示数据包从一个主机传输到另一个主机所经过的路径。这个命令可以帮助你识别网络连接中的延迟瓶颈和故障位置。traceroute 利用 ICMP 和 UDP 数据包的生存时间(TTL)字段来确定网络中每一跳(即每一个路由器)的路径。

基本工作原理

traceroute 通过发送一系列小的数据包到目标主机来工作。每个数据包的 TTL 值从 1 开始递增。每当数据包经过一个路由器,其 TTL 值会减 1,当 TTL 值减到 0 时,路由器会丢弃这个数据包并发送一个 ICMP "Time Exceeded" 消息回发送者。traceroute 使用这些消息来识别所有到目标的路径上的路由器。

使用traceroute

基本语法:

traceroute [options] <destination>
  • <destination> 可以是 IP 地址或域名,指示 traceroute 的目的地。

常用选项

  • -n: 不对地址进行 DNS 名称解析,直接显示 IP 地址。
  • -m <max_ttl>: 设置最大生存时间(TTL),即最多经过的路由器数量,默认通常为 30。
  • -q <nqueries>: 设置每一跳发送的查询数,默认为 3。
  • -f <first_ttl>: 设置第一个使用的 TTL 值,默认为 1。这可以用来开始跟踪从一个高于 1 的 TTL 值,有助于跳过前面已知的路由器。
  • -I: 使用 ICMP 回显请求代替 UDP 数据报进行探测。
  • -T: 使用 TCP SYN 而不是 UDP 数据报进行探测,常用于诊断不响应 UDP 的服务器。
  • -p <port>: 设置 UDP 发送到的目标端口号或 TCP SYN 发送到的目标端口号,默认值通常为 33434。
  • -i <interface>: 使用指定的网络接口发送数据包。
  • -w <waittime>: 设置等待每次回应的最大时间(秒)。
  • -z <pausemsecs>: 设置发送数据包之间的等待时间(毫秒),用于限制 traceroute 的发送速率。

示例

  • 基本用法:显示从本机到 google.com 的路由路径。

    traceroute google.com
    
  • 使用 ICMP 而不是 UDP:使用 ICMP 请求来进行跟踪。

    traceroute -I google.com
    
  • 设置最大 TTL:显示路由路径,其中每一跳的 TTL 最大为 20。

    traceroute -m 20 google.com
    
  • 不解析名称:以纯 IP 形式显示路径。

    traceroute -n google.com
    
  • 改变查询次数:每跳只发送 1 个查询包。

    traceroute -q 1 google.com
    
  • 使用 TCP SYN:使用 TCP SYN 包进行 traceroute,对某些服务器来说,这种方式可能会绕过防火墙的限制。

    traceroute -T -p 80 google.com
    
  • 详细输出:一些 traceroute 版本支持 -v 选项以提供更详细的输出。

    traceroute -v google.com
    
  • 指定源接口:从特定网络接口发送数据包。

    traceroute -i eth0 google.com
    
  • 调整发送间隔:设置每次发送数据包的间隔为 0.5 秒。

    traceroute -z 500 google.com
    

注意事项

  • 网络安全设施如防火墙和 NAT 设备可能会影响 traceroute 的结果,有时会导致部分路径不显示或显示为星号(*)。
  • traceroute 的输出需要一定的网络知识来正确解读,特别是在复杂的网络环境中。
  • 某些路由器配置为不发送 ICMP “Time Exceeded” 消息,这会导致 traceroute 无法显示这些路由器。

通过熟练使用 traceroute 和其各种选项,你可以有效地诊断网络连接问题,从而更快地解决网络故障或性能瓶颈。

traceroute google.com

5. tcpdump 命令

tcpdump 是一个强大的命令行网络分析工具,用于捕获和分析网络上的数据包。它可以展示网络接口上所有的传入和传出的数据包的头信息,并且支持基于各种条件的过滤,使得用户可以更加精确地定位感兴趣的数据包。

基本工作原理

tcpdump 使用 pcap (Packet Capture) 库来捕获网络数据包。当你运行 tcpdump,它会把网络接口设置为混杂模式,这样它就可以监听所有通过该接口的数据包,而不仅仅是发往本机的数据包。

基本语法

tcpdump [options] [filter-expression]
  • options: 控制 tcpdump 行为的命令行选项。
  • filter-expression: 定义了一个过滤表达式,用来指定哪些数据包会被捕获。

常用选项

以下是一些常用的 tcpdump 选项:

  • -i <interface>: 指定要监听的网络接口。例如,eth0lo (回环接口) 等。
  • -n: 不解析主机名,使用 IP 地址显示。
  • -v, -vv, -vvv: 增加输出的详细程度。-v 表示稍微详细,-vv 更详细,-vvv 最详细。
  • -c <count>: 捕获指定数量的数据包然后停止。
  • -s <size>: 设置捕获的数据包的部分大小(字节)。默认是捕获 96 字节,使用 -s 0 可以捕获完整的数据包。
  • -w <file>: 将捕获的数据包写入文件而不是打印出来。
  • -r <file>: 从文件中读取数据包,通常与 -w 选项配合使用。
  • -A: 以 ASCII 格式打印每个数据包(不包括链路层的头),便于阅读。
  • -X: 以十六进制和 ASCII 格式打印每个数据包的数据部分,包括链路层的头。
  • -q: 快速输出,仅打印较少的协议信息。
  • -t: 在输出中不包括时间戳。
  • -e: 在输出中包括数据链路层的头信息。
  • -E: 使用提供的密钥解密 IPsec 流量。

常用过滤表达式

过滤表达式用来定义哪些数据包会被 tcpdump 捕获。它们基于一组逻辑规则,这些规则可以根据协议、端口号、主机地址等属性来定义。

  • src <host>: 源地址是 <host> 的数据包。
  • dst <host>: 目标地址是 <host> 的数据包。
  • host <host>: 源或目标地址是 <host> 的数据包。
  • net <network>: 属于 <network> 网络的数据包。
  • src port <port>: 源端口是 <port> 的数据包。
  • dst port <port>: 目标端口是 <port> 的数据包。
  • port <port>: 源或目标端口是 <port> 的数据包。
  • proto <protocol>: 协议是 <protocol> 的数据包,例如 icmptcpudp
  • tcpudpicmpTCP / UDP / ICMP 协议的数据包。

示例

  • 捕获所有经过 eth0 接口的数据包:

    tcpdump -i eth0
    
  • 捕获所有到达或离开某个特定 IP 的数据包:

    tcpdump host 192.168.1.1
    
  • 捕获所有目标端口为 80 的 TCP 数据包:

    tcpdump -i eth0 'tcp dst port 80'
    
  • 捕获所有源端口为 23 的数据包:

    tcpdump 'src port 23'
    
  • 仅捕获 ICMP 数据包:

    tcpdump icmp
    
  • 捕获所有经过 lo 接口的数据包并且不解析主机名:

    tcpdump -n -i lo
    
  • 捕获 100 个 TCP 数据包后停止:

    tcpdump -c 100 tcp
    
  • 以详细模式捕获数据包:

    tcpdump -vvv -i eth0
    
  • 将捕获的数据包写入文件:

    tcpdump -w packets.pcap
    
  • 从文件读取数据包:

    tcpdump -r packets.pcap
    
  • 捕获 TCP 数据包并显示每个数据包的数据部分:

    tcpdump -X tcp
    
  • 显示所有经过 eth0,目的地或源地为 192.168.1.1 的 TCP 数据包:

    tcpdump -i eth0 -n 'tcp and (src host 192.168.1.1 or dst host 192.168.1.1)'
    
  • 捕获源 IP 是 10.0.0.1 并且目标端口是 22 的数据包:

    tcpdump -n 'src host 10.0.0.1 and dst port 22'
    
  • 捕获所有非 ICMP 数据包:

    tcpdump 'not icmp'
    
  • 使用更复杂的表达式:

    tcpdump 'src net 192.168.1.0/24 and dst port 443'
    

注意事项

  • 运行 tcpdump 可能需要管理员权限。
  • tcpdump 可能不会显示真实的网络速度,因为它在用户空间处理数据包,而不是在内核空间。
  • 大量的数据包捕获和处理可能会对系统性能造成影响。
  • 在高速网络或捕获大量数据时,考虑使用更高效的工具如 Wireshark 或使用专用的网络分析硬件。

这些命令和工具的组合提供了强大的网络管理和优化能力,帮助管理员监控、配置和优化 Linux 系统的网络性能。每个工具都有其特定的使用场景和优势,了解并熟练使用这些工具是提高网络管理效率和效果的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vueConfig

vue.config.js 的完整配置&#xff08;超详细&#xff09;&#xff01; 前段时间&#xff0c;对部门的个别项目进行Vue3.0ts框架的迁移&#xff0c;刚开始研究的时候也是踩坑特别多&#xff0c;尤其我们的项目还有些特殊的webpack配置&#xff0c;所以&#xff0c;研究vue.conf…

ArrayList数组去重

ArrayList数组去重 1.LinkedHashSet2.HashSet3.steam的distinct()方法4.steam的filter()方法5.contains()方法6.indexOf()方法7.lastIndexOf()方法8.双重for循环9.sort 排序 运行结果 原数组 : [3, 3, 1, 2, 5, 6, 8, 6, 4, 2] XXXXXX 去重后数组 : [3, 1, 2, 5, 6, 8, 4]1.Li…

在go-zero中使用jwt

gozero使用jwt 两个步骤 获取token验证token 前端获取token 先编写 jwt.api 文件&#xff0c;放在api目录下 syntax "v1"info (title: "type title here"desc: "type desc here"author: "type author here"email: &quo…

工控组态技术:实现工业自动化控制的重要手段

体验地址&#xff1a;by组态[web组态插件] 工控组态技术是一种应用于工业自动化控制领域的重要技术&#xff0c;它通过将各种不同的硬件设备和软件系统进行组合和配置&#xff0c;实现了工业生产过程的自动化控制和优化。 随着工业技术的不断发展和进步&#xff0c;工控组态技…

Webpack 5新特性详解与性能优化实践

2024年礼包&#xff1a;2500G计算机入门到高级架构师开发资料超级大礼包免费送&#xff01; 1. 长期缓存&#xff08;Long-Term Caching&#xff09; Webpack 5通过确定性的Chunk ID、模块ID和导出ID实现了长期缓存&#xff0c;这意味着相同的输入将始终产生相同的输出。这样…

拥有蝴蝶效应的爬虫如何进行防护

美国气象学家爱德华罗伦兹&#xff08;Edward N.Lorenz&#xff09;1963年在一篇提交纽约科学院的论文中分析了一个叫做蝴蝶效应的理论&#xff1a;“一个气象学家提及&#xff0c;如果这个理论被证明正确&#xff0c;一只海鸥扇动翅膀足以永远改变天气变化。”在以后的演讲和论…

IP 地理定位神话与事实

ip地理定位是一项技术&#xff0c;用于通过访问设备的ip地址来获取地理位置信息&#xff0c;例如国家、城市、经纬度等。该技术广泛应用于网站内容自定义、广告定位、网络安全和用户分析等领域。它通过与包含ip地址和地理位置映射的大型数据库进行查询来工作&#xff0c;但在准…

软件测评报告:除了软件测评中心,还有哪些选择?

传统的观念中&#xff0c;软件测评中心往往被视为进行软件测评的首选机构。然而&#xff0c;随着技术的发展和市场的扩大&#xff0c;除了软件测评中心&#xff0c;越来越多的机构和平台也提供了专业的软件测评服务。本文将探讨除了软件测评中心之外&#xff0c;还有哪些地方可…

工作中使用Optional处理空指针异常

工作中使用Optional处理空指针异常 实体类以前对空指针的判断Optional处理空指针测试结果 实体类 package po;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;Data AllArgsConstructor NoArgsConstruct…

单调栈:(C++)

在题目的要求中&#xff0c;存在先进后出&#xff08;即在前面的数据需要遍历到后面的某一数据时才能确定计算值&#xff09;单调栈在一部分解题场景中避免了暴力解法的高时间复杂度问题&#xff0c;但是在做题过程中视情况而定&#xff0c;有些题目的最优解不一定使用单调栈&a…

百度智能云数据仓库 Palo 实战课程

通过本课程&#xff0c;您将学习如何使用 Palo 构建高性能、低延迟的分布式数仓服务&#xff0c;掌握数据建模、数据导入、查询优化和系统调优等技能&#xff0c;掌握如何管理和运维 Palo 集群&#xff0c;提高数据处理和分析的效率。同时&#xff0c;我们将进一步向您介绍 Pal…

2024OD机试卷-螺旋数字矩阵 (java\python\c++)

题目:螺旋数字矩阵 题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。 小明对这…

2024下载旧版本谷歌浏览器和谷歌驱动器chromedriver,亲测有效

2024下载旧版本谷歌浏览器和谷歌驱动器chromedriver,亲测有效 1. 下载旧版本谷歌浏览器 找了很多博客&#xff0c;实验了很多种&#xff0c;我发现最有效的是下面的网址&#xff0c;可能需要一些科技。 但是下载下来的谷歌浏览器版本是ok的。拿来就能用&#xff0c;亲测有效…

QT创造一个新的类(柱状图的类),并关联属性和方法

1.以在UI上添加柱状图的类为例&#xff08;Histogram&#xff09; #ifndef STUDY_HISTOGRAM_H #define STUDY_HISTOGRAM_H#include <QVector> #include <QWidget>// 前向声明 QT_BEGIN_NAMESPACE class QColor; class QRect; class QString; class QPaintDevice; …

【机器学习300问】84、AdaGrad算法是为了解决什么问题?

神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题&#xff0c;解决这个问题的过程称为最优化。因为参数空间非常复杂&#xff0c;无法轻易找到最优解&#xff0c;而且在深度神经网络中&#xff0c;参数的数量非常庞大&#xff0c;导致最优化问…

【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题

文章目录 &#x1f354;Redis的分布式锁&#x1f6f8;误删问题&#x1f388;解决方法&#x1f50e;代码实现 &#x1f6f8;原子性问题&#x1f339;Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁&#x1f50e;代码实现 &#x1f354;Redis的分布式锁 Redis的分布式锁是通过利…

基于FPGA的音视频监视器,音视频接口采集器的应用

① 支持1路HDMI1路SDI 输入 ② 支持1路HDMI输出 ③ 支持1080P高清屏显示实时画面以 及叠加的分析结果 ④ 支持同时查看波形图&#xff08;亮度/RGB&#xff09;、 直方图、矢量图 ⑤ 支持峰值对焦、斑马纹、伪彩色、 单色、安全框遮幅标记 ⑥ 支持任意缩放画面&#xff0c;支…

远程桌面连接不上怎么连服务器,原因是什么?如何解决?

远程桌面连接不上怎么连服务器&#xff0c;原因是什么&#xff1f;如何解决&#xff1f; 面对远程桌面连接不上的困境&#xff0c;我们有办法&#xff01; 当你尝试通过远程桌面连接服务器&#xff0c;但遭遇连接失败的挫折时&#xff0c;不要慌张。这种情况可能由多种原因引起…

Redis20种使用场景

Redis20种使用场景 1缓存2抽奖3Set实现点赞/收藏功能4排行榜5PV统计&#xff08;incr自增计数&#xff09;6UV统计&#xff08;HeyperLogLog&#xff09;7去重&#xff08;BloomFiler&#xff09;8用户签到&#xff08;BitMap&#xff09;9GEO搜附近10简单限流11全局ID12简单分…

【Docker】Docker部署Java程序

Maven中使用打包插件 <build><finalName>duanjian</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass…