• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

SecPath F1000-C8150(V7)外网访问内网ftp服务器首次连接无法成功

2020-03-24 发表
  • 0关注
  • 0收藏 2359浏览
郭尧 七段
粉丝:3人 关注:36人

组网及说明

公网-F1000-核心-ftp服务器


防火墙作出口,进行源目地址转换,实现外网访问内部服务器

问题描述

外网访问内网FTP服务器时,FTP软件首次连接被拒绝,需要刷新重连才可以连接成功

过程分析

收集防火墙诊断信息,查看外网口接口配置,nat server端口映射内网FTP服务器,配置如下:

interface GigabitEthernet1/0/2

 port link-mode route

 description 电信固定外网

 mtu 1460

 ip address 220.160.54.204 255.255.255.192

 ip address 220.160.54.220 255.255.255.192 sub

 tcp mss 1280

 nat outbound

 nat server protocol tcp global 220.160.54.204 9091 inside 192.168.0.226 21 rule jf双向 counting

  gateway 220.160.54.254

接口配置可以看到FTP服务器的端口已经被修改为9091,FTP的缺省端口号为2021

在首次访问过程中查看防火墙会话信息,会话能够正常建立,但是回包报文丢了一个


nat server地址转换其实生效了的,下面来分析一下FTP原理:

首先FTP有主动模式和被动模式的区别,第一种主动模式分析:

主动模式的工作原理是FTP客户端向服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号。当需要传输数据时,服务器通过TCP20端口与客户端的临时端口建立数据传输通道,完成数据传输,这个临时端口是由P1*256+P2算出来的。PORT命令主要发送的就是这个参数,格式为(x,x,x,x,p1,p2x,x,x,x为服务器IP,而p1,p2是服务器随机生成的参数。

此时我们发现,如果客户端的数据连接的端口号是变化的,而服务器被NAT设备挡在里面,服务器知道这个端口号,而NAT设备不知道,若不改变FTP的端口号,这时候NAT设备收到的报文是源端口为新算出端口号,而数据连接的第一个源端口号是20的报文,此时无法将报文通过路由器送到客户端的,因为没这个NAT Session,这种是主动模式的情况。

第二种PASV模式分析:

前面的控制连接基本一样,不同在于控制连接最后一个报文,FTP服务器将PORT参数发送给客户端,然后客户端使用这个参数计算的临时端口号向内网发起数据连接。同样的NAT设备如果不知道修改过后的FTP服务端口,那么就无法通过ALG计算出客户端使用的临时端口,生成NAT Session

NAT ALG的工作原理是,在FTP的主动模式,最后一个控制连接的报文发送的时候,检查报文的PORT命令,将PORT的参数生成的新端口号拿出来,生成NAT Session。这有个前提条件是,NAT ALG必须要认识这个报文是FTP的控制连接,而分辨出这个报文的依据是端口号,所以在目的端口号是21的报文,我们认为是FTP服务, NAT ALG才能正常工作。如果我们将FTP端口号修改,那么在建立数据连接的时候就会出现问题。  

解决方法

通过以上分析,我们已经知道为什么不能建立数据连接的原因,是因为我们不能认识已经被修改控制连接端口号FTP的报文,NAT ALG无法正常工作,我们现在如果能够让路由器也能够认识到FTP的控制连接报文,那么问题将得到解决,防火墙可以通过配置通用端口来实现这个需求,如下:

port-mapping

port-mapping命令用来配置通用端口映射。

undo port-mapping命令用来删除指定的通用端口映射。

【命令】

port-mapping application application-name port port-number [ protocol protocol-name ]

undo port-mapping application application-name port port-number [ protocol protocol-name ]

【缺省情况】

各应用层协议与其对应的知名端口号映射。

【视图】

系统视图

【缺省用户角色】

network-admin

context-admin

【参数】

application application-name:指定端口映射的应用层协议。application-name表示应用协议名称。为1~63个字符的字符串,不区分大小写,不允许为系统保留的“invalid”和“other”。该应用层协议名称必须标准且能够被设备识别。

port port-number:指定与应用层协议映射的端口。port-number表示端口号,取值范围为0~65535。

protocol protocol-name:指定应用层协议使用的传输层协议名称,其取值及含义如下:

·            dccp:表示DCCP(Datagram Congestion Control Protocol,数据报拥塞控制协议)协议。

·            sctp:表示SCTP(Stream Control Transmission Protocol,流控制传输协议)协议。

·            tcp:表示TCP协议。

·            udp:表示UDP协议。

·            udp-lite:表示UDP-Lite协议。

【使用指导】

若不指定protocol参数,则表示所有传输层协议的指定报文均可被识别为指定应用层协议的报文。

如果报文的目的端口号与某个通用端口映射匹配,则该报文将被识别为相应的应用层协议报文。

对于端口号、传输层协议参数均相同但是应用层协议名称不相同的两个配置,新的配置会覆盖原有的配置。

指定传输层协议名称的映射优先级高于不指定传输层协议名称的映射。

【举例】

# 建立端口9091到FTP协议的通用端口映射。

<Sysname> system-view

[Sysname] port-mapping application ftp port 9091

该案例对您是否有帮助:

您的评价:1

若您有关于案例的建议,请反馈:

作者在2020-03-24对此案例进行了修订
0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作