当前位置: 首页 > news >正文

Nginx 四层(stream)反向代理 + DNS 负载均衡

一、实验目标

  1. 用 Nginx(IP:192.168.65.135)做四层反向代理,将 53/udp 请求轮询转发到两台权威 DNS:

    • 192.168.65.131

    • 192.168.65.132

  2. 验证:外部查询 dns.xiaott.org 时,135 端口返回的结果在 131/132 之间切换,且均带 aa(权威)标志。

──────────────────────────────────
二、实验拓扑

Client ──UDP/53──► 192.168.65.135 (Nginx stream)├─► 192.168.65.131:53 (BIND)  └─► 192.168.65.132:53 (BIND)

──────────────────────────────────
三、环境信息

角色IP软件/版本备注
Nginx Proxy192.168.65.135nginx-1.24.0 --with-stream已启用 stream 模块
DNS-1192.168.65.131bind-9.16.23权威域:xiaott.org
DNS-2192.168.65.132bind-9.16.23权威域:xiaott.org
Client192.168.65.xdig 9.16.23用于测试

──────────────────────────────────
四、DNS 权威服务器配置(131 & 132)

  1. 区域文件 /var/named/xiaott.org.zone(两台内容一致,仅 serial 不同,便于观察)

$TTL 1D
@   IN SOA dns.xiaott.org. root.xiaott.org. (2025072801 ; serial on 1311D 1H 1W 3H )IN NS dns.xiaott.org.
dns IN A  192.168.65.131   ; <-- 131 上
bbs IN A  192.168.65.131
$TTL 1D
@   IN SOA dns.xiaott.org. root.xiaott.org. (2025072802 ; serial on 1321D 1H 1W 3H )IN NS dns.xiaott.org.
dns IN A  192.168.65.132   ; <-- 132 上
bbs IN A  192.168.65.132

 

  1. 启动并验证

systemctl enable --now named
named-checkzone xiaott.org /var/named/xiaott.org.zone
dig @127.0.0.1 dns.xiaott.org +short

返回各自 IP 表示权威服务器正常。

 

──────────────────────────────────
五、Nginx 四层反向代理配置(135)

  1. 目录结构

/usr/local/nginx/
└── tcp.d/└── dns.conf
  1. 内容:/usr/local/nginx/tcp.d/dns.conf

stream {upstream dns_cluster {server 192.168.65.131:53 max_fails=3 fail_timeout=5s;server 192.168.65.132:53 max_fails=3 fail_timeout=5s;}server {listen 53 udp;               # 四层 UDPproxy_pass dns_cluster;proxy_responses 1;           # 等待 1 个 DNS 响应proxy_timeout 1s;}
}

  1. 引入主配置
    nginx.confinclude 区域添加:

include /usr/local/nginx/tcp.d/*.conf;

  1. 启动 Nginx

nginx -t   # 语法检查
systemctl reload nginx
ss -unlp | grep 53   # 确认 135 正在监听 udp/53

──────────────────────────────────
六、测试与现象记录

序号客户端命令返回 IP来源服务器备注
1dig @192.168.65.135 dns.xiaott.org192.168.65.131DNS-1aa 标志
2再次执行192.168.65.132DNS-2轮询到第二台
3关闭 131 的 named仅 132 返回DNS-2故障转移
4重启 131131/132 交替出现负载均衡恢复

抓包验证(135 上):

tcpdump -i any -nn udp port 53 and host 192.168.65.135

可看到源端口 53 的报文交替发往 131 与 132。

──────────────────────────────────
七、结论

  1. Nginx 成功以四层 UDP 反向代理将 53 端口请求轮询到后端两台权威 DNS。

  2. 通过 max_failsfail_timeout 实现健康检查与故障摘除。

  3. 客户端始终感知单一入口(192.168.65.135),无需关心后端变化。

http://www.xdnf.cn/news/1203247.html

相关文章:

  • Java面试深度剖析:从JVM到云原生的技术演进
  • JVM 内存共享区域详解
  • 解决cordova编译安卓提示Cloud not find XXXX.aar
  • windows内核研究(异常-CPU异常记录)
  • C++ 内存管理
  • 图像轮廓与凸包
  • 数据赋能(345)——数据整合——全面集成原则
  • 《 服务注册发现原理:从 Eureka 到 Nacos 的演进》
  • Vue、微信小程序、Uniapp 面试题整理最新整合版
  • 博士申请 | 荷兰阿姆斯特丹大学 招收计算机视觉(CV)方向 全奖博士生
  • JAVA后端开发——用 Spring Boot 实现定时任务
  • Spring与SpringBoot:从手动挡到自动挡的Java开发进化论
  • JAVA:Spring Boot 集成 Protobuf 的技术指南
  • Office-PowerPoint-MCP-Server – 基于MCP的开源PPT生成与编辑工具
  • 基于AFLFast的fuzz自动化漏洞挖掘(1)
  • 【Linux系统】Ext2文件系统 | 软硬链接
  • 6种将iPhone照片传输到Windows 10电脑的方法
  • 最小二乘法拟合椭圆
  • 《Linux服务与安全管理》| samba服务器配置匿名模式
  • 嵌入式基础知识复习(7.28)
  • 未授权访问
  • C++ list 容器全解析:从构造到模拟实现的深度探索----《Hello C++ Wrold!》(16)--(C/C++)
  • window显示驱动开发—Direct3D 11 视频设备驱动程序接口 (DDI)
  • OpenLayers 综合案例-信息窗体-弹窗
  • 对于ui=f(state)的理解(react)
  • python毕业设计案例:基于python django的抖音数据分析与可视化系统,可视化有echarts,算法包括lstm+朴素贝叶斯算法
  • 【Datawhale夏令营】端侧Agent开发实践
  • 【Unity笔记】Unity Camera.cullingMask 使用指南:Layer 精准控制、XR 多视图与性能提升
  • [机缘参悟-236]:通过AI人工神经网络理解人的思维特征:惯性思维、路径依赖、适应性、不同场合不同言行、经验、概率、常规与特殊情形(正态分布)、环境适应性
  • 【linux】md5文件相似校验介绍与实战示例