首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Win10上缓存DNS?

如何在Win10上缓存DNS?
EN

Stack Overflow用户
提问于 2018-11-02 16:55:30
回答 1查看 306关注 0票数 0

我试图为golang可执行文件编写一个http(s)代理,这就是我所做的:

  1. 编写一个连接“getaddrinfo”、“GetAddrInfoW”、“gethostbyname”的.dll,将所有域重定向到localhost
  2. 将.dll注入golang_target.exe (现在所有请求都重定向到本地主机)

预期的:我预期所有请求都重定向到本地主机:80(443),这些请求将失败。

结果:当注入.dll时,它不会立即生效,请求仍然正常工作。我在那些'getaddrinfo‘中添加了MessageBox .函数,它们不被调用。

但是大约过了三分钟,.dll似乎就工作了,所有请求都失败了,MessageBox弹出了。

问题:我想戈朗或Windows会缓存dns,并每隔几分钟刷新一次缓存?是否可以手动刷新缓存?这样我就可以使.dll立即生效。

EN

回答 1

Stack Overflow用户

发布于 2018-11-03 12:09:03

不,Go (和大多数语言标准库)不缓存DNS响应,只依赖于操作系统。默认情况下,IIRC窗口和macOS将缓存DNS,但Linux发行版通常不会缓存。

如果您可以连接到GetAddrInfoW调用,就可以绕过Windows的缓存(您可以检查Go是否正在调用src/net/lookup_windows.go中的lookupIP方法中的syscall ),但我认为您不可能连接到使用DLL,因为Go有自己的syscall实现。

除此之外,还可以通过运行ipconfig /flushdns命令来刷新Windows缓存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53122861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档