通过路由器的 NAT 功能解决 IP 地址短缺问题

2017-03-21 12:29:43 +08:00
 natforum
以下内容转自维基百科

#概述#

无 NAT 网络,假设每个接入子网都需要一组 /24 的 IP ,而且还能对外连接,对外的路由至少要保留或申请 1000 个对外 IP

带 NAT 网络,通过 NAT 转换,接入子网可以使用私用 IP ,对外连接时由路由绑定私用 IP 与对外 IP 的关系,修改传输的 IP 包上的地址,从而只需要 255 个对外 IP 就能满足内部接入子网的对外连接需求

1990 年代中期, NAT 是作为一种解决 IPv4 地址短缺以避免保留 IP 地址困难的方案而流行起来的。网络地址转换在很多国家都有很广泛的使用。所以 NAT 就成了家庭和小型办公室网络连接上的路由器的一个标准特征,因为对他们来说,申请独立的 IP 地址的代价要高于所带来的效益。

在一个典型的配置中,一个本地网络使用一个专有网络的指定子网(比如 192.168.x.x 或 10.x.x.x )和连在这个网络上的一个路由器。这个路由器占有这个网络地址空间的一个专有地址(比如 192.168.0.1 ),同时它还通过一个或多个因特网服务提供商提供的公有的 IP 地址(叫做“过载” NAT )连接到因特网上。当信息由本地网络向因特网传递时,源地址被立即从专有地址转换为公用地址。由路由器跟踪每个连接上的基本数据,主要是目的地址和端口。当有回复返回路由器时,它通过输出阶段记录的连接跟踪数据来决定该转发给内部网的哪个主机;如果有多个公用地址可用,当数据包返回时, TCP 或 UDP 客户机的端口号可以用来分解数据包。对于因特网上的一个系统,路由器本身充当通信的源和目的地址。

流行在网络上的一种看法认为, IPv6 的广泛采用将使得 NAT 不再需要,因为 NAT 只是一个处理 IPv4 的地址空间不足的方法。

#基本网络地址转换#

这一种也可称作 NAT 或“静态 NAT ”。它在技术上比较简单一点,仅支持地址转换,不支持端口映射。 Basic NAT 要求对每一个当前连接都要对应一个公网 IP 地址,因此要维护一个公网的地址池。宽带( broadband )路由器通常使用这种方式来允许一台指定的设备去管理所有的外部链接,甚至当路由器本身只有一个可用外部 IP 时也如此,这台路由器有时也被标记为 DMZ 主机。

基本 NAT 要维护一个无端口号 NAT 表,结构如下。

内网 IP 外网 IP
192.168.1.55 219.152.168.222
192.168.1.59 219.152.168.223
192.168.1.155 219.152.168.224

#网络地址端口转换( NAPT )#

这种方式支持端口的映射,并允许多台主机共享一个公网 IP 地址。

支持端口转换的 NAT 又可以分为两类:源地址转换和目的地址转换。前一种情形下发起连接的计算机的 IP 地址将会被重写,使得内网主机发出的数据包能够到达外网主机。后一种情况下被连接计算机的 IP 地址将被重写,使得外网主机发出的数据包能够到达内网主机。实际上,以上两种方式通常会一起被使用以支持双向通信。
NAPT 维护一个带有 IP 以及端口号的 NAT 表,结构如下。

内网 IP 外网 IP
192.168.1.55:5566 219.152.168.222:9200
192.168.1.59:80 219.152.168.222:9201
192.168.1.59:4465 219.152.168.222:9202

最近做了一个有关 NAT 技术交流的社区 http://natforum.com

网站使用开源的 Nodebb ( https://github.com/NodeBB/NodeBB
数据库 Couchdb ( https://github.com/apache/couchdb
主题 Google Material Design ( https://github.com/pichalite/nodebb-theme-material
2196 次点击
所在节点    分享创造
2 条回复
strwei
2017-03-21 12:37:47 +08:00
不错,赞个
noli
2017-03-23 16:41:12 +08:00
已注册并提问。祝推广成功并大热。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349091

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX