需求:
内网FTP服务需要开放到外网访问,网关是华为AR2204路由器。

解决:
首先在内网分别测试主动连接,被动连接等,保证FTP服务正常是前提。
把复杂问题简单化处理的思路在很多地方都适用。

1。配置nat
interface GigabitEthernet0/0/0
nat server protocol tcp global current-interface 21202 inside 192.168.1.202 ftp
nat server protocol tcp global current-interface 2121 inside 192.168.1.21 ftp
#进入g0/0/0接口,配置nat端口映射。
#只配置这一步,外网并不能访问内网的FTP服务

2。开启报文穿透
nat alg ftp enable
#开启FTP穿透,有时候也叫使用FTP NAT
#到这一步可以尝试外网连接是否正常。
#我实际测试时有时可用,有时不能连接。

3。重点来了。
acl name GigabitEthernet0/0/0 2997
rule 5 permit
#这个ACL是默认的,允许所有,大家也可以根据实际需求定义自己的允许/拒绝规则。

port-mapping ftp port 2121 acl 2997
port-mapping ftp port 21202 acl 2997
#配置port mapping
#因为配置了NAT,设备并不知道端口2122是FTP报文,并不会做alg处理,所以导致FTP服务不能到内网请求,port mapping 正是将端口号指定为ftp服务。

4。思考?
假如我们只有如下一条nat,
nat server protocol tcp global current-interface ftp inside 192.168.1.21 ftp
此时是否不用做port mapping也能正常连接?
有条件的同学可以做个实验。