zoukankan      html  css  js  c++  java
  • Linux服务器大量向外发包问题排查

     

    最近Linux redhat 6.5 APP 业务系统,向外大量发送流量,不断建立tcp连接,目标地址是美国的一个IP,估计被当成肉鸡了,比较悲惨,直接飞向IDC机房,防火墙显示这个APP服务器tcp连接很多每秒10W个,

    从服务器上使用命令sar -n DEV 2 10 ,确实出现大量发包的问题,(下边是正常的,异常的情况eth0txpck/s 10000左右了)


    先进行限速或者拔掉网线:
    开始之前,先要清除 eth0所有队列规则
    tc qdisc del dev eth0 root 2> /dev/null > /dev/null

    1) 定义最顶层(根)队列规则,并指定 default 类别编号
    tc qdisc add dev eth0 root handle 1: htb default 20
    tc class add dev eth0 parent 1: classid 1:20 htb rate 2000kbit

    (1KB/s = 8KBit/s)

    TC命令格式:
    tc qdisc [ add | change | replace | link ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] qdisc [ qdisc specific parameters ]
    tc class [ add | change | replace ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]
    tc filter [ add | change | replace ] dev DEV [ parent qdisc-id | root ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id

    显示
    tc [-s | -d ] qdisc show [ dev DEV ]
    tc [-s | -d ] class show dev DEV tc filter show dev DEV

    查看TC的状态
    tc -s -d qdisc show dev eth0
    tc -s -d class show dev eth0

    删除tc规则

    tc qdisc del dev eth0 root

    查看状态:
    top
    CPU和MEM都正常,看不出异常的进程。

    yum install -y tcpdump
    tcpdump -nn
    找到大量的IP地址

    本机(192.168.35.145)和主机114.114.110.110之间的数据
    tcpdump -n -i eth0 host 192.168.35.145 and 114.114.110.110
    还有截取全部进入服务器的数据可以使用以下的格式
    tcpdump -n -i eth0 dst 192.168.35.145

    或者服务器有多个IP 可以使用参数
    tcpdump -n -i eth0 dst 192.168.35.145  or  192.168.35.155

    我们抓取全部进入服务器的TCP数据包使用以下的格式,大家可以参考下
    tcpdump -n -i eth0 dst 192.168.35.145 or 192.168.35.155 and tcp

    从本机出去的数据包
    tcpdump -n -i eth0 src 192.168.35.145 or 192.168.35.155
    tcpdump -n -i eth0 src 192.168.35.145 or 192.168.35.155 and port ! 22 and tcp
    或者可以条件可以是or  和 and  配合使用即可筛选出更好的结果。

    可以将异常IP加入到/etc/hosts.deny中,或者防火墙设置下

    之后安装个NetHogs
    Install Howto:
        Download the latest epel-release rpm from (一个是32位、一个是64位连接)
        http://dl.fedoraproject.org/pub/epel/6/i386/
        http://dl.fedoraproject.org/pub/epel/6/x86_64/

        Install epel-release rpm:
        # rpm -Uvh epel-release*rpm(记得yum clean all和yum makecache下)

        Install nethogs rpm package:
        # yum install nethogs

    执行nethogs
    nethogs
    或者
    nethogs eth0
    如果网卡绑定过nethogs bond0

    -------------------------
    rpm -Uvh epel-release-6-8.noarch64.rpm
    yum clean all
    yum makecache
    yum install nethogs
    nethogs
    --------------------------



    下图显示各进程当前网络使用情况:


    按“m”键可以切换到统计视图,显示各进程总的网络使用情况


    按“Ctrl+C”或“q”退出监控

    使用帮助:
        [root@localhost ~]# nethogs --help  
        nethogs: invalid option -- '-'  
        usage: nethogs [-V] [-b] [-d seconds] [-t] [-p] [device [device [device ...]]]  
                -V : 显示版本信息,注意是大写字母V.  
                -d : 延迟更新刷新速率,以秒为单位。默认值为 1.  
                -t : 跟踪模式.  
                -b : bug 狩猎模式 — — 意味着跟踪模式.  
                -p : 混合模式(不推荐).  
                设备 : 要监视的设备名称. 默认为 eth0  
          
        当 nethogs 运行时, 按:  
         q: 退出  
         m: 总数和当前使用情况模式之间切换 

    找到大量发包的进程,之后kill掉,在排查下这个进程是什么程序,文件路径在哪里,删除掉异常的文件。

    目前问题解决了,观察一段时间,看看问题是否还会发生,防火墙将公网IP进行了访问限制,只允许办公地点访问,增加安全。
  • 相关阅读:
    构建之法阅读笔记02
    学习进度条
    构建之法阅读笔记01
    c++ 与C的区别
    c++ 菜单动态效果
    c++ 方框中绘制菜单代码
    c++ 绘制方框
    c++ 条件编译
    c++ 预处理和多重替换
    c++ 文件共享打开
  • 原文地址:https://www.cnblogs.com/howhy/p/6792776.html
Copyright © 2011-2022 走看看