Heim  >  Fragen und Antworten  >  Hauptteil

linux - 如何知道一段时间内服务器和哪些IP进行过连接?

面试碰到的问题,如何知道你的服务器在一段时间内和哪些IP进行过连接,连接是包括tcp、udp之类的通信? linxu应该不会记录传输层的连接日志信息吧?

怪我咯怪我咯2742 Tage vor747

Antworte allen(4)Ich werde antworten

  • 怪我咯

    怪我咯2017-04-17 11:29:12

    首先承认开始回答这个问题的时候,都没搞清楚问题所在,查日志确实是一个不负责任的回答,这里更新一下自己对这个问题的理解

    我的建议也是使用netstat命令,man一下netstat可以看到这个命令的作用:“netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships”

    查看服务器和哪些IP进行过连接
    1. 就TCP通信来说,我假定这里你问得是查询通过三次握手的连接,那可以用这个命令查看ip:

    netstat -ant | grep 'ESTABLISHED' | awk -F " " '{print $5}' | awk -F ":" '{print $1}' | sort -n | uniq -c| sort -t " " -k 1 -nr
    

    这样可以查找已经建立的tcp通信的,并且已经按链接的次数从大到小排序了
    2. 如果是查看UDP通信,就无需考虑TCP通信的状态,直接查询即可:

    netstat -anu | awk -F " " '{print $5}' | awk -F ":" '{print $1}' | sort -n | uniq -c | sort -t " " -k 1 -nr
    
    1. 查看SYN攻击,将tcp的状态查找从ESTABLISHED替换成SYN即可

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-17 11:29:12

    man netstat

    Antwort
    0
  • PHPz

    PHPz2017-04-17 11:29:12

    iptables 也可以记录日志的,不过看上去不太好过滤的样子。

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-17 11:29:12

    nf_conntrack 会记录最近一段时间内的连接:

    $sudo cat /proc/net/nf_conntrack
    

    不过它超时时间的设置,具体可以看 sysctl.conf

    $sudo sysctl -a | grep 'nf_conntrack_.*_timeout'
    

    Antwort
    0
  • StornierenAntwort