如何利用 stream 模块在四层 TCP 协议层配置 allow 与 deny 实现数据库端点物理隔离

云伟大大_8458

云伟大大_8458

2026-06-23

343人浏览

原创

不能在 nginx stream 模块中直接使用 allow/deny 指令实现数据库端点物理隔离,因其属 http 模块指令,stream 模块不加载;应采用系统防火墙(iptables/nftables)、前置 http 网关预筛或 stream 内部连接加固等生产级方案。

如何利用 stream 模块在四层 tcp 协议层配置 allow 与 deny 实现数据库端点物理隔离

不能在 Nginx stream 模块中直接使用 allow 与 deny 指令实现数据库端点的物理隔离。

这是因为 allow/deny 属于 ngx_http_access_module,仅在 http 上下文(如 server 或 location 块)中有效;而 stream 模块运行在传输层,不解析 HTTP 协议,也不加载该模块。在 stream { } 块中写 allow 10.0.1.5; 会导致 Nginx 启动失败,并报错:"allow" directive is not allowed here。

真正的四层 IP 访问控制,需通过其他可靠方式落地,以下是三种切实可行、生产环境广泛采用的方法:

必须用系统防火墙做源 IP 过滤

这是最底层、最高效、最安全的物理隔离手段,直接作用于网络栈入口,不依赖 Nginx 解析逻辑。

  • 对数据库代理端口(如 3306)限制来源 IP:
    # 允许可信网段
    iptables -A INPUT -p tcp --dport 3306 -s 10.20.0.0/16 -j ACCEPT
    iptables -A INPUT -p tcp --dport 3306 -s 172.16.100.0/24 -j ACCEPT
    # 拒绝其余所有
    iptables -A INPUT -p tcp --dport 3306 -j DROP
  • 更推荐用 nftables(现代、结构清晰):
    nft add rule ip filter input tcp dport 3306 ip saddr != { 10.20.0.0/16, 172.16.100.0/24 } drop

✅ 优势:规则生效快、无性能损耗、绕过任何应用层组件,真正实现“物理级”访问拦截。

可选:前置轻量 HTTP 网关做七层预筛

若架构允许,在 stream 实例前部署一台专用 Nginx(仅启用 http 模块),专责 IP 白名单校验 + 协议桥接:

  • 第一层(HTTP 网关):

    Upload audio to AIOZ Stream
    Upload audio to AIOZ Stream

    快速上传音频至 AIOZ Stream API。支持默认或自定义编码配置创建音频对象,上传文件并完成处理后返回音频链接。

    下载
    http {
        server {
            listen 3306;
            location / {
                allow 10.20.0.10;
                allow 10.20.0.11;
                deny all;
    
                # 转发原始 TCP 流给后端 stream 实例(需启用 stream proxy_pass 支持)
                proxy_pass stream://127.0.0.1:3307;
                proxy_http_version 1.1;
                proxy_set_header Connection '';
            }
        }
    }
  • 第二层(stream 实例)监听 3307,专注转发,不做访问判断。

⚠️ 注意:标准 Nginx 不原生支持 proxy_pass stream://,需配合 ngx_stream_proxy_module 或使用支持 TCP 透传的定制版本(如 Tengine)。更稳妥的做法是用 SOCKS5 或 HTTP CONNECT 封装,但会引入额外复杂度。

推荐组合:防火墙 + stream 内部连接加固

在防火墙兜底基础上,stream 配置本身也应强化连接可靠性,间接提升隔离效果:

  • 设置严格超时与保活,防止异常连接长期滞留:

    stream {
        server {
            listen 3306;
            proxy_pass mysql_backend;
            proxy_timeout 30m;           # 避免空闲连接被中间设备断开
            proxy_responses 1;          # 确保后端 MySQL 已响应再认定连接就绪
            so_keepalive on;            # 启用 TCP keepalive 探测链路活性
        }
    }
  • 启用连接日志,记录真实源 IP(需开启 access_log 并确保未被 NAT 丢失):

    stream {
        log_format stream_log '$remote_addr:$remote_port → $server_addr:$server_port — $status — $time_local';
        access_log /var/log/nginx/stream-access.log stream_log;
    
        server { ... }
    }

? 补充:若后端数据库支持 PROXY 协议(如 MySQL 8.0+),可在 stream 中启用 proxy_protocol on;,并配置后端服务解析该协议头,从而在数据库侧也能拿到原始客户端 IP,便于审计与权限联动。

不复杂但容易忽略。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2672

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

896

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2416

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4472

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CentOS 官方文档
CentOS 官方文档

共0课时 | 0人学习

极客学院Java8新特性视频教程
极客学院Java8新特性视频教程

共17课时 | 4.3万人学习