V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
badbay
V2EX  ›  程序员

内网服务器和 DMZ 服务器之间只开了一个端口,但是外网需要访问内网中的 mysql, redis 和 minio

  •  
  •   badbay · 17 小时 40 分钟前 · 1445 次点击

    各位大佬,公司部署软件,要求 mysql ,redis ,minio 等存放数据的软件放在内网服务器上,Web 和 api 放在 DMZ 服务器上。原本我想的部署方案是 api 服务放在内网服务器,通过 DMZ 上部署 Nginx 转发访问 api 服务,这样就只需要一个端口。公司的领导说这样不安全,让把 api 放到 DMZ 服务器上,这样到内网的数据就多一层过滤,但是这样的话 api 访问内网的数据库,redis 和 minio 就需要三个端口,开端口的流程特别长,时间来不及,有其他的解决方案吗。

    33 条回复    2025-09-18 20:46:24 +08:00
    opengps
        1
    opengps  
       17 小时 24 分钟前
    “外网访问内网中的 mysql ,redis 和 minio”这事本身就不靠谱,你确定真的需要开放端口?

    正常来说 mysql 类这种内网服务即使公网要用也是先拨入 vpn 再访问,而不是直接暴露公网端口。否则等于把危险请进来
    sagnitude
        2
    sagnitude  
       17 小时 17 分钟前
    时间来不及是你的责任吗?要学会甩锅,问你进度你就说在跟进了,表格交上去了,目前在 XXX 审核阶段,需要 XXX 签字,需要领导帮忙
    LoNeZ
        3
    LoNeZ  
       16 小时 56 分钟前
    SNI
    zzh0410
        4
    zzh0410  
       16 小时 53 分钟前 via Android
    Haproxy 可以针对协议进行分流,你可以抓包看下 tcp 头部几个字节,然后分流打不同后端。测试过 mysql ,mstsc 等,minio 这种 web 服务,再用 nginx 分流
    potatowish
        5
    potatowish  
       16 小时 52 分钟前 via iPhone
    那就是领导的问题,又考虑安全、又考虑进度,只能选一个,让他自己看着办
    caola
        6
    caola  
       16 小时 37 分钟前
    内网服务器和 DMZ 服务器只有一个端口?那直接用 frp 吧,稳定性是不错的
    jiangzm
        7
    jiangzm  
       16 小时 3 分钟前
    外网为什么要直接访问内网的 mysql,redis,minio?
    DMZ 服务器不应该是直接暴露给外网但自身又能访问内网的跳板机吗?

    还是你们 DMZ 服务器到内网还有一层网关吗
    hefish
        8
    hefish  
       15 小时 34 分钟前
    问领导啊。以领导的意见为准。
    cheng6563
        9
    cheng6563  
       15 小时 11 分钟前
    套 SSH 呗
    Ipsum
        10
    Ipsum  
       15 小时 9 分钟前
    外网访问数据层,你不得上个 vpn 还安全点?
    jifengg
        11
    jifengg  
       14 小时 44 分钟前
    我和 @jiangzm 有同样疑问。
    还是说,你们内网机器,listen 个端口也要走流程?
    badbay
        12
    badbay  
    OP
       14 小时 39 分钟前
    @jifengg dmz 和内网之间有防火墙,开端口需要向总部打申请
    badbay
        13
    badbay  
    OP
       14 小时 39 分钟前
    @jiangzm dmz 到内网有防火墙,开端口的话需要申请
    xuanbg
        14
    xuanbg  
       14 小时 38 分钟前
    不是,外什么要在外网直接访问内网中的 mysql 、redis 和 minio 。就不能通过 VPN 先进内网嘛?
    badbay
        15
    badbay  
    OP
       14 小时 18 分钟前
    @opengps 不是外网访问,是 DMZ 上的服务需要访问
    badbay
        16
    badbay  
    OP
       14 小时 17 分钟前
    @zzh0410 大佬感觉这个可行 我去试试
    badbay
        17
    badbay  
    OP
       14 小时 17 分钟前
    @caola 不让用内网穿透
    badbay
        18
    badbay  
    OP
       14 小时 16 分钟前
    @xuanbg 是 DMZ 中的服务器访问内网
    julyclyde
        19
    julyclyde  
       13 小时 59 分钟前
    你这属于架构设计问题啊,不是后期能打嘴仗解决的,而是前期就不该这么设计
    yinmin
        20
    yinmin  
       12 小时 1 分钟前 via iPhone
    三楼正解。

    在内网部署 stunnel 软件将 mysql/redis/minio 的 tcp 转化成 tls ,然后通过 sni 聚合成 1 个端口,防火墙开放 stunnel 这个端口给 dmz 区,由于 mysql 、redis 、minio 的客户端都支持 tls ,所以可以通过不同的 sni 直连 stunnel tls 端口(也可以通过 stunnel 将 tls 还原成 tcp )。

    你也可以在 mysql 、redis 、minio 上部署 tls ,然后在内网部署 sni proxy 聚合成一个端口开放给 dmz 区。

    stunnel 、sniproxy 都是可以用在生产环境,在低并发(小于 500 并发)高带宽(千兆)下能长时间稳定运行。


    你可以将你的问题和我的答案发给 ai ,让 ai 详细说原理和实施步骤。
    zjyl1994
        21
    zjyl1994  
       11 小时 58 分钟前
    这是公司的安全设计,你使用技术手段进行绕过,后续的不稳定,被黑都是你的问题。你应该走合规流程申请多开两个端口,时间长就找领导推进。这不是技术手段该解决的问题
    yinmin
        22
    yinmin  
       11 小时 57 分钟前 via iPhone
    接#20 ,你也可以在内网部署 ssh 、socks5 之类,然后防火墙开放 ssh/socks5 端口给 dmz ,不过 ssh 、socks5 等于开放整个内网,安全性比较差,强烈不推荐。

    “通过 sni 聚合 3 个 tcp 端口”是最安全的方式,甚至比开放 3 个 tcp 端口更安全,因为 sni 名称天然就是一个密码锁。(看不懂可以发给 ai )
    badbay
        23
    badbay  
    OP
       11 小时 50 分钟前
    @yinmin 谢谢佬 我去试试
    badbay
        24
    badbay  
    OP
       11 小时 50 分钟前
    @julyclyde 我刚入职,不是我设计的
    badbay
        25
    badbay  
    OP
       11 小时 48 分钟前
    @zjyl1994 我感觉也是,有点离谱
    iamwin
        26
    iamwin  
       11 小时 47 分钟前
    用什么 DMZ 啊,直接在对外服务器上 VPN ,一切过 VPN 访问内网
    yinmin
        27
    yinmin  
       11 小时 43 分钟前 via iPhone
    @badbay #23 如果临时用几天,最快最安全的方式是内网安装 stunnel server 将 3 路 tcp 聚合成 1 路 tls (根据 sni 区分),然后 dmz 区安装 stunnel client 将这路 tls 根据 sni 还原成 2 路 tcp ,你可以让 ai 写一下 stunnel 配置。
    daxin945
        28
    daxin945  
       11 小时 24 分钟前
    这不是技术问题 是责任问题,出了事儿就麻烦了
    goodryb
        29
    goodryb  
       10 小时 4 分钟前
    不要搞什么奇技淫巧,老板怎么说就怎么做,按照流程来, 端口该申请就申请,流程长就长,你着什么急
    julyclyde
        30
    julyclyde  
       9 小时 21 分钟前
    @badbay 你刚入职,不是你设计的
    如果实施失败,那就是设计方的责任
    如果实施成功了然后被黑了,那就是变更方的责任
    你看着办吧
    tabliu
        31
    tabliu  
       9 小时 11 分钟前
    用 openvpn 直接打通
    hahaha121
        32
    hahaha121  
       8 小时 26 分钟前
    easytier 直接打通内网
    kiracyan
        33
    kiracyan  
       8 小时 4 分钟前
    这几个理论上不允许外网访问的吧 最多 vpn 访问
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   909 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:50 · PVG 04:50 · LAX 13:50 · JFK 16:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.