Cisco IOS®软件版本11.2(13)和11.3(3)引入了网络地址转换(NAT)功能,以支持非标准文件传输协议(FTP)端口号。在早期的Cisco IOS软件发布中,当支持NAT的路由器收到NAT转换IP地址的信息包,并且标准的TCP端口号提供给FTP控制连接(21)时,路由器将把信息包当作FTP信息包,并且在信息包有效载荷(数据部分)中进行必要的转换。然而,如果FTP服务器正在使用非标准的FTP端口号,那么NAT可以忽略信息包的有效载荷。这会阻止建立FTP数据连接。
要支持使用非标准 FTP 端口号,必须使用 ip nat 服务命令。下表介绍了此命令上可用的选项:
选项 | 定义 |
---|---|
列表 | 指定描述全局地址的访问列表。 |
名称 | 服务器本地地址的访问列表名称。 |
号码 | 全局地址的访问列表编号。 |
ftp | FTP协议。 |
tcp | TCP协议。 |
端口 | 特殊非标准端口。 |
端口号 | 特殊非标准端口的数量。 |
以下是一个示例语法:
router-6(config)#ip nat service list 10 ftp tcp port 2021
需要注意的一些重要事项:
上述命令中的访问控制列表地址必须匹配供FTP服务器(带非标准的FTP控制端口)使用的内部本地IP地址。
如果已为FTP服务器配置非标准的FTP控制端口,NAT则停止检查使用端口21(供FTP服务器使用)的FTP控制连接。所有其他FTP服务器继续正常运行。
一台带由使用非标准控制端口FTP服务器的主机还可以拥有一个使用标准FTP控制端口(21)的FTP客户端。
如果FTP服务器同时使用端口21和非标准端口,那么您需要使用ip nat service list <acl> ftp tcp <port> 命令配置这两个端口。例如:
ip nat service list 10 ftp tcp port 2021 ip nat service list 10 ftp tcp port 21
但是,不能为同一端口和同一服务配置多个访问列表。例如:
router-6(config)#ip nat service list 17 ftp tcp port 2021 router-6(config)#ip nat service list 10 ftp tcp port 2021 % service "ftp tcp port 2021" is already configured for access-list 17
本文档没有任何特定的要求。
本文档中的信息基于以下软件和硬件版本:
思科IOS软件版本11.2(13)、11.3(3)及更高版本
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
在下面的每一示例中,NAT当作FTP控制连接处理的数据流在这些配置后面的表中有所描述。在每张表中,“任何本地地址”指那些不等于10.1.1.1 的所有地址。
假设这些FTP服务器在本地网络中运行:
IP地址为10.1.1.1的FTP服务器,运行在TCP端口号2021上。
IP地址为“any”(10.1.1.1除外)的TCP端口号为21的其他FTP服务器。
ip nat service list 10 ftp tcp port 2021 access-list 10 permit 10.1.1.1
源地址 | 源 TCP 端口 | 目标地址 | 目的 TCP 端口 |
---|---|---|---|
任何本地地址 | 任何端口 | 10.1.1.1 | 2021 |
任何本地地址 | 任何端口 | 任何本地地址(请参阅注意) | 21 |
10.1.1.1 | 任何端口 | 任何本地地址(请参阅注意) | 21 |
注意:任何本地地址均不等于10.1.1.1。
此列表描述了上表中详述的NAT过程:
第一行:当信息包带任意源地址,且端口编号指定到带目的TCP端口2021的FTP服务器(10.1.1.1)时,它需要对NAT有效载荷进行必要的转换。
第二行:当信息包带任意源地址,且端口编号指定到带目的TCP端口21(通常时FTP控制端口)的本地地址(10.1.1.1除外)时,它需要对NAT有效载荷进行必要的转换。因此,启用在典型端口21上运行的所有FTP服务器(10.1.1.1除外),以便进行负载的必要NAT转换。
第三行:当信息包来源于10.1.1.1,且其端口编号指定到带目的TCP端口21的任何本地地址(10.1.1.1除外)时,它需要进行必要的NAT有效载荷转换。
假设这些FTP服务器在本地网络中运行:
IP地址为10.1.1.1的FTP服务器,在TCP端口21和2021上运行。
IP地址为“any”(10.1.1.1除外)的TCP端口号为21的某些FTP服务器。
ip nat service list 10 ftp tcp port 21 ip nat service list 10 ftp tcp port 2021 access-list 10 permit 10.1.1.1
源地址 | 源 TCP 端口 | 目标地址 | 目的 TCP 端口 |
---|---|---|---|
任何本地地址 | 任何端口 | 10.1.1.1 | 2021 |
任何本地地址 | 任何端口 | 10.1.1.1 | 21 |
任何本地地址 | 任何端口 | 任何本地地址 | 21 |
任何本地地址 | 任何端口 | 任何本地地址 | 21 |
此列表描述了上表中详述的NAT过程:
第一行:当信息包带任意源地址,且端口编号指定到带目的TCP端口2021的FTP服务器(10.1.1.1)时,它需要对NAT有效载荷进行必要的转换。
第二行:当信息包带任意源地址,且端口编号指定到带目的TCP端口21的FTP服务器(10.1.1.1)时,它需要对NAT有效载荷进行必要的转换。
第三行:当信息包带任意源地址,且端口编号指定到带目的TCP端口21(通常为FTP控制端口)的本地地址时,它需要对NAT有效载荷进行必要的转换。因此,启用在典型端口21上运行的所有FTP服务器,以便对负载进行必要的NAT转换。
第四行:当信息包来源于10.1.1.1,且其端口编号指定到带目的TCP端口21的任何本地地址时,它需要对NAT有效载荷进行必要的转换。
假设这些FTP服务器在本地网络中运行:
IP地址为10.1.1.1的FTP服务器,在TCP端口号21上运行。
TCP端口号2021上IP地址为10.1.1.0/24(10.1.1.1除外)的FTP服务器。
ip nat service list 10 ftp tcp port 2021 access-list 10 deny 10.1.1.1 access-list 10 permit 10.1.1.0 0.0.0.255
源地址 | 源 TCP 端口 | 目标地址 | 目的 TCP 端口 |
---|---|---|---|
任何本地地址 | 任何端口 | 10.1.1.1 | 21 |
任何本地地址 | 任何端口 | 10.1.1.x(见附注) | 2021 |
10.1.1.x(见附注) | 任何端口 | 除10.1.1.x之外的任何地址(请参阅注意) | 21 |
注意:10.1.1.x不等于10.1.1.1。
此列表描述了上表中详述的NAT过程:
第一行:当信息包带任意源地址,且端口编号指定到带目的TCP端口21的FTP服务器(10.1.1.1)时,它需要对NAT有效载荷进行必要的转换。
注意:由于access-list中的deny 10.1.1.1语句,因此发往端口为2021的10.1.1.1的数据包没有NAT负载转换。
第二行:当信息包带任意源地址,且端口编号指定到带目的TCP端口2021的本地地址(10.1.1.1除外)时,它需要对NAT有效载荷进行必要的转换。
第三行:源自任何10.1.1.x(请参阅上表下的注释)(除10.1.1.1外)的数据包,其端口号发往任何地址(除10.1.1.x外)且目的TCP端口为21的地址,都需要对负载进行必要的NAT转换。
切记在为FTP服务器配置非标准FTP控制端口时,NAT终止为服务器提供端口21的FTP控制会话。如果FTP服务器同时使用标准和非标准端口,那么您需要使用ip nat service命令配置这两个端口。
TCP端口号为2021的FTP服务器10.1.1.1在内部网络上运行。配置NAT路由器的目的是:使FTP数据流能够进行网络地址转换(NAT),以控制端口2021上的连接。
网络图
配置:
interface Ethernet0 ip address 10.1.1.2 255.255.255.0 ip nat inside ! interface Serial0 ip address 192.168.10.1 255.255.255.252 ip nat outside ! ip nat service list 10 ftp tcp port 2021 ip nat inside source static 10.1.1.1 20.20.20.1 !--- Static NAT translation for inside local address 10.1.1.1 !--- to inside global address 20.20.20.1. ! access-list 10 permit 10.1.1.1
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
10-Aug-2005 |
初始版本 |