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的服务器,访问内网的服务了。
评论