博主最近开发接口,需要和银行银行进行对接,博主公司服务器在非DMZ区,也就是NAT网络下,在运维兄弟的帮助下,进行了内外网的ip映射,成功打通了网络,其他的tcp协议,http协议接口测试都通过了,其中一个环节是向银行端FTP服务器上传文件,唯独这个不通,总是报socket connect time out错误,百思不得其解,经过大量的尝试后,几乎要放弃了。
博主就这样百度谷歌了大量的资料,也没有找到问题所在,最后干脆看源码,一行行进行debug,最后发现,ftp在hostname在登录前和登录后是不同的,然后就自己研究了下ftp协议,原来ftp上传下载文件,的确不是一步完成的,首先登录,建立了初步连接,后续的操作都是新创建socket进行通讯的,后续的hostname是第一次访问后返回的实际ip地址,但是博主的服务器是在nat网络中,这样就会导致第二次之后的访问不通,出现超时现象。当然了,此时大家会说,将服务器部署在DMZ区域,使用公网访问不就完了,但是问题就是不可以这样做。博主开始在apchace官网上看commos-net的修改历史,最后还真的找到了解决方案,在最新的3.6版本中,有一条关于net-588的错误修改,就是为了解决博主的问题,具体的解决过程,大家可以到apache官网进行查询,地址如下:https://issues.apache.org/jira/browse/NET-588
下面贴一下,具体的贴一下解决代码。
String ip = "10.37.195.3"; ftpClient.setPassiveNatWorkaroundStrategy(new FTPClient.HostnameResolver() { @Override public String resolve(String hostname) throws UnknownHostException { return ip; } private String ip; public HostnameResolver setIp(String ip) { this.ip = ip; return this; } }.setIp(ip));
代码具体的位置是在ftp登录完成之后,下载或者上传文件的之前。
相关推荐
2. NAT技术可能会限制某些应用程序的功能,例如FTP和视频流媒体等。 3. NAT技术可能会增加网络管理员的工作负担,例如配置和维护NAT设备等。 NAT技术是网络地址转换的一种常用方法,可以扩大内网中的IP地址空间,...
4. **FTP控制命令处理**:代码可能包含处理如USER、PASS、PORT、PASV等FTP命令的逻辑,这些命令在NAT环境中需要特殊处理。 5. **状态机设计**:为了跟踪FTP会话,可能有一个状态机来管理控制连接和数据连接的不同...
总之,NF_NAT_FTP是Linux内核为了保证FTP在NAT环境下的正常运行而设计的关键组件。通过对它的理解和应用,我们可以更好地管理和优化网络服务,确保用户能够高效、安全地进行文件传输。在不断发展的网络技术中,像NF_...
### 全方位攻略NAT及其在各种环境下的配置 #### 一、网络集成与NAT的概念 随着互联网技术的发展和普及,网络地址转换(Network Address Translation,简称NAT)成为了现代网络架构中不可或缺的一部分。NAT的主要...
被动模式下,服务器等待客户端发起连接,适用于通过NAT或防火墙环境的情况。 4. **安全增强**:虽然FTP本身不提供加密,但有FTPS(FTP over SSL/TLS)和SFTP(SSH File Transfer Protocol)等安全协议来加密传输,...
通过使用"nattypetester.exe"这样的程序,用户可以更好地理解自己的网络环境,从而解决因NAT设置导致的各种问题,提升网络体验。在日常使用中,我们应定期检查NAT类型和公网IP地址,确保网络服务的稳定性和可靠性。
- 中兴的NAT解决方案还支持端口转发,使得内部服务器可以通过特定端口对外提供服务,如FTP、HTTP等。 4. **NAT的工作流程** - 数据包从内部网络发送时,NAT设备会替换源IP地址和/或端口号,记录转换信息。 - 当...
1. **静态地址转换**:内部本地地址与内部合法地址之间进行固定的一对一映射,适用于内部服务器,如E-mail或FTP服务器,需要外部用户能够直接访问。 配置静态NAT的基本步骤包括: - 定义内部本地地址和内部合法...
而被动模式下,由客户端指定一个端口,服务器连接到这个端口进行数据传输,适合通过NAT和防火墙的环境。 FTP客户端的使用: 1. 登录:使用FTP客户端(如FileZilla、WinSCP)输入FTP服务器的地址、用户名和密码进行...
4. **外部本地IP地址**(Outside Local IP address):在NAT环境中的外部网络主机,可能也有自己的私有IP地址,但这不是NAT技术的重点。 #### 三、NAT的工作机制 NAT技术主要通过两种方式实现IP地址的转换: 1. *...
被动模式则是由客户端建立数据连接,解决了这些问题,更适应现代网络环境。 10. 配置与管理:FTP服务器的配置文件通常包括端口号、用户账户、日志记录、传输速率限制等设置。"ftp.rar_ftp"中的软件可能提供图形用户...
被动模式下,由客户端建立数据连接,以适应防火墙和NAT环境。 4. **命令处理**:FTP协议定义了一系列命令,如`USER`、`PASS`、`LIST`、`RETR`、`STOR`等,服务器需要解析并响应这些命令,执行相应的操作。 5. **多...
被动模式常用于防火墙或NAT环境,因为这样可以避免服务器发起的连接被拒绝。 在Linux系统中,FTP服务通常由vsftpd(Very Secure FTP Daemon)或其他类似的服务器软件提供。这些服务可以配置为匿名访问,即任何人都...
同时,它还支持被动模式,确保在防火墙或NAT环境下也能顺利传输文件。 在界面设计上,Andftp pro以简洁明了著称,提供直观的文件管理界面,用户可以轻松浏览远程服务器目录,进行文件的复制、粘贴、重命名、删除等...
被动模式则适用于防火墙或NAT环境,服务器会提供一个端口供客户端连接,以避免端口转发问题。 FTP服务器的配置是关键,管理员需要设置用户账户、权限、目录访问规则等。这可以通过配置文件或者图形界面管理工具来...
被动模式常用于防火墙或NAT环境,以解决端口转发问题。 3. **SSL/TLS加密**:为了确保数据传输的安全,许多FTP客户端支持SSL(Secure Sockets Layer)或TLS(Transport Layer Security)加密,提供FTPS或SFTP协议,...
7. **防火墙和路由器穿透**:某些FTP服务器软件支持PASV模式,以帮助用户在NAT或防火墙后也能正常进行FTP连接。 8. **性能优化**:通过缓存、并发连接限制等方式,优化服务器性能,应对高流量访问。 在选择FTP...
5. **重定向TCP流量到另一个TCP端口或地址**:配置NAT规则,将到达路由器的TCP流量重定向到内部网络中不同的端口或地址,这在提供服务时特别有用,例如Web服务器或FTP服务器。 6. **在网络过渡期间使用NAT**:在从...
在实际开发中,还可能涉及到更复杂的情况,如处理被动模式(用于防火墙或NAT环境)、断点续传、多线程FTP操作等。QFtp类提供了一整套API来处理这些需求,使得在QT环境中实现FTP功能变得相对简单和直观。 总之,QT中...