84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
面试碰到的问题,如何知道你的服务器在一段时间内和哪些IP进行过连接,连接是包括tcp、udp之类的通信? linxu应该不会记录传输层的连接日志信息吧?
走同样的路,发现不同的人生
首先承认开始回答这个问题的时候,都没搞清楚问题所在,查日志确实是一个不负责任的回答,这里更新一下自己对这个问题的理解
我的建议也是使用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
man netstat
iptables 也可以记录日志的,不过看上去不太好过滤的样子。
nf_conntrack 会记录最近一段时间内的连接:
$sudo cat /proc/net/nf_conntrack
不过它超时时间的设置,具体可以看 sysctl.conf
$sudo sysctl -a | grep 'nf_conntrack_.*_timeout'
首先承认开始回答这个问题的时候,都没搞清楚问题所在,查日志确实是一个不负责任的回答,这里更新一下自己对这个问题的理解
我的建议也是使用netstat命令,man一下netstat可以看到这个命令的作用:“netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships”
查看服务器和哪些IP进行过连接:
1. 就TCP通信来说,我假定这里你问得是查询通过三次握手的连接,那可以用这个命令查看ip:
这样可以查找已经建立的tcp通信的,并且已经按链接的次数从大到小排序了
2. 如果是查看UDP通信,就无需考虑TCP通信的状态,直接查询即可:
man netstat
iptables 也可以记录日志的,不过看上去不太好过滤的样子。
nf_conntrack 会记录最近一段时间内的连接:
不过它超时时间的设置,具体可以看 sysctl.conf