海康IP摄像头绕过白名单访问web(记录一次网络故障排查)
海康IP摄像头绕过白名单访问web(记录一次网络故障排查)
公网IP的网络摄像头一旦开启https且默认端口为443,就会因为运营商封禁公网443端口导致远程无法访问web。想要在不破坏原本配置的情况下修改配置,可以到现场通过本地网络连接来越过公网端口限制。但这个时候发现设备配置了ACL,本地连接的IP不在白名单里。恭喜你,把钥匙关在家里了。
SADP的局限性
SADP是海康的局域网设备发现协议,它通过UDP广播的方式发现设备,只要网络是“通”的,就能发现设备。但这个前提是需要在本地网络中,即设备和你通过本地网络相连。实际上海康出于安全考虑,很多敏感配置是不允许通过公网操作的。
先尝试通过直连打通
假设摄像头的网络如下:
- 固定 IP 地址:111.1.111.189
- 子网掩码:255.255.255.192(即 /26)
- 网关:111.1.111.129(对于直连来说不重要)
通常给电脑配置一个同网段下的其他IP就可以实现直连了,即112.4.130.129 ~ 112.4.130.190,避开网关 129 和摄像头 189。例如:
- IP 地址:112.4.130.190
- 子网掩码:255.255.255.192
- 默认网关:112.4.130.129(无所谓)
此时尝试ping,通基本上就没什么问题了,这也是一般情况直连的处理方式。
但在本例中失败了,于是进一步排查连通性。
尝试添加静态路由和调整优先级
route print
# 在接口列表中寻找你接入网线的接口,记下前面的数字,如本地连接就是14
接口列表
============
12...aa bb cc dd ee ff ....... 无线网络连接
14...00 11 22 33 44 55 ...... 本地连接
# 如果原本有路由,例如:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.100 35
111.1.111.128 255.255.255.192 在链路上 111.1.111.190 29
#可以先删除所有目标为 112.4.130.128 且掩码为 255.255.255.192 的路由(通常会自动匹配掩码)
route delete 111.1.111.128
# 再添加你要的
route add 111.1.111.128 mask 255.255.255.192 0.0.0.0 if 14 metric 1
- 111.1.111.128:目标网络
- mask 255.255.255.192:子网掩码
- 0.0.0.0:不需要网关(直连网络)
- if 14:从接口 14(你的有线网卡)发出
- metric 1:优先级高
此时Windows会自动添加两条路由:
网络目标 网络掩码 网关 接口 跃点数
# 此范围内的IP(共 62 个可用主机)都会通过这个接口发送
111.1.111.128 255.255.255.192 在链路上 111.1.111.190 29
# 把发往本机这个 IP 的数据包正确地路由到本机网络栈
111.1.111.190 255.255.255.255 在链路上 111.1.111.190 29
检查arp
# 删除arp缓存
arp -d *
# 重新尝试触发通信
ping 111.1.111.189
#查看arp表
arp -a | findstr 112.4.130
发现出现了表项,说明底端通信大概率没有问题。使用SADP工具能够发现设备但修改配置会报错。后来请教了别人才知道白名单在本地网络环境下也一样生效,只是设备一直在拒绝访问。
问题分析
现在的问题就是如何绕过白名单限制直接访问web了。解决的思路其实都类似,就是让本机伪装成白名单里的IP(前提是至少知道一个白名单IP)。海康技术支持给的方案是使用路由器进行映射。这里分享跟兄弟单位的同事学到一个思路。
首先将本机设置成白名单IP。因为SADP不依赖路由,所以即便IP不在一个网段也可以发现设备。通过SADP临时修改设备的IP为本机IP+1,此时就可以正常访问web了。之后的操作就很简单了。进入web配置,然后再把IP改回去。
总结
这个坑其实没那么大,但是需要一些经验,没接触过可能会被卡很久。一方面是443端口被封已经是老生常谈的问题了,这个自有国情在,而且确实相对容易被针对。另一方面设备商也应该认识到这个问题,对于出厂预设的端口做一些修改(好像一些比较新的设备已经这么做了),以及允许本地网络下对特定网关开放运维权限。