windows下consul 无法通过dns访问服务?

Consul 启动命令 .\consul.exe agent -dev -ui --client=0.0.0.0 -dns-port=53
服务正常跑起ui也可访问。
wsl 中执行的命令

dig @172.17.208.1 -p 53 consul.service.dc1.consul.
; <<>> DiG 9.18.1-1ubuntu1.2-Ubuntu <<>> @172.17.208.1 -p 53 consul.service.dc1.consul.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11446
;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;consul.service.dc1.consul.     IN      A

;; ANSWER SECTION:
consul.service.dc1.consul. 0    IN      A       28.0.0.46

;; Query time: 30 msec
;; SERVER: 172.17.208.1#53(172.17.208.1) (UDP)
;; WHEN: Thu Apr 06 11:44:57 CST 2023
;; MSG SIZE  rcvd: 84

172.17.208.1 是宿主的ip其他端口的服务是能够访问的,但是dig命令的返回好像不是正确。是哪个操作步骤出现了问题?

阅读 2.2k
1 个回答

你提到的 “dig命令的返回好像不是正确”,我猜测可能是对返回的 IP 地址(28.0.0.46)有疑问。Consul 使用特殊的 IP 地址范围(默认为 28.0.0.0/16)来表示服务地址。这些地址是虚拟的,用于在内部进行服务发现。当 Consul DNS 解析请求时,它会返回这些虚拟地址,而不是实际的节点 IP 地址。当您的应用程序使用这些虚拟地址进行通信时,Consul 会将请求透明地代理到相应的服务实例。

如果你需要获取实际的服务 IP 地址,可以使用 Consul 的 HTTP API 查询服务实例。例如,你可以使用以下命令查询 Consul 服务的实例:

curl http://172.17.208.1:8500/v1/catalog/service/consul
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题