You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询可列出指定时段活跃网络端口与协议的Linux服务器工具

查询可列出指定时段活跃网络端口与协议的Linux服务器工具

当然有啦!要找出过去一段时间(比如上周)曾活跃过的端口和协议,下面这些工具和实用方法应该能帮到你:

1. 用tcpdump抓包 + tshark分析(适合回溯历史流量)

如果之前已经用tcpdump长期保存了网络流量包,那tshark可以帮你快速统计出活跃的端口和协议:

  • 先确保你有历史抓包文件(比如按天保存的pcap文件),如果还没配置,现在可以后台启动长期抓包,每周自动轮转:
    nohup tcpdump -w /var/log/traffic_%Y%m%d.pcap -G 86400 -W 7 &
    
    这个命令会每天生成一个抓包文件,最多保存7天的记录。
  • 分析历史抓包文件,提取所有活跃的协议和端口:
    tshark -r /var/log/traffic_2024*.pcap -T fields -e ip.proto -e tcp.dstport -e udp.dstport | \
    awk '{if($1=="6") print "TCP/"$2; else if($1=="17") print "UDP/"$3;}' | \
    grep -v "/" | sort | uniq
    
    这里ip.proto里6代表TCP,17代表UDP,最终会输出类似TCP/80、UDP/5678的结果。

2. 利用iptables连接日志(适合记录新连接)

如果之前配置了iptables记录新的网络连接,那可以直接从系统日志里提取数据:

  • 先配置iptables规则(需要root权限),记录所有新入站/出站连接:
    iptables -A INPUT -m state --state NEW -j LOG --log-prefix "NEW_IN_CONN: "
    iptables -A OUTPUT -m state --state NEW -j LOG --log-prefix "NEW_OUT_CONN: "
    
    日志会默认写入/var/log/syslog或/var/log/messages。
  • 从上周的日志文件里提取活跃端口和协议:
    grep -E "NEW_IN_CONN:|NEW_OUT_CONN:" /var/log/syslog.1 /var/log/syslog | \
    awk '{
      for(i=1;i<=NF;i++){
        if($i ~ /PROTO=/) {proto=$i; sub(/PROTO=/,"",proto)}
        if($i ~ /DPT=/) {port=$i; sub(/DPT=/,"",port)}
      }
      if(proto ~ /(TCP|UDP)/ && port != "") print proto"/"port
    }' | sort | uniq
    

3. 定时记录ss输出(适合监听端口+活跃连接)

ss是netstat的现代替代工具,我们可以用定时任务每天记录一次当前的活跃端口和连接:

  • 添加cron定时任务(执行crontab -e编辑):
    0 0 * * * ss -tua > /var/log/active_ports_$(date +%Y%m%d).log
    
    这个任务会每天凌晨0点记录一次所有TCP/UDP的活跃连接和监听端口。
  • 合并上周的记录并提取结果:
    cat /var/log/active_ports_2024*.log | \
    grep -E "^tcp|^udp" | \
    awk '{split($5, addr, ":"); print $1"/"addr[2]}' | \
    sort | uniq
    

注意:如果你之前没有提前配置抓包、日志或定时任务,是没法回溯上周的历史数据的,所以建议现在就把监控手段搭起来,方便以后查询!

备注:内容来源于stack exchange,提问作者Numid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:59:35