我有一个包含 2 个 DNS 服务器(主服务器和从服务器)的网络,但我不希望客户端直接向它们询问。因此,在同一个网络中,我有一台安装了 haproxy 1.7.5 的 debian 机器。我希望客户端在其/etc/resolv.conf记录代理的 IP。我希望代理在两台服务器之间平衡负载。
IP DNS master = 10.10.24.2
IP DNS slave = 10.10.24.4
IP PROXY = 10.10.24.5
在文件中/etc/haproxy/haproxy.cfg最后我补充道:
resolvers mydns
nameservers dns1 10.10.24.2:53
nameservers dns2 10.10.24.4:53
然后我启动haproxy:
haproxy -f /etc/haproxy/haproxy.cfg
如果我在代理中执行:
netstat -tuna
我得到了以下两条新线:
udp 0 0 10.10.24.5:35000 10.10.24.2:53 ESTABLISHED
udp 0 0 10.10.24.5:35000 10.10.24.4:53 ESTABLISHED
但我期望收到这样的信息:
udp 0 0 10.10.24.5:53 10.10.24.2:53 ESTABLISHED
udp 0 0 10.10.24.5:53 10.10.24.4:53 ESTABLISHED
显然,从客户端到代理的 DNS 请求不起作用……
是否可以使用 haproxy 实现这一点?
答案1
答案2
看起来完全没问题。IP 连接的传出部分(从10.10.24.5
到10.10.24.2
)通常使用随机端口(或半随机端口),它不需要与目标机器具有相同的端口号。
更重要的是你还有这样一行:
udp 0 0 10.10.24.5:53 0.0.0.0:* LISTEN
这表明 HAProxy 确实在 UDP 端口 53 上监听 DNS 请求,并准备将其转发到后续服务器。