NAT 和 SNAT\DNAT 有什么区别?

NAT 和 SNAT\DNAT 有什么区别?

按照主题中的问题,我猜测NAT与其他的有一点区别。

NAT 是否对整个私有网络进行转换,就像 SNAT\DNAT 对每个包进行转换一样?

谢谢。

答案1

“NAT”是各种转换的统称——通常它实际上是NAPT(也涉及传输层/L4端口号)。

源 NAT 转换源 IP 地址(和 L4 端口号),通常是在从私有 IP 地址连接到公共 IP 地址(“LAN 到 Internet”)时。路由器存储新创建的转换(“会话”)并以反向方式相应地处理响应。

目标 NAT 转换目标 IP 地址(可能还有 L4 端口),通常是在从公有 IP 连接到私有 IP 时(也称为端口转发、反向 NAT、暴露主机、“LAN 中的公共服务器”)。虽然入站映射是静态的,但返回流量也需要“会话”来查找原始源。

两种变体的工作原理非常相似,但通常在建立连接(或会话)的方式上有所不同。

答案2

DNAT:来自地址 IP 的流量被转发到特定的内部 IP。或将某些 IP 或端口的传入流量重定向到您选择的特定地址。

SNAT:匹配从特定网络(内部网络)到输出接口(用作匹配数据包的源的地址源,也是网络的输出地址)的所有流量。

答案3

NAT 是网络地址转换的缩写。SNAT 是源 NAT,即用于将源或内部网络方向的流量转换为公共网络或其他网络 IP 的 NAT。同样,DNAT 是目标 NAT,用于将来自外部公共网络或其他网络的流量转换为私有网络目标,执行 IP 地址转换。

答案4

正如其他地方提到的,NAT 代表网络地址转换,指的是几个相关的功能,其中包括一些涉及端口号转换的功能。

需要 NAT 的主要原因是私有网络(例如家庭网络和企业内部网络)。私有网络中的 IP 地址不是唯一的;相同的地址可以在任何其他人的私有网络中使用。因此,需要进行地址转换,以便私有网络内的主机可以与网络外的主机通信。

一般来说,NAT 会更改数据包中的本地地址,即传出数据包的源地址和传入数据包的目标地址。(在特殊情况下,它还可以执行其他操作,但这超出了本文的范围。)

RFC 中没有对 SNAT 和 DNAT 这两个术语进行定义,不同的人对它们有不同的理解。不过,以下是我认为最常见的定义。

SNAT 允许私有网络中的主机访问互联网中的公共服务。 它代表“源 NAT”,是一个误称。在 rfc-2663 中,它也被称为“传统 NAT”和“出站 NAT”。这是典型家用路由器默认提供的 NAT 功能,您拥有私有网络,无需任何特殊配置。它还会更改本地 TCP/UDP 端口号(因此通常称为网络地址和端口转换的 NAPT)。它允许多个主机共享网络的同一个公共 IP 地址。

DNAT允许私网外的主机访问私网内的公共服务。 它代表目标 NAT,这又是一个误称。这也可以由典型的家用路由器提供,但您必须设置它并知道自己在做什么。通常它不会更改 TCP/UDP 端口号,因为这标识了正在使用的服务(例如,TCP 端口 80 用于 Web 服务器。)

引入 NAT 是因为我们的 IP 地址用完了,所以我们被迫采用私有网络,以避免家庭或企业网络上的每台设备都消耗一个全球公共 IP 地址。

相关内容