网络故障排查和tcpdump抓包

2024-09-08 11:44

本文主要是介绍网络故障排查和tcpdump抓包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络故障排查:

  1. ping一台服务器不通,你如何排查
    1. 检查本机ip地址设置  网关和dns服务器是否设置正确 或者ip地址冲突
    2. 能否上网 看路由器是否有问题 ping
    3. 服务器是否运行
    4. 服务器禁止ping   防火墙设置 iptables -A INPUT -P ICMP -j DROP
    5. iptables -D INPUT -P ICMP -j DROP
  2. 用户不能访问服务器 怎么排查
      1. 检查用户网络连接
      2. 检查服务器是否运行(数据库 端口nc)
      3. app是否运行 数据库运行等 防火墙
      4. 机房 运营商
  3. 如何知道服务器开启了哪些端口
    1. nc  nmap  nerstat ss lsof
      1. #!/bin/bash
      2. for  i in {0..65535}
      3. do
      4.         (if  ping -c 1 -w 1  192.168.205.141 $i  &>/dev/null ;then
      5.                 echo  $i is used |tee -a ip_use.txt
      6.         else
      7.                 echo  $i is not used|tee -a ip_nouse.txt
      8.         
      9.         fi)&(在后台启动一个子进程)
      10.         wait(父进程执行完代码等待子进程也执行在退出)
      11. done
      12. tee: command |tee 文件名 将输出写入到文件
        1. -a 追加到末尾 不覆盖内容 不写a会覆盖
    2. [root@k8s-master-1 kernel]# lsof -i:22
    3. COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    4. sshd      988 root    3u  IPv4  27937      0t0  TCP *:ssh (LISTEN)
    5. sshd      988 root    4u  IPv6  27939      0t0  TCP *:ssh (LISTEN)
  4. 如何知道一个局域网里有哪些ip地址在使用
    1. 遍历ping -c -w 1
    2. fping -g 192.168.1.1-254
    3. 或者for循环
      1. #!/bin/bash
      2. for  i in {1..254}
      3. do
      4.         (if  ping -c 1 -w 1  192.168.205.$i  &>/dev/null ;then
      5.                 echo  192.168.205.$i is used |tee -a ip_use.txt
      6.         else
      7.                 echo  192.168.205.$i is not used|tee -a ip_nouse.txt
      8.         
      9.         fi)&(在后台启动一个子进程)
      10.         wait(父进程执行完代码等待子进程也执行在退出)
      11.         
      12. done

5.如何知道基于王里某个ip是否有冲突

查看输出结果中是否出现了该IP地址,如果有多个条目对应同一个IP地址,则可能存在IP地址冲突。

[root@k8s-master-1 add]# arping -I ens33 192.168.159.136

ARPING 192.168.159.136 from 192.168.159.144 ens33

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  1.601ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  0.957ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  1.011ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  1.022ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  0.986ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  0.991ms

Unicast reply from 192.168.159.136 [00:0C:29:51:46:32]  1.020ms

^CSent 7 probes (1 broadcast(s))

Received 7 response(s)

如何知道目前的网络是否稳定或者速度是否快

ping www.baidu.com  观察ping命令的响应时间和丢包率

[root@k8s-master-1 add]# ping www.baidu.com

PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.

64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=23.7 ms

64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=128 time=24.6 ms

64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=3 ttl=128 time=28.3 ms

服务器的性能问题

       如何知道目前的服务器各种指标的情况?服务器是否繁忙(load average)?

cpu 网络io  磁盘io(df 挂载  lsblk几块磁盘 iostat) 内存

top  htop  默认基于cpu使用率排序

P(processor处理器)  M  (基于内存排序)

[root@k8s-master-1 ~]# top

top - 15:09:18 up  5:37,  2 users,  load average: 0.84, 1.34, 1.51

Tasks: 166 total,   1 running, 165 sleeping,   0 stopped,   0 zombie

%Cpu(s):  3.4 us,  3.4 sy,  0.0 ni, 89.7 id,  0.0 wa,  0.0 hi,  3.4 si,  0.0 st

KiB Mem :  3861300 total,   395440 free,  1161244 used,  2304616 buff/cache

KiB Swap:        0 total,        0 free,        0 used.  2447520 avail Mem

PR 进程的优先级 20- -19  默认都为20

NI  -》nice  值 可通过修改ni 修改PR 默认0 值越小优先级越高

us --》user processes  用户态进程消耗的cpu的资源的比例

sy --》system processes(内核态的进程消耗的cpu的资源的比例)

id  -->idle  空闲

hi  --》hard interrupt   --》硬件导致的程序中断

si  --》soft interrupt   --》软件导致的程序中断

shift+>    top命令翻页

nice -n -10 vim feng.txt  启动新进程设置nice

renice -5 -p(进程号) 1234  每次拿20加减数字 重新调整以运行的进程的优先级

CFS 完全公平调度算法  2516

时间片cd /proc/sys/kernel/sched_rr_timeslice_ms  100ms

按f可以调出可供选择的字段(列)field

有*会显示出来   上下方向键选中后 敲空格就会加上*  然后可top看到

P  last used cpu                   

h  获得帮助 help  k 杀进程 r 重定义nice值

load average:0.25 1.64 2.35

过去一分钟 五分钟 十五分钟 系统平均负载 有多少进程在cpu run

系统平均负载是处于可运行状态或不可中断状态的 正在等待的进程的平均数量

是按照1个cpu核心算的   一般一到五 都还不是很忙 最大值 核心数*5

cache : disk—cache-memory 读

buffer:memory-buffer-disk  写

util:繁忙度  一秒中有多少百分比的时间用于I/O操作。     

[root@k8s-master-1 kernel]# iostat -x   监控系统 I/O 设备负载以及 CPU 使用情况

  • -c: 显示CPU使用情况。
  • -d: 显示磁盘I/O统计信息。
  • -x: 显示详细的磁盘I/O统计信息。
  • -k: 以KB为单位显示I/O信息。
  • -m: 以MB为单位显示I/O信息。
  • -t: 显示系统负载平均值。

Linux 3.10.0-1160.119.1.el7.x86_64 (k8s-master-1)        2024年09月07日        _x86_64_ (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           4.03    0.00    5.44    0.06    0.00   90.48

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

scd0              0.00     0.00    0.00    0.00     0.20     0.00   114.22     0.00    2.22    2.22    0.00   1.83   0.00

sda               0.01     0.09   18.94    7.29  1000.90   104.88    84.30     0.05    2.12    2.66    0.72   0.33   0.86

dm-0              0.00     0.00   18.67    7.38   994.28   104.08    84.33     0.06    2.14    2.69    0.74   0.33   0.85

dm-1              0.00     0.00    0.02    0.00     0.41     0.00    48.19     0.00    0.31    0.31    0.00   0.19   0.00

dm-2              0.00     0.00    0.03    0.00     0.22     0.40    45.66     0.00    0.41    0.28    4.75   0.29   0.00

qps 每秒钟的查询次数

tps 每秒钟传输次数

rrqm/s   wrqm/s 每秒合并的读写请求数量

r/s     w/s 每秒完成的读写操作数

glances 全能查看各项指标

看机器内存 free -h

[root@k8s-master-1 kernel]# nc -z(端口扫描 只发送请求不发送给数据) -w(超时时间s) 1 120.24.223.108 443

Connection to 120.24.223.108 443 port [tcp/https] succeeded!

-p 指定监听端口

  1. 如何禁止别人访问我们的web服务或者数据库服务?
    1. iptables
  2. 如何禁止某个ip地址或者某个网段的ip访问服务器

如何抓包分析?

tcpdump

tcpdump -i ens33 -nn host 192.168.159.144 and port 22

tcpdump -i ens33 -nn src host 192.168.159.144 and dst port 22

tcpdump -i ens33 -nn src host 192.168.159.144 and \(dst port 22 or sst port 80 \) -vv

tcpdump -i ens33 tcp and dst port 22 and src net 192.168.159.0/24

tcpdump -i ens33  -p icmp -nn

-I interface指定抓包的接口

-n 以数字形式显示 不显示域名 number 不进行dns解析

-nn 不进行任何形式的名称解析

-vv显示更加详细信息

-F 清除规则 默认规则不会改

-v 显示匹配

-s 指定源ip  -d 指定目的ip

host <hostname_or_ip>: 捕获与指定主机名或IP地址相关的数据包。

net <network>: 捕获与指定网络相关的数据包。

port <portnum>: 捕获与指定端口相关的数据包。

src <hostname_or_ip>: 捕获源地址是指定主机名或IP地址的数据包。

dst <hostname_or_ip>: 捕获目的地址是指定主机名或IP地址的数据包。

-i 数据进入的接口 -o 数据出去的接口

ipvs有规则链chain(对数据包进行过滤处理): input,output,forward(处理转发数据包),postrouting(在进行路由选择后处理数据包),prerouting  不指定的话默认所有链

filter表的INPUT、OUTPUT、FORWARD链;

       nat表的PREROUTING、POSTROUTING链

如果转发数据(充当路由器),路径为prerouting->forword->postrouting

     规则表:raw表,mangle表,nat表(网络地址转换),filter表(数据过滤 默认) 表存放链,链放规则

哈希函数:任意个字符的输入经过哈希函数处理后得到固定长度长度字符串的输出

          输出的字符串称呼hash值(摘要值),ipvs采用了所以支持大规模,查找速度快

iptables  [-t 表名默认filter]  管理选项  [链名]  [条件匹配]  [-j 目标动作或跳转] -A INPUT

[root@localhost ~]# iptables -t filter -A(在末尾加apppend) INPUT -p(协议) tcp -j(jump跳转) ACCEPT (放行)DROP(丢弃数据包)REJECT(拒绝)LOG

[root@localhost ~]# iptables -I(insert在第一条插入) INPUT -p udp -j ACCEPT

[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT

[root@localhost ~]# iptables -P(policy指定规则链默认策略) INPUT DROP

iptables -L -n -v 看全部详细

-N 创建自定义链 -X 删除自定义链

[root@localhost ~]# iptables -L(list) INPUT --line-numbers(--line显示编号)-v

Chain INPUT (policy DROP)

num  target     prot opt source               destination

1    ACCEPT     udp  --  anywhere             anywhere

2    ACCEPT     icmp --  anywhere             anywhere

3    ACCEPT     tcp  --  anywhere             anywhere

 -F 清除filter表所有规则  

-i(在开始insert) INPUT  --dport --sport

[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP

[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

端口匹配

使用“--sport 源端口”、“--dport 目标端口”的形式

采用“端口1:端口2”的形式可以指定一个范围的端口

只允许访问本机80  443 22 3306端口 其他的禁止访问

[root@web-3 ~]# cat sc.sh

#!/bin/bas

/usr/sbin/iptables   -F -t filter

/usr/sbin/iptables  -A  INPUT  -p icmp  -j SANCHUANG

/usr/sbin/iptables  -A  INPUT  -p tcp  -j SANCHUANG

#在SANCHUANG自定义链里添加规则

/usr/sbin/iptables  -A  SANCHUANG  -p icmp  -j LOG

/usr/sbin/iptables  -A  SANCHUANG  -p icmp  -j DROP

/usr/sbin/iptables  -A  SANCHUANG  -p tcp  --dport 80  -j ACCEPT

/usr/sbin/iptables  -A  SANCHUANG  -p tcp  --dport 443  -j ACCEPT

/usr/sbin/iptables  -A  SANCHUANG  -p tcp  --dport 3306  -j ACCEPT

/usr/sbin/iptables  -A  SANCHUANG  -p tcp  --dport 22  -j ACCEPT

/usr/sbin/iptables  -A  SANCHUANG  -p tcp  --dport 6443  -j ACCEPT

/usr/sbin/iptables -P INPUT  DROP

 自定义链是如何使用的:docker和k8s的时候 背后都会自动取创建相关的自定义和规则

[root@web-1 ~]# iptables -A INPUT -p icmp -j SANCHUANG

[root@web-1 ~]# iptables -A INPUT -p tcp -j SANCHUANG

这篇关于网络故障排查和tcpdump抓包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Arthas问题排查工具

简介 Arthas 是Alibaba开源的Java诊断工具,动态跟踪Java代码;实时监控JVM状态,可以在不中断程序执行的情况下轻松完成JVM相关问题排查工作 。支持JDK 6+,支持Linux/Mac/Windows。这个工具真的很好用,而且入门超简单,十分推荐。 使用场景 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。  static void Main()         {             int killer = 0;             fo

linux运维排查常用命令(开发专享)

cd: 进入到某个目录下 cd hikvision ll:详细展示该目录下有的文件 ll su 用户名:切换用户名 例子: su root 根据字符串在文件中查找信息:Grep –a –i 字符串 文件名 例子: grep -a -i 'indexCode=4a28a0dfe0244c0cbabcd9b2c3b60327' nms.nmsweb.debug.log cat 文

一次关于生产环境服务无故宕机的排查过程

故事的开始 这个故事是在一年之前,当时我们的系统运行在客户的k8s环境上。然后很神奇的是每个月底我们都会服务宕机,当然我们开启了多个实例。当时的容器线条就像心跳图一样(或许有些描述的不太准确,我没有找到当时那个像心电图一样的容器资源监控图)。 第一次的排查 当时我们还是很有信心去解决这个问题的。由于每个月的月底都是业务使用的高峰时段,也就是说,从表象上来看,qps一高,容器就挂。 业务日

使用Charles对安卓手机进行抓包

写在前面的话 Charles 介绍 Charles 的主要功能 网络请求拦截与分析 Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体、状态码等,便于调试和分析网络通信问题。 SSL 抓包 Charles 支持 HTTPS 协议的抓包。通过安装

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 前言,在改一个bug得时候发现一个有意思得问题,就是mybatis得xml中if判断得问题,传值名字不匹配依旧可以进行判断,如下图 传值userName,但是有意思得事情出现了,进了if,并且没有报错,尝试了两次都是这

F12抓包05:Network接口测试(抓包篡改请求)

课程大纲         使用线上接口测试网站演示操作,浏览器F12检查工具如何进行简单的接口测试:抓包、复制请求、篡改数据、发送新请求。         测试地址:https://httpbin.org/forms/post ① 抓包:鼠标右键打开“检查”工具(F12),tab导航选择“网络”(Network),输入前3项点击提交,可看到录制的请求和返回数据。

日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查

一、异常堆栈无traceId 排查定位问题异常痛苦        在日常项目开发中,我们会自定义一个traceId方便,链路追踪。在log4j2.xml 我们可能是这样去配置日志打印格式。 <Console name="CONSOLE" target="SYSTEM_OUT"><PatternLayoutpattern="${APP_NAME} %-d{yyyy-MM-dd HH:mm:ss}

Linux - Tcpdump命令

一、说明    是一个用于抓取网络数据包并输出的工具,命令格式如下: tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ][ -C file_size ] [ -F expr_file ][ -i interface ] [ -m module ] [ -M secret ][ -r read_file ] [ -s snaplen