gpt4 book ai didi

nat - gethostbyaddr() 应该在 NAT 环境中工作吗?

转载 作者:行者123 更新时间:2023-12-04 17:52:18 26 4
gpt4 key购买 nike

如果我要求 gethostbyaddr() 查找 NAT 生成的 IP 地址,例如 192.168.0.4,我应该期望它起作用吗?

背景:我正在家里对一些用于网络环境的控制代码进行测试。有时,此代码会调用 gethostbyaddr() 以获取向它发送消息的机器的详细信息。地址通常是本地机器的地址,有时甚至是当前机器本身的地址。通常,这不会导致任何问题。但是,我已经用 Netgear 路由器替换了我的旧 Netcomm ADSL 路由器,并且发现本地 NAT 环境中的机器的 gethostbyaddr() 调用现在 a) 30 秒后超时,b) 返回 NULL 以指示错误。实验性地回到我的旧路由器,我发现同样的调用也失败了,返回 NULL,但立即返回。代码可以处理错误返回(这就是我以前从未注意到这一点的原因),但新的 30 秒超时是一个巨大的麻烦。显然,有许多方法可以解决此问题,但大多数方法都涉及捕获地址为 192.168 地址的情况并避免调用 gethostbyaddr()。我的问题是,在 NAT 环境中 gethostbyaddr() 调用是否总是失败,或者在某些情况下它会起作用? (在这种情况下,我不想最终避开它们。)还是只是我没有正确设置路由器?顺便说一下,我在 OS X 上运行它,在 Snow Leopard 和 Lion 上看到相同的行为。

最佳答案

除非您设置私有(private) DNS 或将它们添加到您的主机文件中,否则它们将无法工作。 Sendmail 对此提供了一些很好的文档:

http://www.sendmail.com/sm/open_source/tips/private_dns/

最终到达根名称服务器的调用会被黑洞。

一些路由器可能已经提供了反向 DNS。您不需要让每个主机都在那里,只需对地址空间具有权威性,这样请求就不会被转发。

关于nat - gethostbyaddr() 应该在 NAT 环境中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com