PHP Curl FTPS 隐式传输被防火墙拒绝

问题描述

我在通过 FTPS 将数据隐式传输到 CoreFTP 服务器时遇到问题。 如果脚本在具有外部 IP 的服务器上执行,则该脚本可以正常工作。然而,在我们的部署中,服务器位于防火墙后面,只有一个内部 IP。

我为 Curl 设置了以下标志

$options = array(
            CURLOPT_USERPWD        => $username . ':' . $password,CURLOPT_SSL_VERIFYPEER => false,// don't verify SSL
            CURLOPT_SSL_VERIFYHOST => false,CURLOPT_FTP_SSL        => CURLFTPSSL_ALL,// require SSL For both control and data connections
            CURLOPT_FTPSSLAUTH     => CURLFTPAUTH_DEFAULT,// let cURL choose the FTP authentication method (either SSL or TLS)
            CURLOPT_UPLOAD         => true,CURLOPT_PORT           => $port,CURLOPT_TIMEOUT        => 30,//CURLOPT_HTTPHEADER     => array("REMOTE_ADDR: EXTERNAL FIREWALL IP","HTTP_X_FORWARDED_FOR: EXTERNAL FIREWALL IP"),CURLOPT_FTP_CREATE_MISSING_Dirs => true,CURLOPT_VERBOSE        => true,CURLOPT_STDERR         => $fp,

我尝试将标头设置为具有外部 Ip 的防火墙,但这不起作用。防火墙为我们的内部 IP 开放了所有端口。

Curl 日志如下所示:

*   Trying 123.456.789.123:4423...
* Connected to xx.net (123.456.789.123) port 4423 (#0)
* successfully set certificate verify locations:
*  xxx
* SSL connection using TLSv1.2 / AES128-SHA256
* Server certificate:
*  xxx
*  220 Core FTP Server Version 1.2,build 589.38,64-bit Registered
 USER xxx
 331 password required for xxx
 PASS xxx
 230-Logged on
 230 
 PBSZ 0
 200 PBSZ set to PBSZ 0
 PROT P
 200 PROT command OK.  Using private data connection.
 PWD
 257 "/" is current directory
* Entry path is '/'
 CWD /
* ftp_perform ends with SECONDARY: 0
 250 CWD command successful
 CWD ftps
 250 CWD command successful
 CWD NotarealpersonTesting2222222206082021
 550 CWD Failed,path not found
 MKD NotarealpersonTesting2222222206082021
 250 MKD command successful
 CWD NotarealpersonTesting2222222206082021
 250 CWD command successful
 EPRT |1|10.153.43.11|43665|
 502 Command unkNown or not supported...
* disabling EPRT usage
* Hostname 10.153.43.11 was found in DNS cache
 PORT 10,153,43,11,145,192
 200 PORT command successful
* Connect data stream actively
 TYPE I
 200 MODE set to I
 STOR TestingNotarealpersonSummary.pdf
 150 STOR command started
* Preparing for accepting server on data port
* Checking for server connect
* Data conn was not available immediately
* Checking for server connect
* Checking for server connect
* Ctrl conn has data while waiting for data conn
 550 STOR Failed...
* Remembering we are in dir "/ftps/NotarealpersonTesting2222222206082021/"
* Connection #0 to host xxx.net left intact

如您所见,连接成功,可以创建目录。该问题仅影响文件传输,因为 PORT 命令发布内部服务器 IP。我相信如果要发布外部服务器 IP,这可能会解决问题。我可以设置任何标志以便 Curl 使用外部防火墙 IP 吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...