linux网络问题排查必须要懂的命令

2024-08-25 12:20

本文主要是介绍linux网络问题排查必须要懂的命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

‘’

1. ping命令

ping 最简单的功能就是传送 ICMP 数据包

[root@node-1 ~]# ping 192.168.31.19
PING 192.168.31.19 (192.168.31.19) 56(84) bytes of data.
64 bytes from 192.168.31.19: icmp_seq=1 ttl=64 time=0.201 ms
64 bytes from 192.168.31.19: icmp_seq=2 ttl=64 time=0.200 ms
64 bytes from 192.168.31.19: icmp_seq=3 ttl=64 time=0.177 ms
64 bytes from 192.168.31.19: icmp_seq=4 ttl=64 time=0.209 ms
64 bytes from 192.168.31.19: icmp_seq=5 ttl=64 time=0.190 ms
^C
--- 192.168.31.19 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.177/0.195/0.209/0.016 ms
  • 64 bytes:表示这次传送的 ICMP 数据包大小为 64 bytes 这么大,这是默认值, 在某些特殊场合中,例如要搜索整个网络内最大的 MTU 时,可以使用 -s 2000 之类的数值来取代

  • icmp_seq=1:ICMP 所侦测进行的次数,第一次编号为 1

  • ttl=49:TTL 与 IP 数据包内的 TTL 是相同的,每经过一个带有 MAC 的节点时,例如 router、bridge 时, TTL 就会减少一,预设的 TTL 为 255 , 你可以通过 -t 150 之类的方法来重新设定预设 TTL 数值

  • time=0.209 ms:响应时间,单位有 ms(0.001秒)及 us(0.000001秒), 一般来说,越小的响应时间,表示两部主机之间的网络联机越良好.

2. traceroute

跟踪主机之间的网络路径情况

$ traceroute to 114.114.114.114 (114.114.114.114), 30 hops max, 60 byte packets1  XiaoQiang (192.168.31.1)  3.873 ms  3.717 ms  3.609 ms2  192.168.1.1 (192.168.1.1)  3.547 ms  3.515 ms  3.489 ms3  172.16.64.1 (172.16.64.1)  15.171 ms  15.145 ms  15.112 ms4  183.233.109.157 (183.233.109.157)  10.108 ms  10.079 ms  10.047 ms5  221.179.3.240 (221.179.3.240)  14.984 ms  21.735 ms  18.334 ms6  221.183.39.149 (221.183.39.149)  14.872 ms  10.394 ms  10.325 ms7  221.183.41.42 (221.183.41.42)  40.900 ms *  40.832 ms

3. ip命令

通过 ip add区查看主机的ip信息情况,检查网卡状态、IP地址,网络位、MAC地址、MTU是否正确

[root@node-1 ~]# ip add
1: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:74:a2:d2 brd ff:ff:ff:ff:ff:ffinet 192.168.31.250/24 brd 192.168.31.255 scope global noprefixroute dynamic ens33valid_lft 92163sec preferred_lft 92163secinet6 fe80::20c:29ff:fe74:a2d2/64 scope link valid_lft forever preferred_lft forever

通过 ip route 去看主机路由情况,多网卡情况下,检查默认路由是否正确,静态路由是否正确

[root@node-1 ~]# ip route
default via 192.168.31.1 dev ens33 proto dhcp metric 100 
192.168.31.0/24 dev ens33 proto kernel scope link src 192.168.31.250 metric 100 

通过ip route get 查看地址192.168.31.19走的是哪条路由出去

[root@node-1 ~]# ip route get 192.168.31.19
192.168.31.19 dev ens33 src 192.168.31.250 cache 

4. telnet命令

telnet命令通常用来远程登录,我们可以利用它来检查目的服务器网络端口情况

[root@node-1 ~]# telnet 192.168.31.250 22
Trying 192.168.31.250...
Connected to 192.168.31.250.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

4. ss命令

通过ss命令查询一下自己的网络接口所监听的端口 (port) 来看看是否真的有启动

[root@node-1 ~]# ss -ntlpu 
Netid  State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
udp    UNCONN     0      0                        *:68                                   *:*                   users:(("dhclient",pid=913,fd=6))
tcp    LISTEN     0      128                      *:22                                   *:*                   users:(("sshd",pid=1094,fd=3))
tcp    LISTEN     0      100              127.0.0.1:25                                   *:*                   users:(("master",pid=1319,fd=13))
tcp    LISTEN     0      128                   [::]:22                                [::]:*                   users:(("sshd",pid=1094,fd=4))
tcp    LISTEN     0      100                  [::1]:25                                [::]:*                   users:(("master",pid=1319,fd=14))

stat:状态栏,主要的状态含有:

  • ESTABLISED:已建立联机的状态

  • SYN_SENT:发出主动联机 (SYN 标志) 的联机数据包

  • SYN_RECV:接收到一个要求联机的主动联机数据包

  • FIN_WAIT1:该插槽服务(socket)已中断,该联机正在断线当中

  • FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的数据包

  • TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束

  • LISTEN:通常用在服务的监听 port

5. nslookup

nslookup用来作为 IP 与主机名对应的检查, 使用 /etc/resolv.conf 这个文件来作为 DNS 服务器的来源选择。

[root@node-1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.31.1
[root@node-1 ~]# 
[root@node-1 ~]# nslookup baidu.com
Server:		192.168.31.1
Address:	192.168.31.1#53Non-authoritative answer:
Name:	baidu.com
Address: 110.242.68.66
Name:	baidu.com
Address: 39.156.66.10

tcpdump

在云生产环境,虚拟机通常遇到网络不通,可通过tcpdump or ovs-tcpdump工具进行抓包判断ip在哪个节点处于网络不可达。

# 抓取ens33的包
$ tcpdump -i ens33 [arp or icmp] host [vm_ip or vm_gateway] -nne
# 抓取ovs br-int的包
$ ovs-tcpdum -i br-int [arp or icmp] host [vm_ip or vm_gateway] -nne
# 抓取ens33的[in or out]的包
$ tcpdump -i ens33 [arp or icmp] host [vm_ip or vm_gateway] -Q [in or out] -nne
# 抓取ens33 的vxlan包
$ tcpdump -i ens33 dst 172.18.70.72(目的pod物理业务网卡IP) and udp

这篇关于linux网络问题排查必须要懂的命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105542

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境