【问题标题】:Communication from DMZ to LAN从 DMZ 到 LAN 的通信
【发布时间】:2019-10-29 14:24:48
【问题描述】:

我有一个带有两个 .net 核心 WEB.API 服务的系统,一个在公司内部网络 (LAN) 上,一个在外部服务器 (DMZ) 上。 DMZ 服务需要从 LAN 上的服务接收信息。问题在于,由于信息安全,内部网络 (LAN) 的通信完全阻塞。

我知道像 IBM DataPower 代理这样的解决方案可以解决这个问题,但在我的情况下,我喜欢避免这个解决方案并在软件级别修复它(没有 IT 部门、集成等等......)

我想过用几种方式解决这个问题:

一种方法:通过从 LAN 服务到 DMZ 服务的长轮询。

第二种方式:使用WebSockets建立连接并绕过防火墙。 DMZ 将持有 WebSockets 服务,LAN 将成为 WebSockets 客户。

这两种方式似乎是一种绕行。我正在寻找在语法方面更直观的东西,它实际上就像从 DMZ 到 LAN 服务的客户端-服务器机制。

我喜欢实现的语法类似于: 服务器 - 局域网:

string GetCustomerId(string name){
   ....
}

客户端 - DMZ:

var id = client.GetCustomerId("abc");

当然,解决方案必须是从 LAN 到 DMZ 的一种方式的通信。 感谢您的帮助,如何正确执行此操作?

【问题讨论】:

    标签: .net rest websocket communication long-polling


    【解决方案1】:

    我找到的解决方案是将RabbitMQ 与两个队列(请求、响应)一起使用,每个方向一个。 在局域网中,您需要运行一个服务来监听请求队列、处理请求并通过响应队列返回响应。

    在 DMZ 上,您可以运行一个 API,通过请求队列将请求前导到 LAN,每个请求必须包含一个唯一标识符。将请求插入到 Requests 队列后,您需要监听 Responses 队列,直到收到具有相同唯一标识符的消息。

    您可以添加一些额外的安全性,例如在插入队列之前加密消息等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2012-09-13
      相关资源
      最近更新 更多