66解决通过南瑞加密网关传输文件和推送视频的失败的问题

南瑞加密网关是南瑞出的一款产品。介绍如下:

安全接入网关(低端型)是变电站电力信息网络和第三方网络边界的核心防护功能组件。

产品主要实现对终端和业务系统的物理隔离,防止非法链接穿透内网进行访问,同时在确保

安全前提下,实现终端和业务系统的安全、正确的数据交换。

这实际使用中,碰到两个问题,一个是文件无法上送到服务器,另外一个是视频流无法推送到服务器。现在一个个分析解决办法。

一、文件无法上送到服务器

现象是这样的,双方通过FTPS进行文件传输,客户端可以连上服务端的ftps的端口,且ftps认证已经成功,但传文件会失败。

解决过程:

首先将南瑞加密网关去掉,直接连接,是可以通讯的,说明双方都没有问题。

加上加密网关后,可以连上服务器,但文件数据无法传送。

经过查找资料,知道了ftp文件传输实际上是要用两条TCP/IP链路的。一条是命令通道,一条是数据通道。命令通道是服务器在一个端口进行监听,在被动模式下,数据通道是服务器在另外一个端口进行监听。命令通道的监听端口是固定的,而数据通道的监听端口是随机的。而这个随机端口是服务端通过命令通道会通知到客户端。

知道这些后,我们就把这些随机端口在南瑞网关上进行配置开通(它可以配置一个端口范围的)。这个端口范围这服务端的ftp的配置文件里面可以看到。对于vsftp,在文件vsftpd.conf中,如下:

pasv_min_port=50000

pasv_max_port=51000

只要和南瑞网关中配置成一致就可以了。

做了如上操作后,我们又发现了新的问题,对于某些客户端,确实问题解决了,可以正确上传文件。某些客户端却还是无法上传文件。

继续研究,我们再看一下ftp这个对于数据通道建立的协商过程:

客户端发送: PASV 命令

服务器响应: 227 Entering Passive Mode (203,0,113,10,195,78)

(IP: 203.0.113.10, 端口: 195*256+78 = 50014)

我们注意到,服务不仅提供了数据通道端口50014,还提供了一个IP地址203.0.113.10,意思就是让客户端连接203.0.113.10:50014来建立数据通道。

问题找到了,就是我们需要服务端发送的响应命令中的这个IP要配置为南瑞加密网关上配置的IP,而不是发送服务器自己本身的IP。

修改vsftpd.conf中的

pasv_address=203.0.113.10

这也解释了为何某些客户端可以传文件某些客户端不能传文件。

就是严格按照协商过程的客户端会因为服务端给的IP不对而无法连接到服务端的数据通道端口。而不是严格按照协商过程的客户端,只是用协商端口+连接服务端命令通道时的IP,因此这服务端这个被动IP地址配置错误的情况下也可以成功传文件。

二、视频流无法推送到服务器

视频是主站端和摄像头之间通过GB28281协议进行交互。同样的问题,在加上南瑞加密网关后就无法进行推送视频,但云台命令是可以的。去掉南瑞加密网关后一切正常。

这确认了南瑞加密网关配置正确的情况下,研究了推流过程,确认了问题所在。

这双方进行协商时,主站端发送的sdp中告知的摄像头需要推流的地址和端口号,如下图:

这个IP地址一定要是南瑞加密网关和摄像头进行通讯的IP地址,而不能是主站自己的地址。

这个需要主站这要求摄像头推流时具备指定摄像头往不同的IP地址推流的能力。

只要解决了这个IP地址的问题。这南瑞加密网关下进行推流的问题就迎刃而解了。

相关推荐
老四啊laosi8 小时前
[C++进阶] 24. 哈希表封装unordered_map && unordered_set
c++·哈希表·封装·unordered_map·unordered_set
妙为8 小时前
银河麒麟V4下编译Qt5.12.12源码
c++·qt·国产化·osg3.6.5·osgearth3.2·银河麒麟v4
Flamingˢ11 小时前
ZYNQ + OV5640 视频系统开发(四):HDMI 显示链路
嵌入式硬件·fpga开发·硬件架构·音视频
史迪仔011212 小时前
[QML] QML IMage图像处理
开发语言·前端·javascript·c++·qt
潜创微科技--高清音视频芯片方案开发12 小时前
2026年HUB方案商选型指南:主流厂商核心优势与不同应用场景适配方案深度分析
音视频·硬件工程
月诸清酒12 小时前
26-260410 AI 科技日报 (阿里开源视频模型HappyHorse登顶,马斯克疑似泄露Claude参数)
人工智能·开源·音视频
会编程的土豆13 小时前
【数据结构与算法】再次全面了解LCS底层
开发语言·数据结构·c++·算法
低频电磁之道13 小时前
解决 Windows C++ DLL 导出类不可见的编译错误
c++·windows
ai产品老杨14 小时前
异构计算时代的视频底座:基于 ZLMediaKit 与 Spring Boot 的 X86/ARM 跨平台架构解析
arm开发·spring boot·音视频
君义_noip15 小时前
信息学奥赛一本通 4150:【GESP2509七级】⾦币收集 | 洛谷 P14078 [GESP202509 七级] 金币收集
c++·算法·gesp·信息学奥赛·csp-s