基于Wireshark实现Ubuntu服务器极简连接监控的需求问询
基于Wireshark实现Ubuntu服务器极简连接监控的需求问询
Hey,我太懂你这种想要“日志越无聊越安心”的心态了——就想确认自己Ubuntu服务器上的连接全是来自你那几个常用地点,没什么乱七八糟的陌生IP对吧?给你几个零门槛的轻量方案,完全满足你的极简日志需求:
方案1:用tcpdump快速生成极简连接日志(无需额外安装)
tcpdump是Ubuntu系统默认自带的抓包工具,直接就能抓取连接建立的关键包,只保留最核心的IP和时间戳信息:
sudo tcpdump -i any -n -t 'tcp[tcpflags] & tcp-syn != 0' >> ~/server_conn_log.txt
参数小说明:
-i any:监听服务器所有网络接口,不会漏过任何连接请求-n:不解析域名,直接显示原始IP,让日志更简洁-t:只保留精准时间戳,去掉冗余的格式信息tcp[tcpflags] & tcp-syn != 0:只抓连接建立的初始SYN包,避免重复记录已维持的连接,让日志更轻量化
之后直接打开~/server_conn_log.txt,就能看到每条连接的时间戳和来源IP,一眼就能判断有没有陌生IP混入。如果只需要监控特定服务(比如SSH的22端口),可以在命令末尾加and dst port 22来精准过滤。
方案2:用iptables配置系统级持久日志(可精准过滤已知IP)
如果想要系统自动帮你记录,还能只追踪你已知的IP连接,可以用iptables来配置:
- 先添加规则,给你的常用IP连接打上专属日志标记(比如你的常用IP是
192.168.1.100和203.0.113.45):
sudo iptables -A INPUT -s 192.168.1.100 -j LOG --log-prefix "MY_SAFE_CONN: " --log-level info sudo iptables -A INPUT -s 203.0.113.45 -j LOG --log-prefix "MY_SAFE_CONN: " --log-level info
- 查看专属日志的话,直接用关键词过滤系统日志即可:
sudo grep "MY_SAFE_CONN" /var/log/syslog
这样日志里只会显示你那几个已知IP的连接记录,要是有陌生IP尝试连接,也会在/var/log/syslog里留下痕迹,随时能排查。
方案3:自定义脚本生成规整格式日志(定时自动记录)
如果你想要更统一的日志格式,比如每行都是[YYYY-MM-DD HH:MM:SS] 来源IP,可以写个超简单的bash脚本,再配合cron定时自动记录:
- 创建脚本文件
~/conn_logger.sh:
#!/bin/bash # 记录当前已建立连接的唯一来源IP,格式规整统一 current_time=$(date '+%Y-%m-%d %H:%M:%S') # 提取已建立连接的来源IP并去重 conn_ips=$(netstat -ntu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq) # 将时间戳和IP逐一写入日志 for ip in $conn_ips; do echo "[$current_time] $ip" >> ~/simple_conn_log.txt done
- 给脚本添加执行权限:
chmod +x ~/conn_logger.sh
- 配置
cron定时任务(比如每分钟自动记录一次):
执行crontab -e,在文件末尾添加:
* * * * * ~/conn_logger.sh
之后打开~/simple_conn_log.txt就能看到格式统一的连接记录,扫一眼就能确认是不是只有你那几个已知IP,完全符合你想要的“无聊又放心”的状态!
备注:内容来源于stack exchange,提问作者Bradshaw Lupton
相关产品推荐
相关产品推荐

