AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 541699
Accepted
Daniel Widrick
Daniel Widrick
Asked: 2013-09-26 15:39:44 +0800 CST2013-09-26 15:39:44 +0800 CST 2013-09-26 15:39:44 +0800 CST

NAT 网关 - 最大连接限制

  • 772

我知道足够的网络是危险的。NAT 的底层细节并不是我特别了解的。

我无意中发现自己在今天早些时候的一次讨论中关于将我们的一堆节点放在 NAT 网关后面。(1 个公共 IP 地址和 X 个私有 LAN 地址)。我在 TCP 协议中调用了对源和目标端口字段的 16 位限制,(http://www.ietf.org/rfc/rfc793.txt - 第 15 页)并提到它会将我们限制为大约 65,000 个连接( 65536)。——我对那个答案不再那么自信了。你能帮我提供一些细节吗?

我知道我们这边的传入端口(服务器端口)可以接受与 sourceIP x SourcePort 组合一样多的连接。让我们暂时忽略这些,关注源自 LAN、通过 NAT 网关并在随机端口上的随机主机上结束的连接。

在普通的 [Linux] 系统上,我认为每个源 IP 每个端口的传出连接限制为 1 个。如果我们假设我们生活在一个简单的世界中,每个系统只有一个 IP 地址,那么“正常系统”将被限制为最多 65536 个连接。

1) 在 TCP 中,单源 IP 是否限制为 65536 MAX 理论上的传出连接?

2)或者每个远程主机的限制实际上是 65536 个连接?

2)【换种方式写】:同一个源端口可以用于不同的remoteHostIP:RemotePort组合吗?

例如:(以下可以吗?)

Source IP   |Source Port |Remote IP|Remote Port   
192.168.0.20:36500   -->    8.8.8.8:23
192.168.0.20:36500   -->    8.8.4.4:23

3) 问题 1 和 2 的答案对于...'非正常系统'[充当 NAT 网关的思科路由器] 的答案是否不同?

例如:一个专门的网络设备,它有一个面向公众的 IP 和多达 65,000 个局域网 IP [或更多]?是否有魔法,或者问题2的答案总是:是的?(或者没有)

4)以上问题都假设有状态的TCP连接。像 UDP 这样的无状态连接有什么不同吗?

最终:

5) 我们的 LAN 是否会被限制为通过单个公共 IP 地址与外界的 65536 个(或其他一些理论上的限制)并发连接?

谢谢!:)


出于这个问题的目的,我们支持非常强大且全新的 Cisco Nexus 设备(我认为是 7000 系列)。除非可以具体量化,否则最好忽略内存/等限制。

networking
  • 5 5 个回答
  • 25787 Views

5 个回答

  • Voted
  1. Best Answer
    hookenz
    2013-09-26T17:56:25+08:002013-09-26T17:56:25+08:00

    如果我错了,请纠正我,但这是我理解的方式。限制是每个客户端/服务器/端口。因此,鉴于此。

    1) 在 TCP 中,单源 IP 是否限制为 65536 MAX 理论上的传出连接?

    不,我相信对于相同的目标 IP,理论上最大限制为 65536。

    Windows 工作站(非服务器版本)有限制,这使得这个数字要少得多。Linux 有资源限制,但一般用户通常不会遇到这些限制,您可以轻松调整它们。

    当您开始将数量增加到接近 64K 时,您可能会遇到其他资源限制。

    由于资源有限,消费级路由器的限制可能要低得多。

    2)或者每个远程主机的限制实际上是 65536 个连接?

    是的

    3) 问题 1 和 2 的答案对于...'非正常系统'[充当 NAT 网关的思科路由器] 的答案是否不同?

    不

    4)以上问题都假设有状态的TCP连接。像 UDP 这样的无状态连接有什么不同吗?

    UDP是无连接的。所以这与UDP并不相关。

    5) 我们的 LAN 是否会被限制为通过单个公共 IP 地址与外界的 65536 个(或其他一些理论上的限制)并发连接?

    不。


    在跟踪连接并提供其他跟踪功能的状态防火墙的上下文中,是的,这些模块本身可能有限制。该操作没有说明正在使用哪个防火墙/NAT 路由器,因此我们甚至无法推测它目前可能施加的限制。

    • 9
  2. user8162
    2013-09-26T17:15:45+08:002013-09-26T17:15:45+08:00

    因为有许多 NAT 设计方法,答案当然是“视情况而定”。Geoff Huston对各种 NAT 设计进行了出色的概述。

    根据我的经验,许多小型办公室/家庭办公室路由器不会将 > 64k 地址处理到同一地址,但这不仅仅是因为端口耗尽。许多内存有限,并且会在达到 64k 限制之前用完 NAT 表的 RAM。

    • 2
  3. Maximus
    2015-03-23T12:33:22+08:002015-03-23T12:33:22+08:00

    5) 我们的 LAN 是否会被限制为通过单个公共 IP 地址与外界的 65536 个(或其他一些理论上的限制)并发连接?

    不可以,因为一个端口 NAT IP 可以用于多个连接:

    cat /proc/net/ip_conntrack | grep 51380
    tcp      6 191 ESTABLISHED src=10.1.8.5 dst=17.133.254.23 sport=51380 dport=5223 src=17.133.254.23 dst=my.nat.pub.ip sport=5223 dport=51380 [ASSURED] mark=0 use=2
    tcp      6 24 CLOSE_WAIT src=10.1.26.1 dst=80.68.255.71 sport=51380 dport=80 src=80.68.255.71 dst=my.nat.pub.ip sport=80 dport=51380 [ASSURED] mark=0 use=2
    
    • 2
  4. JCM
    2017-02-14T04:04:21+08:002017-02-14T04:04:21+08:00

    长话短说,它严重依赖于平台、配置和实现。

    但让我快速解释一下:

    显然,其他答案表明理论限制达到> 65535(注意端口0通常是保留的),这在一定程度上可能是正确的,例如......:

    • 在大型CGNAT系统或类似的高级路由器中,其主要用途就是这个,包括NAT-PAT。
    • 在某些Linux 发行版中,在某些情况下(例如 ram > 1GB、内核准备就绪等)使用 PC 进行软件 NAT/通过 CPU 路由时,理论上可能是可行的。

    然而在现实世界中,硬件加速路由发生在资源有限的情况下,NAT 表有一个众所周知的限制,这通常是保护的配置参数。

    • 思科提到从 IOS 12 开始,最大 NAT 取决于 DRAM,导致大约 10K 的转换(源),低于您问题中的 65K。

    • 以你的旧xDSL路由器为例,如果你想在家里调出一个有很多连接的P2P,大多数都配置了1024~4096的全局最大限制。例如,我家中的高端 FTTH 路由器的 NAT 限制由供应商配置为 8K。

    最后,为了回答 Q2-rewrite,我看到了具有以下 NAT 表的RFC3489实现的产品。显然,最后一个确实大大限制了 NAT 的可能性:

    • iAddr:iPort - eAddr:ePort - dAddr:dPort(典型的对称 nat)
    • iAddr:port - eAddr:port - dAddr(非常低端的产品)

    喜欢这个答案的就点个赞吧!

    • 2
  5. g10guang
    2018-12-13T18:00:30+08:002018-12-13T18:00:30+08:00

    NAT映射表的主键:

    sourceIP:sourcePort + DestinationIP:DestinationPort
    

    我们可以将不同的 sourceIp:sourcePort 映射到同一个 DestinationIP:DestinationPort。所以端口号(2^16)不是连接的限制。

    • 0

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve