【发布时间】:2022-10-05 22:05:17
【问题描述】:
我们有一个启用了 DNS 的本地 Microtik(我们需要它用于一些本地静态路由,否则它只是一个缓存)并且由于某种原因它不适用于 gcp.mongodb.net,这意味着我们无法连接到 mongo使用单个 URI 的云集群。
DNS 被简单地配置为检查 google DNS 服务器(8.8.8.8 和 8.8.4.4.)
运行dig,我可以看到 Mikrotik 没有返回任何内容:
$ dig test-1.test.gcp.mongodb.net
; <<>> DiG 9.18.5 <<>> test-1.test.gcp.mongodb.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 21486
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test-1.test.gcp.mongodb.net. IN A
;; Query time: 0 msec
;; SERVER: 192.168.3.1#53(192.168.3.1) (UDP)
;; WHEN: Mon Sep 05 17:12:38 CEST 2022
;; MSG SIZE rcvd: 45
但是对 googles 8.8.8.8 dns 运行相同的命令会产生结果(尽管它只是权限):
$ dig @8.8.8.8 test-1.test.gcp.mongodb.net
; <<>> DiG 9.18.5 <<>> @8.8.8.8 test-1.test.gcp.mongodb.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63165
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;test-1.test.gcp.mongodb.net. IN A
;; AUTHORITY SECTION:
gcp.mongodb.net. 868 IN SOA ns-897.awsdns-48.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 60
;; Query time: 6 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Mon Sep 05 17:12:42 CEST 2022
;; MSG SIZE rcvd: 137
知道可能是什么cuplrit吗? DNS 中没有那么多选项,我的理解是它只会询问 Google DNS 并缓存响应,但似乎并非如此。
当尝试通过 mongo 工具(例如mongodump)连接时,它会导致cannot unmarshal DNS message: