什么是NAT(网络地址转换)及其工作原理?

网络地址转换也称为NAT。NAT是一种通过中间设备(如防火墙、路由器、调制解调器等)更改IP地址和TCP端口号的过程或技术。NAT有不同的使用情况,但最流行的情况是对位于LAN的多个服务器和客户机使用单个WAN IP地址。

null

拓扑学

NAT一般有以下拓扑结构。NAT将发生在路由器上,从LAN发出的请求将转换为路由器的WAN IP地址。

NAT Topology
NAT拓扑

局域网IP地址

LAN IP地址是私有IP地址,如下所示。

  • 192.168.0.0 – 192.168.255.255
  • 172.16.0.0 – 172.31.255.255
  • 10.0.0.0 – 10.255.255.255

如果我们用 ipconfig 对于Windows或 ip address Linux命令我们将看到我们的IP地址在给定IP地址的范围内。这些LAN IP地址不能在internet上使用,因此我们需要一种新类型的IP地址而不更改LAN IP地址。

> ipconfig
LAN IP Address
局域网IP地址

广域网IP地址

广域网IP  地址被命名为公共IP地址。它们在因特网上使用,在下列地址之间编号,局域网IP地址除外

  • 0.0.0.1 – 255.255.255.255

我们可以用不同的方式检查我们的广域网IP地址,但如果我们有浏览器,谷歌是最实用的网元 what is my ip address

WAN IP Address
广域网IP地址

TCP和UDP端口

TCP和UDP协议用于主机或客户机与服务器之间的数据传输。在NAT期间,TCP和UDP端口号通常是变化的。因为每个TCP或UDP数据包都有一个源端口和目标端口。这些端口号将在NAT操作期间更改。

相关文章: 什么是DNS服务器或协议端口号?

NAT是怎么工作的?

现在我们来看看NAT  一步一步地工作。我们将使用以下拓扑和步骤进行描述。

NAT Topology
NAT是怎么工作的?

  • 首先,驻留在局域网中的客户机将创建一个数据包。包源和目标IP地址和端口号如下所示。
图片[5]-什么是NAT(网络地址转换)及其工作原理?-yiteyi-C++库

  • 当数据包到达路由器时,给定的源IP地址和端口号将被改变。源IP地址将是路由器的WAN IP地址。源端口号将由路由器随机设置或根据给定的配置进行设置。我们可以在红色框中看到改变的值。新的源IP地址将是 176.43.223.203 源端口号 3019 .
图片[6]-什么是NAT(网络地址转换)及其工作原理?-yiteyi-C++库
  • 此包将重定向到internet上的服务器。在服务器处理请求并为响应创建数据包之后,源和目标IP地址如下所示。
图片[7]-什么是NAT(网络地址转换)及其工作原理?-yiteyi-C++库
  • 当这个数据包到达路由器时,它将被NAT’ted或翻译成LAN,目的地IP地址和端口号将改变如下。目标IP地址将是 192.168.142.100 目标端口号为 2019 .
图片[8]-什么是NAT(网络地址转换)及其工作原理?-yiteyi-C++库

NAT类型

作为一种流行的机制,NAT可以在不同的情况下以不同的方式进行。

  • 静态地址转换
  • 动态地址转换
  • 超载

静态地址转换

如果我们想提供一个IP地址或端口完全进入一个局域网客户端IP地址和端口永久我们需要使用静态NAT的NAT配置将是静态的,不会改变。例如,我们可以通过NAT’ting它的端口80或443为一个网页或服务器提供服务。

相关文章: Linux Netstat命令及其示例

动态地址转换

动态NAT对于那些不向广域网提供任何服务而只使用internet的客户机来说非常有用。在动态NAT中,IP地址和端口在每个请求或会话中都会发生变化。不会有静态配置。

超载

重载用于静态地将单个WAN IP地址端口号重定向为多个IP地址端口号。这在只有一个WAN IP地址但需要NAT多个IP地址和服务器端口的情况下非常有用。

Linux下iptables的NAT配置

iptables是一种流行的网络工具,用于路由、NAT、阻塞网络流量。我们可以通过以下iptables配置为局域网启用NAT。我们指定 eth1 用于LAN接口。

$ sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享