一 系统运行环境
test@test:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
test@test:~$ uname -a
Linux test 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
test@test:~$ /usr/local/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.25.3.1
二 安装dnsmasq
1 Ubuntu24 输入如下安装
sudo apt update
sudo apt-get install dnsmasq
2 查看版本
test@test:~$ dnsmasq -v
Dnsmasq version 2.90 Copyright (c) 2000-2024 Simon Kelley
Compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfileThis software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.
三 Dnsmasq 配置
1 安装配置一台实例
#增加如下
sudo vim /etc/dnsmasq.conf
#启动端口
port=853
#不解析/etc/hosts文件
no-hosts
#解析域名记录
addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts
#上游dns
resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf
#禁用轮询机制
no-poll
#按照顺序解析
strict-order
#记录dns查询日志
log-queries
#设置日志文件
log-facility=/var/log/dnsmasq.log
#本地缓存时间,根据实际情况配置
local-ttl=86500
#缓存数量
cache-size=90000
#监听地址
listen-address=192.168.50.18,127.0.0.1
#增加解析记录
sudo vim /etc/dnsmasq.d/dnsmasq.hosts
192.168.50.18 www.test.com
#设置上游DNS地址
sudo vim /etc/dnsmasq.d/resolv.dnsmasq.conf
nameserver 223.6.6.6
nameserver 114.114.114.114
#启动
sudo systemctl start dnsmasq
#系统启动
sudo systemctl enable dnsmasq
#查看状态
sudo systemctl status dnsmasq
#语法检查
sudo dnsmasq --test
dnsmasq: syntax check OK.
2 参考例子,另外在安装配置一台dnsmasq服务器
四 openresty(Nginx) 安装 可参考:ubuntu server 24.04 (Linux) 源码编译安装 OpenResty 1.25.3.1 Released-CSDN博客
五 Nginx 配置
#增加udp配置,在http段外面(⊙﹏⊙)
stream {# udp负载均衡upstream dns-server {server 192.168.50.19:53;server 192.168.50.18:8053;}server {listen 53 udp reuseport;proxy_pass dns-server;proxy_timeout 9s; #最长的超时时间proxy_responses 1; #连接超时时间error_log /var/log/dnsmasq.log;}}
#重新加载配置
sudo /usr/local/openresty/nginx/sbin/nginx -s reload
六 客户端UDP 负载均衡测试
windows 10 dns 配置为nginx 服务器的IP
查看2台服务器 dnsmasq 日志