【问题标题】:How can I determine if an organization is using NAT?如何确定组织是否在使用 NAT?
【发布时间】:2011-10-10 07:58:52
【问题描述】:

据我了解,如果某个组织正在使用私有 IP 地址空间,我可以判断他们是否在使用 NAT。

如果某个组织的地址落入以下范围(由 Internet 标准组保留供私人使用),则可以确定该组织正在使用私有 IP 地址空间:

  • 10.0.0.0 到 10.255.255.255
  • 169.254.0.0 到 169.254.255.255(仅限 APIPA)
  • 172.16.0.0 到 172.31.255.255
  • 192.168.0.0 到 192.168.255.255

我说的对吗……?如果不正确,请更正逻辑。

【问题讨论】:

  • 您是否尝试仅从地址确定您是否在 NAT 后面?因为那行不通。你有哪些可用的信息?例如,您是否有能力与server on the internet 交谈,该server on the internet 可以报告您的“明显IP 地址”? (提示:如果它报告的地址未分配给您的某个接口,则说明您位于 NAT 或其他代理之后)您是在处理客户端代码还是服务器端代码?
  • 如果他们使用 NAT,那么您将无法获得数据包中的私有 IP 地址。相反,你会得到 natted IP 地址。因此,仅使用 IP 地址是不够的。 IKE 对等方发送 IP+端口的哈希并比较哈希以查看路径中是否存在 NAT 转换器。您可以查看 NAT-T 了解更多详情。

标签: networking


【解决方案1】:

虽然您对哪个空间被认为是“私有”的基本正确(请参阅RFC 1918 section 3),但我认为您不能在您的程序中做出这种假设,原因如下:

  • 组织可能正在使用私有地址,但根本没有使用 NAT(例如,完全私有的 Intranet)
  • 一个组织可能正在使用 NAT,但有一个保留的公共子网。 (是的,我见过有 IP 地址空间可以烧毁的组织这样做。)

【讨论】:

    【解决方案2】:

    您的问题实际上难以理解,但从标题中可以看出:

    我如何知道组织是否在使用 NAT?

    你不能。

    【讨论】:

    • 这并不完全正确。有一些技巧可用于确定是否正在使用 NAT。例如,this is how IPsec does it。当然,这是假设原始发布者可以控制在两台主机之间运行的某种协议。 ;-)
    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2020-03-11
    • 2013-03-20
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多