Debian 12上使用Nginx代理TCP流量,并配置IPv6白名单访问控制

 在部署基于 TCP 的应用程序(如数据库服务)时,安全性和访问控制是常见的需求之一。有时候只希望特定白名单的IPv6地址访问特定的端口。使用 Nginx 作为 TCP 代理,可以实现高效灵活的流量管理。本文记录了如何在 Debian 12 上使用 Nginx 来实现 TCP 流量代理和 IPv6 白名单控制。

准备环境

系统: Debian 12。

Nginx 版本: 确保安装的 Nginx 版本支持 stream 模块。使用 nginx -V 检查是否包含 --with-stream=dynamic。

权限: 访问和编辑配置文件通常需要 root 权限。

安装 Nginx 和 Stream 模块

如果未安装 Nginx,可以通过以下命令安装:

apt update
apt -y install nginx

接下来,安装 libnginx-mod-stream 模块以支持 TCP 和 UDP 流量代理:

apt -y install libnginx-mod-stream

Nginx 和 stream 模块安装完成后,Debian 的 Nginx一般会自动加载模块并重载Nginx。

配置 TCP 流量代理和 IPv6 白名单

编辑 Nginx 配置文件(位于 /etc/nginx/nginx.conf),在 http 模块的同级目录下添加 stream 代码块来配置 TCP 流量的转发:

stream {
    server {
        listen [::]:1234 ipv6only=on; # 仅监听特定的 IPv6 地址和端口
        allow [YOUR_IPV6_ADDRESS_HERE]; # 允许特定的 IPv6 地址
        deny all; # 拒绝其他地址

        proxy_pass 127.0.0.1:1234; # 转发至本地的 IPv4 地址和端口

        # 可选配置:设置超时等
        proxy_connect_timeout 5s;
        proxy_timeout 60s;
    }
}

请替换 [YOUR_IPV6_ADDRESS_HERE] 为你希望允许访问的特定 IPv6 地址。

重启Nginx服务让配置生效

对配置进行更改后,使用以下命令检查配置文件语法的正确性并重载 Nginx:

nginx -t
systemctl reload nginx

这样,你就可以通过使用指定ipv6的服务器,访问内网的服务了。

评论

Popular Posts

Microsoft 365安装包下载(Office桌面应用)

Microsoft Office 2019(含Visio和Project)官方镜像下载

装修基础报价

太阳的后裔 Descendants of the Sun

ThinkPHP - 开源PHP框架

《Git教程》廖雪峰

Discuz! 5.0 Lite 精简版(仅500多k大小)