背景:目前很多视频监控都分布在各地,相互之间无法通过内网进行互联,但现实工作中,需要在监控室等场所进行远程统一监控管理。同时,由于历史原因,存在各种品牌的监控摄像头,以及各种运营商网络,并且网络几乎没有公网IP。

实现条件:1、摄像头所在网络必须连通公网;2、摄像头端安装相关远程联网设备;3、监控组网服务端必须具备公网IP,或者具备公网IP中转通道;

部署流程:

1、在x86设备上,建立监控室的frps连接。该步骤是为了保证监控视频通过公网加密传输至监控室内网,并且仅限于监控室内网播放,防止安全问题。frps配置如下:

[common]
bind_port = 2000
dashboard_port = 2001
token = 123456
dashboard_user = test
dashboard_pwd = 123456
log_level = info
log_file=/frp/frps.log

2、(可选)如果监控室有固定公网IP,则不需要进行该步骤。如果监控室没有固定公网IP,则使用x86上的frpc将本地的frps的相关端口暴露到公网上,以保证相关端口可以被摄像头端相关设备访问;

[common]
server_addr = 1.1.1.1
server_port = 7000
token = 123456

[jkfrps]
type = tcp
local_ip = 127.0.0.1
local_port = 2000
remote_port = 2000
use_compression = true
use_encryption = true

3、将需要的监控端口暴露至监控室内网端口。本次以海康威视的服务端口8000为例:

[common]
server_addr = 1.1.1.1
server_port = 2000
token = 123456

[cssp1]
type = tcp
local_ip = 192.168.1.2
local_port = 8000
remote_port = 55001
use_compression = true
use_encryption = true

4、在监控程序上,将相关IP及端口加入监控。

进阶操作:

1、如果监控室也没有固定公网IP,需要其他地方进行中转的情况下,为了最大程序利用带宽,可以尝试使用frp的xtcp模式进行直连处理,中转端frps仅用于验证,并不中转流量。该原理下,需要在监控室与摄像头端设备上均启动相关frpc进程;

//frps启动一个UDP监听端口
[common]
bind_port = 7000
bind_udp_port = 7000
//摄像头端启动对应的frpc
[common]
server_addr = 1.1.1.1
server_port = 7000

[scssp1-p2p]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
local_ip = 192.168.1.2
local_port = 8000
//监控室端启动对应的frpc
[common]
server_addr = 1.1.1.1
server_port = 7000

[cssp1_sp2p_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = p2p_ssh
sk = 123456
# 绑定内网口用于访问视频服务
bind_addr = 172.100.100.2
bind_port = 45001

2、如果xtcp无法起作用,为了保证安全,建议使用stcp模式进行对接,这样保证只有本地的监控集中展示系统可以访问。

//摄像头端启动对应的frpc
[common]
server_addr = 1.1.1.1
server_port = 7000

[scssp1-stcp]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
local_ip = 192.168.1.2
local_port = 8000
//监控室端启动对应的frpc
[common]
server_addr = 1.1.1.1
server_port = 7000

[scssp1-stcp_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = scssp1-stcp
sk = 123456
# 绑定内网口用于访问视频服务
bind_addr = 172.100.100.2
bind_port = 45001