网络拓扑
NAT ALG(应用层网关)的主要作用,是解决特定应用协议在穿越NAT后无法正常通信的问题,FTP 便是典型例子。
FTP 传输数据时,会根据主动模式或被动模式建立数据通道:
-
主动模式:客户端通过控制通道发送 PORT 命令,命令中携带客户端自身开放的 TCP 端口。服务器收到后,向该端口发起数据通道连接。
由于 PORT 命令中的 IP 地址和端口位于应用层,普通 NAT 无法感知,需由 NAT ALG 解析并替换为对应的公网地址和映射端口,确保服务器能正确连接。主动模式一般配置
nat alg ftp即可 -
被动模式:客户端先通过控制通道发送 PASV 命令,服务器返回响应报文,其中包含服务器开放的用于数据传输的 TCP 端口(若为非标准端口,需配置port-mapping)。随后客户端主动向该端口建立数据通道。
在该模式下,NAT ALG 主要负责解析 PASV 响应中的服务器端地址和端口信息,并进行必要的地址转换,保证客户端能够通过公网地址正常访问。被动模式非标准FTP端口配置
nat alg ftp还需要配置port-mapping
R1关键配置
# 开启应用层修改的能力
nat alg ftp
#
interface GigabitEthernet0/0
ip address 200.1.2.1 255.255.255.0
nat outbound
# 映射内网FTP 20 21端口
nat server protocol tcp global current-interface 2121 inside 10.10.10.2 21
nat server protocol udp global current-interface 2120 inside 10.10.10.2 20
# 配置 port-mapping 应对FTP非标准端口的情况
port-mapping application ftp port 2121 protocol TCP host ip 10.10.10.2
port-mapping application ftp-data port 2120 protocol UDP host ip 10.10.10.2
正常效果
没有配置ALG效果
undo port-mapping application ftp port 2121 protocol TCP host ip 10.10.10.2
undo port-mapping application ftp-data port 2120 protocol UDP host ip 10.10.10.2
能连接到FTP服务器 但是远程文件夹无法显示