网络地址转换如何在我的路由器上工作?

网络工程 路由器 纳特
2021-07-19 22:03:03

我是网络新手,从 Tannenbaum 那里学到了一些快速的教训。

我在玩我的路由器,发现路由器为我的设备分配了一个 192.168.178.x 范围内的 IP 地址。但是,公共 IP 地址有所不同,我可以通过 www.whatismyip.com 找到。

问题是路由器如何知道哪个设备(笔记本电脑 1 或笔记本电脑 2)将查询发送到外部服务器,因为外部服务器只回复我的公共 IP 地址,而路由器必须将响应路由到发送的设备请求。

我阅读了 NAT(网络地址转换),但在我的路由器手册中找不到任何参考资料。是否真的是 NAT 在为 IP 地址做查找表,还是在路由器中运行其他一些准备查找表的软件,即进行转换?

1个回答

NAT(网络地址转换)是一种旨在延长 IPv4 寿命的方法。如果没有它,我们将在多年前(而不是最近发生的情况)完全耗尽 IPv4 地址。不幸的是,NAT 打破了端到端连接的 IP 模型,其中每个设备都有一个唯一的 IP 地址。

NAT 的核心是简单地将 IP 数据包上的源地址和目标地址中的一个或两个转换为不同的地址。NAT 有多种变体。用于允许具有私有地址的网络上的设备使用单个公共地址的常见版本称为 NAPT(网络地址端口转换)。

NAT 可用于不同的设备类型,但最方便的是在将专用网络连接到公共 Internet 的防火墙或路由器上运行 NAT 进程。运行 NAT 不是防火墙或路由器的要求,但这通常是运行它的合乎逻辑的位置。

NAPT 查看从内部到外部的数据包的源第 3 层和第 4 层地址,然后在 NAT 表中创建或更新一个条目,并在转发之前将源第 3 层和第 4 层地址替换为不同的地址。数据包。

当一个报文带着NAT设备的三层目的地址从外面进来时,NAPT查看目的三层和四层地址,在NAT表中查找,确定是哪三层和哪一层-4 address 用于替换目标地址,然后替换这些地址并将数据包转发到内部。NAT 丢弃任何有 NAT 表条目的数据包。

NAT 表条目将超时,或者在某些情况下使用 TCP,将在连接结束时清除。

NAPT 检查源地址和目标地址以创建特定对话的 NAT 表条目很重要。这有助于防止不属于对话的外部主机向内部主机发送不需要的数据包。

数据包上的源地址和目的地址都必须与 NAT 表条目匹配,然后才能允许数据包从外到内。这意味着只有内部主机才能发起对话,因为没有可供外部主机发起对话的 NAT 表条目。这带来了端口转发的概念,它本质上创建了一个永久的 NAT 表条目,以便允许外部主机与内部主机发起对话。


有关 NAT 的更多信息,您可以查看RFC 3022,传统 IP 网络地址转换器(传统 NAT)