一、背景与目标
公司部署了海康威视摄像头(型号DS-2CD2225XM-LGLSET),通过 4G 路由器(NAT4网络)以ISUP协议(原EHOME)接入自建平台。由于网络安全需要,防火墙需配置白名单策略,仅允许摄像头访问必要的目标IP和端口。
核心目标:精确抓取摄像头主动发起连接的所有目标IP和域名,为防火墙白名单配置提供依据。
二、环境信息
三、ISUP 协议端口说明
ISUP协议涉及以下端口,便于理解抓包结果:
该款摄像头是复用 7660 端口:信令+视频流都走 7660(ISUP 原生方案),没有上述的 8000-8002。
四、抓包操作
4.1 安装 tcpdump(如未安装)
# CentOS
yum install -y tcpdump
# Ubuntu
apt install -y tcpdump4.2 启动抓包
# 一、进入工作目录
mkdir /root/capture/
cd /root/capture/
# 二、后台抓包,持续运行
# 方式一:抓取为一个单文件
sudo nohup tcpdump -i any -nn -s 0 -w camera_$(date +%Y%m%d).pcap \
'host 192.168.0.100' > /dev/null 2>&1 &
# 方式二:按时间切分,多个文件(推荐)
sudo nohup tcpdump -i any -nn -w camera_%Y%m%d_%H%M.pcap -G 1800 -W 6 \
'src host 192.168.0.100' > /dev/null 2>&1 &
# 在 OpenWrt 上 nohup 有问题
# 建议前台跑
# 或者: 前台跑 → Ctrl+Z → bg → disown → exit
# 三、确认抓包进程运行中
ps aux | grep tcpdumphost 192.168.0.100等价于src host 192.168.0.100 or dst host 192.168.0.100-G 参数按时间切分,配合 -W 限制总文件数
-s 0:抓取完整数据包,但不打印;不加 -s:默认只抓取每个数据包的前 96 字节(够提取 IP/端口/协议头)。
-s 0 + -w file.pcap:抓完整包,存文件,屏幕不打印内容(只显示抓包统计)
-s 0 + -A:抓完整包,并以 ASCII 格式打印到屏幕
-s 0 + -X:抓完整包,并以十六进制+ASCII 格式打印到屏幕
如果想看中文内容,推荐用 Wireshark 打开 .pcap 文件。Wireshark 还会自动把所有相关包按顺序拼成完整的请求/响应内容
4.3 停止抓包
tcpdump 不会自动退出。可通过 kill 手动终止或者 tcpdump 前加 timeout 600 。
kill -9 [PID]五、提取目标IP与域名
5.1 打印前 20 条数据
tcpdump -r camera_20260729.pcap -nn | head -205.2 提取所有目标IP:端口(去重)
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | \
grep -E "IP.*>.*:" | awk '{print $5}' | sort -u5.3 提取所有DNS查询域名
没有 DNS 查询输出 = 摄像头没用域名,直接用 IP 连平台。
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | \
grep "A?" | grep -oP "A\? \K[^ ]+" | sort -u
# OpenWrt 22.03(不支持 grep -P)
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | \
grep " A?" | grep -o "A? [^ ]*" | awk '{print $2}' | sort -u5.4 提取NTP时间同步服务器
很可能抓不到数据,NTP 校时请求一般发生在:
NTP 配置调整
开机
校时间隔(10分钟~几天)
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | \
grep "\.123 >" | awk '{print $3}' | cut -d: -f1 | sort -u5.5 一键生成白名单清单
echo "=== 目标IP:端口 ===" > whitelist.txt
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | grep -E "IP.*>.*:" | awk '{print $5}' | sort -u >> whitelist.txt
echo "" >> whitelist.txt
echo "=== DNS查询域名 ===" >> whitelist.txt
tcpdump -r camera_20260729.pcap -nn 2>/dev/null | grep " A?" | grep -o "A? [^ ]*" | awk '{print $2}' | sort -u >> whitelist.txt
cat whitelist.txt六、输出示例
=== 目标IP:端口 ===
192.168.1.100.7660
192.168.1.1.53
114.114.114.114.53
223.5.5.5.53
ntp.aliyun.com.123
10.0.0.50.8000
=== DNS查询域名 ===
isup.example.com
ntp.aliyun.com七、防火墙白名单配置
将提取的IP和域名整理为以下格式提交防火墙团队:
八、注意事项
1、常规场景抓取 20~30 分钟即可(覆盖设备重启注册、心跳保活及手动触发预览产生的视频流)。如果怀疑有定时外联任务,可针对性抓取 1~2 小时核查。
2、如摄像头使用域名配置平台地址,需同时放行DNS(UDP 53)和域名对应的解析IP。
3、同一域名可能对应多个IP,需全部纳入白名单。
4、建议在不同时段多次抓包(早/中/晚),汇总去重。
5、NTP端口(UDP 123)建议放行,避免设备时间错误导致认证失败。