当我运行netstat命令时,从我自己的服务器ip有多个连接是正常的吗?

我想知道是否是正常的,当我运行时,从我自己的服务器IP有很多连接:

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head 

命令的解释可以在这里find: http : //www.mkyong.com/linux/list-all-ip-addresses-connected-to-your-server/ (我发布的链接,我发现后命令谷歌search一下之前我在这里问过,这个博客上有很多关于这个命令的解释,但是不知何故,我缺乏经验,需要更多关于这个问题的信息,请向我提供帮助和耐心。

我懂了:

 223 MY OWN SERVER IP 6 36.83.145.0 6 141.0.11.183 6 118.96.107.46 5 114.121.128.224 4 139.194.112.178 4 125.162.210.152 3 114.121.130.92 2 82.145.211.30 1 95.128.246.45 

我感谢你的时间来看看和回应。 如果你不想帮助我的话,请不要理睬这个问题,那对我来说比对自己的假设给予无益的评论更有意义,因为这会导致“思维build构”,而其他人可能会认为我根本听不懂,或者没有search到。 非常感谢您的好意!

正如Tero Kilkanen在其评论中所述:“ …完全取决于您在服务器上运行的应用程序… ”。

根据你的问题,我认为要想得到你的系统的整体数据,以确定你的223连接是否“正常” 并不容易。

为了帮助你做出决定,你需要明确地理解这个223(我的意思是这个数字,是你根据你的整个问题的数量)所说的。

你所执行的(…和你的问题中的粘贴)是8条命令的链,其中第n条命令的输出作为第n + 1条的input,唯一的例外是第一个(从无处获得input)和最后一个(其输出显示给你)。

让我们逐个检查这些命令:

  • netstat -tn 2> / dev / null :这将获取当前在系统中注册的TCP连接。 请注意:
    • 无论状态如何, 每个 TCP连接都将被匹配。 这意味着输出将包含ESTABLISHED连接(因此,实际的活动连接)以及TIME_WAIT连接。 换句话说:不仅是真实的,build立的,连接将被显示。 详细讨论这个问题远远超出了这个答案的范围。 在请求细节之前,请尽量logging下自己的情况;
  • grep:80 :这将parsing来自前一个输出的每一行,并仅过滤包含文本“:80”的行。 通常这意味着select与HTTP有关的连接 。 请注意:

    • 有了这样的“grep”, 就不会对 TCP 端口或目的端口做任何区分 。 这意味着过滤的行将与传入的 TCP / 80连接(通常由本地Web服务器pipe理的连接)和外出的 TCP / 80连接(系统是HTTP客户端的连接)相关 ,例如升级某些软件包/ OS或访问一些在线服务,RSS源等);
  • awk'{print $ 5}' :根据上面过滤的行,这将select第五列。 这个列包含DESTINATION IP地址以及DESTINATION TCP端口,forms如1.2.3.4:5678。 请注意,根据以上所述,目标TCP端口不一定是80;

  • cut -d:-f1 :这将拆分上面的几个(:)并提取第一部分(IP地址);

  • sorting :这将得到上述命令的输出,并产生一个字典顺序输出;

  • uniq -c :这将对进入的行(被sorting)进行分组并计数每个组的出现次数,并将这个数字(计数)加到每个组的值上;

  • sort -nr :这将根据应该在每行的开头的数字对数值进行数字sorting。 顺序也颠倒了(从最高到最低)。

  • :这将显示(在输出)只有前10行的input。

综上所述,应该清楚的是:“当你启动上面的命令时,在你的TCP /堆栈中,有223个套接字,处于不同的状态,包括ESTABLISHED状态,指的是有源端口80或目的地港口80“。

无论这是否正常……“ ……完全取决于您在服务器上运行的应用程序…… ”。

作为最后的说明:

  • 请注意,鉴于当前AJAX /asynchronousHTTP请求的趋势,对于单个网页来说,打开并保持打开几个并发的TCP /连接到同一目标IP是完全常见的;

  • 单个传出(或传入) DOS攻击可以产生非常多的IP(包括TCP或UDP)套接字。


PS:在你的评论中你写道:“ 让我知道,如果我在错误的地方问这个答案,那么罚款,我很抱歉 ”。 我真的觉得这个地方是对的。 但是,我认为你正在掌握TCP / IP协议栈以及一般的networking和系统pipe理,所以我可能在浪费时间写下这个答案:-)

希望你会喜欢这个(…并开始花更多的时间研究,而不是在ServerFault上询问这类问题)

通过2年,但我认为这个cmd可能更像这样:

 netstat -polenta | awk '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -nr | head 

因为它更容易理解,所以我只添加了另一个删除分隔符“:”后的所有部分的awk。 在这种方式下,使用1(cut -d:-f1和grep:80变为awk -F“:”'{print $ 1}')删除2厘米。

最后结果是一样的,我知道,但是我认为你至less要在terminal上写下一厘的logging。