内容提要:

    本篇文章介绍一下网络地址翻译(NAT) 中的四种地址概念: inside local address, inside global address, outside local address, outside global address.

    从字面上看,地址可以被分成两类:inside(内), outside(外). 内和外是根据 NAT 功能定义的。具有 NAT 功能的设备像一座桥连接了内部网与外部网,连接内部的接口卡称为“inside”, 连接外部的接口卡称为“outside”, 即 inside 地址是给内网中的设备使用的, outside 地址是给外网中的设备使用的。
    地址也可以被分成 local, global 两类。 Local 地址是内网上的设备所能看到和使用的地址;global 地址是外网设备所能看到和使用的地址。
    我们看看这四种地址:
inside local address, 内网中设备所使用的 IP 地址,此地址通常是一个私有地址;
inside global address, 公用地址,通常是 ISP 所提供的,由内网设备与外网设备通信时所使用到;
outside local address, 外网中设备所使用的地址,这个地址是在面向内网设备时所使用的,它不一定是一个公网地址;
outside global address, 外网设备所使用的真正的地址;
    从内网中设备上发出的 IP 包是以“inside local address” 作为源地址,以“outside local address” 作为目的地址。当数据包到达 NAT 设备的 “inside” 接口后,地址分别被翻译成 “inside global address” 和 “outside global address” 并从 “outside” 接口送出。
    同样,从外网设备上发出的 IP 包以 “outside global address” 作为源地址,以 “inside global address” 作为目的地址。当数据包到达 NAT 设备的 “outside” 接口后,地址分别被翻译成 “outside local address” 和 “inside local address” 并从 “inside” 接口送出。
理解NAT中四类地址的含义_NAT
我们举个几个例子:
理解NAT中四类地址的含义_职场_02

    内网地址是 10.10.10.x 网段的地址,外网地址是 171.16.68.x 的地址。路由器行使NAT 功能,它的 S0 口接内网, S1 口接外网。
    内网的设备 10.10.10.1 需要和外网通信,它所使用的外网地址是 171.16.68.5; 换句话说,当路由器从外网收到一个去 171.16.68.5 的数据包时,它知道要数据包实际是要送给 10.10.10.1 的。我们看到,由于外网地址和内网地址没有冲突,因此对外网设备 171.16.68.1 来说,它的地址不需要再做翻译了,即 outside local address 等于 outside global address. 这种情况包括了大部分的 NAT 应用,即只翻译 inside 方地址,而不需要翻译 outside 地址。
    NAT 设备中应该维护一张类似于下表的地址映射:

    Inside Global

    Inside Local

    Outside Local

    Outside Global

    171.16.68.5

    10.10.10.1

    171.16.68.1

    171.16.68.1

理解NAT中四类地址的含义_休闲_03

第二种情况是翻译外网机器的地址,这种方式并不常用,因为这样会导致私有地址路由泄漏到公网上。但这个例子可以加深对 NAT 的理解。
    这里 NAT 设备对外网进来的包的源地址做翻译,翻译成与内网地址在同网段的地址。即外部机器 172.16.68.1 在内部机器看来是 10.10.10.5

    Inside Global

    Inside Local

    Outside Local

    Outside Global

    10.10.10.1

    10.10.10.1

    10.10.10.5

    171.16.68.1

理解NAT中四类地址的含义_NAT_04

最后一种可能是对内网机器和外网机器都要做地址翻译,此时通常两部分的地址有冲突或重叠。因此 NAT 设备对数据的源和目的都做了地址翻译。在这种情况下,双方看到的地址都不是对方的真实地址。

    Inside Global

    Inside Local

    Outside Local

    Outside Global

    171.16.68.5

    10.10.10.1

    10.10.10.5

    171.16.68.1

理解NAT中四类地址的含义_NAT_05

    通过这三个例子,我们可以了解到: NAT 中的 “local” 和 “global” 的含义, Local 是对内网设备看到的,无论是 inside local 还是 outside local; global 是对外网设备看到的。针对不同的 NAT 配置, inside local address 和 outside local address 可能一样,也可能不一样。 global address 也是如此。

 

 

简单理解

对于网络地址转换的理解核心在于搞清楚NAT术语中所提到的四个地址。事实上,所有的地址转换工作就是在对这四个地址进行反复的变化。因此下面的例子用十分形象和生活化的内容来解释了四个地址之间的关系。

四个术语的内容:
inside local(内部本地地址)
inside global(内部全局地址)
outside local(外部本地地址)
outside global(外部全局地址)

对于这四个地址的解释如下:

inside local(内部本地地址):在自有网络中分配给私有主机的地址,一般情况下该地址是RFC1918中定义的私有地址。inside local地址的特点是只会出现在自有网络中并且一定是给私有主机使用的。

inside global(内部全局地址):私有主机在非自有网络中使用的地址,通常情况下inside global地址是从合法的全球统一可寻址空间中分配的地址,也就是通常所说的共有IP。inside global地址的特点是只会出现在非自有网络中并且一定是给私有主机使用的。

outside local(外部本地地址):非私有主机在自有网络内表现出来的IP地址。该地址是自有网络的管理员为本网络以外的设备所准备的用于在自有网络内使用的 IP地址。outside local地址的特点是只会出现在自有网络内但是是供给非私有主机使用的。

outside global(外部全局地址):非私有主机在自有网络以外的区域使用的IP地址,是非私有主机所在网络的管理员负责管理个分配的。outside global地址的特点是不会出现在自有网络中而且不是给私有主机使用,不归自有网络的管理员负责。

 

为便于理解采用如下例子:
inside local自己在家里穿的拖鞋
inside global自己上班时穿的皮鞋
outside local朋友到家里访问给朋友准备的拖鞋
outside global朋友自己的鞋,随便是他的拖鞋或是皮鞋

inside代表自己,outside代表别人,local代表自己家,global代表外面。

inside local就是自己在家里活动的时候肯定需要穿拖鞋,这个拖鞋就相当于IP地址,可以看出来这种地址不会穿在别人脚上,而且不会在家里以外的地方去穿。

inside global就是自己上班时肯定要穿的皮鞋,这个皮鞋一定是给自己穿的,但是一定不会在家里穿而是要在外面穿。 outside local就是别人来家里访问的时候自己给这个客人准备的拖鞋,因此不会出现在外面,而且也不会是自己穿。

outside global别人自己的鞋,无论是拖鞋还是皮鞋反正不会出现在自己家里,也不会是自己穿。

所 以insdie local地址一般都是私有地址,inside global地址多数情况下是共有地址但是在解决地址交叉问题时也可能是私有地址,outside local地址并不固定因为只是外部主机在自有网络的代表所以私有和公有地址都可以,outside global地址和自己没有任何关系所以私有或公有地址也都可以。

注释:
自有网络:归自己管理,进行IP规划的网络
私有主机:属于自有网络的主机