目录

简介

先决条件

要求

使用的组件

背景信息

目的

描述

配置

网络图

步骤

验证

故障排除

限制

简介

本文档介绍如何在Cisco IOS®路由器上配置网络地址转换(NAT)服务器负载均衡TCP流量。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。本文档适用于所有运行思科 IOS 的思科路由器和交换机。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

背景信息

目的

从外部Internet访问本地服务器的用户将使用单个URL或IP地址访问服务器，但NAT设备用于加载将用户流量共享到具有镜像内容的多个相同服务器。

描述

外部用户A和B使用外部可见IP地址172.16.2.3（服务器的虚拟IP地址）访问Web服务器的内容。 NAT路由器以轮询方式将发往172.16.1.3的流量转换为内部IP地址10.1.1.1、10.1.1.2和10.1.1.3，并将其转发到相应的服务器。从外部用户发起的每个新会话都将转换为下一个物理服务器IP地址。

配置

网络图

步骤

1. 用户A启动与虚拟服务器IP地址172.16.2.3的TCP连接。

2. NAT路由器在收到连接请求后创建NAT转换条目，该条目将分配下一个可用的实际服务器IP地址（例如10.1.1.1）。

3. NAT路由器用分配的实际IP地址替换目的IP地址并转发数据包。

4. 服务器接收数据包并回复源。

5. NAT路由器接收从服务器返回的数据包并执行NAT表查找。然后，路由器将源地址转换为虚拟服务器IP地址(172.16.2.3)并转发数据包。

6. 用户 — B启动与服务器虚拟IP地址172.16.2.3的TCP会话。在收到连接请求后，NAT路由器将其转换为下一个可用的实际服务器IP地址（例如10.1.1.2），然后将数据包转发到服务器。

由于静态NAT在另一个方向是双向的，因此数据包的目的地将被转换。执行这种形式的NAT时，会通过发送TCP数据包触发。发送互联网控制消息协议(ICMP)可能不会触发NAT转换。

非TCP流量会定向到池中的第一个地址。

与静态内部源NAT和静态内部源PAT不同，路由器不响应有关全局地址的ARP查询，除非该地址未分配给其接口。因此，可能需要将其添加到次接口等接口。不能使用此转换方法（例如80和1087）重定向端口。 端口必须匹配。

注意：NAT池IP地址与外部接口IP地址不必相同。为了说明这一点，本示例使用来自不同块172.16.2.x的IP地址，而不是实际接口IP子网172.16.1.x。

1. 定义包含实际服务器地址的地址池。
ip nat pool NATPOOL 10.1.1.1 10.1.1.3 prefix-length 24 type rotary

2. 定义允许虚拟服务器地址的访问列表。
access-list 1 permit host 172.16.2.3

3. 启用内部目标地址的动态转换。
ip nat inside destination list

pool

ip nat inside destination  list 1 pool NATPOOL

4. 定义NAT内部和外部接口。
Interface gig0/0

ip address 10.1.1.4 255.255.255.0

Ip nat inside

Interface gig0/1

ip address 172.16.1.1 255.255.255.248

Ip nat outside

当有人尝试访问IP地址172.16.2.3时，IP地址10.1.1.1、10.1.1.2和10.1.1.3将以循环方式分发

验证

为了检验这一点，请启动从外部主机到虚拟IP地址的多个TCP会话。调试IP NAT  t转换/show ip nat转换输出可用于验证。

Router#

Router#

*Jul 24 13:27:41.193: NAT*: s=192.168.1.1, d=172.16.2.3->10.1.1.3 [22864]

*Jul 24 13:27:41.196: NAT*: s=10.1.1.3->172.16.2.3, d=192.168.1.1 [18226]

Router#

*Jul 24 13:27:44.329: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35533]

*Jul 24 13:27:44.331: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14573]

*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35534]

*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35535]

*Jul 24 13:27:44.332: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35536]

*Jul 24 13:27:44.333: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14574]

*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14575]

*Jul 24 13:27:44.365: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14576]

*Jul 24 13:27:44.368: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35537]

Router#

*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35538]

*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35539]

*Jul 24 13:27:44.369: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35540]

*Jul 24 13:27:44.371: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14577]

*Jul 24 13:27:44.574: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14578]

Router#

*Jul 24 13:27:46.474: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14579]

*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35541]

*Jul 24 13:27:46.478: NAT*: s=192.168.2.1, d=172.16.2.3->10.1.1.1 [35542]

*Jul 24 13:27:46.479: NAT*: s=10.1.1.1->172.16.2.3, d=192.168.2.1 [14580]

Router#sh ip nat tr

Pro Inside global      Inside local       Outside local      Outside global

tcp 172.16.2.3:23      10.1.1.1:23        192.168.2.1:49703  192.168.2.1:49703

tcp 172.16.2.3:23      10.1.1.2:23        192.168.2.1:50421  192.168.2.1:50421

tcp 172.16.2.3:80      10.1.1.3:80        192.168.1.1:26621  192.168.1.1:26621

Router#

故障排除

目前没有针对此配置的故障排除信息。

限制

- 它无法检测组中的内部服务器是否发生故障。这意味着Cisco IOS始终会将流量转发到组中的服务器，而不管其运行状态如何。

- 它无法确定内部服务器的实际负载，因此无法有效执行负载均衡。