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

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

  •  
  •   badbay · 10 小时 47 分钟前 · 1298 次点击

    各位大佬,公司部署软件,要求 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  
       10 小时 30 分钟前
    “外网访问内网中的 mysql ,redis 和 minio”这事本身就不靠谱,你确定真的需要开放端口?

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

    还是你们 DMZ 服务器到内网还有一层网关吗
    hefish
        8
    hefish  
       8 小时 40 分钟前
    问领导啊。以领导的意见为准。
    cheng6563
        9
    cheng6563  
       8 小时 17 分钟前
    套 SSH 呗
    Ipsum
        10
    Ipsum  
       8 小时 16 分钟前
    外网访问数据层,你不得上个 vpn 还安全点?
    jifengg
        11
    jifengg  
       7 小时 50 分钟前
    我和 @jiangzm 有同样疑问。
    还是说,你们内网机器,listen 个端口也要走流程?
    badbay
        12
    badbay  
    OP
       7 小时 46 分钟前
    @jifengg dmz 和内网之间有防火墙,开端口需要向总部打申请
    badbay
        13
    badbay  
    OP
       7 小时 45 分钟前
    @jiangzm dmz 到内网有防火墙,开端口的话需要申请
    xuanbg
        14
    xuanbg  
       7 小时 44 分钟前
    不是,外什么要在外网直接访问内网中的 mysql 、redis 和 minio 。就不能通过 VPN 先进内网嘛?
    badbay
        15
    badbay  
    OP
       7 小时 25 分钟前
    @opengps 不是外网访问,是 DMZ 上的服务需要访问
    badbay
        16
    badbay  
    OP
       7 小时 24 分钟前
    @zzh0410 大佬感觉这个可行 我去试试
    badbay
        17
    badbay  
    OP
       7 小时 23 分钟前
    @caola 不让用内网穿透
    badbay
        18
    badbay  
    OP
       7 小时 22 分钟前
    @xuanbg 是 DMZ 中的服务器访问内网
    julyclyde
        19
    julyclyde  
       7 小时 5 分钟前
    你这属于架构设计问题啊,不是后期能打嘴仗解决的,而是前期就不该这么设计
    yinmin
        20
    yinmin  
       5 小时 7 分钟前 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  
       5 小时 5 分钟前
    这是公司的安全设计,你使用技术手段进行绕过,后续的不稳定,被黑都是你的问题。你应该走合规流程申请多开两个端口,时间长就找领导推进。这不是技术手段该解决的问题
    yinmin
        22
    yinmin  
       5 小时 3 分钟前 via iPhone
    接#20 ,你也可以在内网部署 ssh 、socks5 之类,然后防火墙开放 ssh/socks5 端口给 dmz ,不过 ssh 、socks5 等于开放整个内网,安全性比较差,强烈不推荐。

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