在我之前的分享中提到,我们在家里或者公司内部使用的IP地址是私有地址。这些地址在internet网中也就是公网中是不合法的地址,也就是说你如果使用一个私网地址是不可能登录到internet中浏览信息的。那么为什么我们的终端(电脑、手机)在家里或者公司中却可以登录到internet中浏览网页,观看视频呢?其实,这里面我们用到了NAT技术(Network Address Translation)网络地址转换技术。把我们的终端获取的私有地址,转换成公司的合法外网共有地址,从而进行网络数据交换。

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。

1、静态转换:是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

2、动态转换:是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

3、端口多路复用(Port address Translation,PAT):是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

以上信息摘自百度百科

在我们的日常工作中,通常一个公有的IP地址是很珍贵的,ISP也不会随意地发放。因此如果没有特殊业务需求,通常公司或者组织只会申请一个公网IP地址。因此在实际的应用环境中使用最多的是第3种,端口多路复用PAT,也就是一种多对一的转换。

我们这里就看一下,这种多对一的PAT转换是怎样在网络设备中进行设置的。

本例使用的Cisco的网络设备,模拟平台为GNS3.

通常进行NAT转换的设备是网络的边界设备,如路由器或防火墙,本例进行NAT转换的设备是路由器R1.

逻辑拓扑

PC1:192.168.10.2

PC2:192.168.20.2

R1和CoreSwitch之间运行OSPF路由协议

R1(公司或组织的外网路由器):

F1/0 口为内网接口ip 10.10.10.2/30

S0/0 口为外网internet接口 ip 202.10.10.2/30 这个是公网IP,也就是你们公司或组织向ISP申请的外网地址。

ISPRouter:S0/0 接口地址202.10.10.1/30

配置内容

1. R1 的端口IP配置:

interface Serial0/0

description to internet

ip address 202.10.10.2 255.255.255.252

interface FastEthernet1/0

no switchport

ip address 10.10.10.1 255.255.255.252

2. ISPRouter的端口IP配置:

interface Serial0/0

ip address 202.10.10.1 255.255.255.252

3. CoreSwitch的端口IP配置

interface FastEthernet1/0

ip address 10.10.10.2 255.255.255.252

这样基础的端口都已经配置完成,下面我们配置CoreSwitch和R1之间的路由打通。

1. CoreSwitch的OSPF配置如下:

router ospf 10

router-id 1.1.1.1

log-adjacency-changes

network 10.10.10.0 0.0.0.3 area 0

network 192.168.10.0 0.0.0.255 area 0

network 192.168.20.0 0.0.0.255 area 0

2. R1 的OSPF配置如下:

router ospf 10

router-id 2.2.2.2

log-adjacency-changes

redistribute connected subnets — 此命令是把R1直连的网段重发布到OSPF中即202.10.10.0/30

network 10.10.10.0 0.0.0.3 area 0

CoreSwitch 的路由表:

CoreSwitch#sh ip route

Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP

D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area

N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2

E1 – OSPF external type 1, E2 – OSPF external type 2

i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2

ia – IS-IS inter area, * – candidate default, U – per-user static route

o – ODR, P – periodic downloaded static route

Gateway of last resort is not set

C 192.168.77.0/24 is directly connected, Vlan77

C 192.168.10.0/24 is directly connected, Vlan10

C 192.168.20.0/24 is directly connected, Vlan20

10.0.0.0/30 is subnetted, 1 subnets

C 10.10.10.0 is directly connected, FastEthernet1/0

202.10.10.0/30 is subnetted, 1 subnets

O E2 202.10.10.0 [110/20] via 10.10.10.1, 00:00:03, FastEthernet1/0 — 这条就是R1重发布到OSPF的路由信息

至此CoreSwitch和R1之间的路由已经连通。

CoreSwitch#ping 202.10.10.2

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 202.10.10.2, timeout is 2 seconds:

!!!!!

注意:在R1中,作为公司或组织的边界路由器,这里定要有一条默认路由指向网关(ISP路由器),否则上internet的流量是无法转发去internet中的。

R1(config)#ip route 0.0.0.0 0.0.0.0 202.10.10.1

好了,下面我们进行NAT的配置。

1. 在R1中配置ACL ,匹配可以进行NAT转换的内网地址列表。

2. 在R1中配置NAT的出口端口

3. 在R1中的S0/0和F1/0 分别配置NAT的outside和inside

那么我们来看一下具体的配置:

① 配置ACL — 这里只允许192.168.10.0/24的网段IP地址可以转换成公网IP

ip access-list standard permitinternet

permit 192.168.10.0 0.0.0.255

② 开启在R1 的S0/0端口的NAT的PAT设置

全局模式下:ip nat inside source list permitinternet interface Serial0/0 overload

切记一定要跟上关键字overload,这样才能开启多对一的PAT转换。

③ 分别在S0/0和F1/0端口开始NAT

R1(config)#int s0/0

R1(config-if)#ip nat outside

R1(config-if)#int fa1/0

R1(config-if)#ip nat inside

这样所有的配置都已经完成,我们来看一下效果,

1. PC1 是在Vlan10 中也就是192.168.10.0/24的网络中,我们来ping一下internet 202.10.10.1

可以看到是可以访问internet的,那么它到底有没有进行地址转换呢?我们来在R1上通过show ip nat translation

命令查看一下。

我们可以看到192.168.10.2 被转化成了公网地址202.10.10.2 与202.10.10.1进行数据交换,说明我们NAT 已经转化成功,PC可以访问internet了。

那么我么在来看一下PC2 在Vlan20 192.168.20.0/24的网络中主机可否访问internet呢?

很明显,PC2所在网段192.168.20.0/24并不能访问internet。

因此我们看到我们可以通过NAT,来控制那些网段或者主机可以访问internet,从而进行流量和带宽的限制。把那些需要访问internet的流量或主机放过。

怎么样理解了么?这里再复习一下几个NAT的关键点。(仅针对Cisco网络设备)

1. NAT应用的地点是网络的边界设备(路由器或防火墙)

2. 配置ACL,来控制需要转换的地址列表。

3. 将NAT应用到外网出口,并在最后添加关键字overload

4. 将NAT功能应用到端口中,对内和对外。