如何计算 Linux 机器(特别是 centOS)中到某个域的传出 TCP(也可能是 UDP)连接数。
答案1
最简单的方式是使用 iptables
例如,下面的规则将记录到 /var/log/messages(实际上,它取决于将消息记录到的 rsyslog.conf 或 syslog.conf)所有访问 192.168.0.1
-A OUTPUT -d 192.168.0.1 -j LOG --log-level 1 --log-prefix local_access
/var/log/messages 中的内容如下
Oct 30 06:37:39 ip-10-230-3-20 kernel: local_accessIN= OUT=eth0 SRC=10.230.3.20 DST=192.168.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=62738 SEQ=8
如果你还需要一些额外的信息,例如启动此连接的进程 ID,则需要通过以下任一方式完成
- 如果您使用的是 Oracle EL,则使用 dtrace
- 如果你使用的是其他 Linux 发行版
- auditd - 这里有一个非常好的现有线程https://unix.stackexchange.com/questions/102926/how-to-interpret-the-saddr-field-of-an-audit-log
答案2
如果每个域都有单独的用户,则可以设置 iptables 来记录传出连接并在之后解析日志。