首先,我仍然在现场寻找答案,这些答案看起来可能让我找到解决我的问题的方法,在这里张贴肯定不是我第一次找到解决方案,我今天已经尝试了一段时间了。还有-谢谢你的阅读。我正在为类分配任务,其中的对象是将bind9停靠容器作为DNS负载均衡器运行,以便使用循环方法平衡两个web服务器之间的请求。因此,基本上,如果我向web服务器的域名提出请求,它将转到一个web服务器的IP地址,那么下一个请求将转到下一个web服务器的IP地址。如果我的术语有点错误,我很抱歉,我还在学习这些东西,但我希望我已经理解了这一点。为此,我尝试使用两个Ubuntu16.04VM,一个运行httpd容器,另一个运行httpd容器和bind9容器。我能够让web服务器运行,我能够使用主机IP连接到它们,我还能够让bind9容器运行。我真正遇到麻烦的部分是,如果我在浏览器中输入域名,实际上是让bind9 DNS容器带我到web服务器。
下面是我用来启动bind9容器的命令: docker -d -name=bind-dns=127.0.0.1-发布=192.168.0.45:53:53/udp-发布=192.168.0.45:10000:10000--d=/srv/docker/bind:/data-env=‘ROOT_PASSWORD=秘书密码’sameersbn/bind:最新的
web服务器非常简单,我只需将目录与我的index.html文件绑定到/usr/local/apache2/htdocs,并从容器的端口80将其发布到主机的端口80。
这一切必须是一个非常简单的设置在我的本地网络,所以我不需要注册一个域名,我不需要邮件服务器或任何东西,我需要做的是,能够使用'dig‘查询DNS服务器的负载平衡主机名,并让它解析到两个不同的IP地址的web服务器。谢谢你在这方面的指导,我真的很感谢你的帮助,我已经看了很多资源,我只是不知道出了什么问题。
启动DNS服务器(bind9容器)后,可以使用命令'host google.com 172.x.x.x‘并返回正确的信息,172.x.x.x是码头容器的IP,因为我的本地网络是192.168.0.1/24。当我试图对码头主机的IP执行相同的命令时,它说拒绝。我试着编辑ACL,使用webmin添加区域和地址记录,但我无法让它工作。我将停止写作,希望我已经提供了足够的信息,谢谢你的阅读。
发布于 2021-09-08 03:38:22
你没有描述172.x.x.x是关于什么的。还不清楚为什么它会是相关的。请张贴dig输出。host命令很好,但是看到更多的细节将有助于您的调试工作。
您正在拍摄类似于以下内容的输出:
$ dig +nottl a yahoo.com @8.8.8.8
; <<>> DiG 9.10.6 <<>> +nottl a yahoo.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50455
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;yahoo.com. IN A
;; ANSWER SECTION:
yahoo.com. IN A 74.6.143.25
yahoo.com. IN A 74.6.231.20
yahoo.com. IN A 74.6.231.21
yahoo.com. IN A 98.137.11.163
yahoo.com. IN A 98.137.11.164
yahoo.com. IN A 74.6.143.26
;; Query time: 62 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)有两件事你想看到起作用。
(1.)将Shell放入容器并执行本地挖掘查询,以便从本地绑定服务器获得答案。我们想验证一下,在“容易”的情况下,我们可以得到一个好的答案。处理守护进程的配置,直到答案看起来合理为止。
另外,使用netstat -an和/或lsof -i:53来验证守护进程发出的绑定()值为0.0.0.0或类似的适当地址。
(2.)从感兴趣的客户端,发送一个dig查询@192.168.0.45。如果失败了,那就是网络路由问题。在进行此操作时,请验证curl (或telnet)是否可以访问TCP端口10000。您会发现使用curl -i很方便,因此您将看到see服务器发送的标头。
这里有一点细微之处。您配置了UDP 53,这已经足够好了。但这肯定不对。DNS还需要TCP端口53上的连接。有时DNS的答案太大,无法适应单个UDP数据包(未碎片化)。特别是在一个签名的DNSSEC区域内。当发生这种情况时,命名服务器发送一个标记为“截断”的响应,客户端将在TCP端口53上重试。您可能会发现,telnet 192.168.0.45 53是验证连接性的一种方便方法。
https://stackoverflow.com/questions/69096565
复制相似问题