使用FTP时,访问控制列表(ACL)拒绝Oracle 12c ORA-24247网络访问

时间:2018-10-09 14:01:37

标签: oracle oracle12c acl ora-24247

我正在使用 Oracle Database 12c企业版12.2.0.1.0版-64位生产版本,并尝试使用ftp软件包(UTL_TCP)。步骤如下:

declare 
    l_conn UTL_TCP.connection;
    l_list ftp.t_string_table   := ftp.t_string_table(); 
begin
    l_conn := ftp.login('ftp.myhost.com', 21, 'user', 'password');
    ftp.nlst(p_conn => l_conn,p_dir  => 'outbox',p_list => l_list);
    ftp.logout(l_conn);
end;

ftp.nlst 引发错误。

我以这种方式配置了ACL:select * from dba_network_acls;返回

HOST           | LOWER_PORT | UPPER_PORT | ACL                   | ACLID            | ACL_OWNER
-----------------------------------------------------------------------------------------------
ftp.myhost.com |  null      | null       | /myaclspath/myacl.xml | 00000000800027C5 | SYS
*              |  null      | null       | NETWORK_ACL_5A1900... | 0000000080002724 | SYS

select * from dba_network_acl_privileges返回

ACL                   | ACLID            | PRINCIPAL | PRIVILEGE | IS_GRANT | INVERT | START_DATE | END_DATE | ACL_OWNER
------------------------------------------------------------------------------------------------------------------------
/myaclspath/myacl.xml | 00000000800027C5 | MYDBUSER  | resolve   | true     | false  |            |          |SYS
/myaclspath/myacl.xml | 00000000800027C5 | MYDBUSER  | connect   | true     | false  |            |          |SYS

我读到类似的错误here,并将ACL的设置检查为here,但我无法弄清为什么登录后拒绝访问网络。

在此表示感谢。

1 个答案:

答案 0 :(得分:0)

为他人的利益回答我自己的问题。

查看找到的步骤here我检查了ftp包,并意识到每个“命令”在执行前都会发送PASV。在这种情况下,PASV更改通过登录建立的连接。

由于 ftp.myhost.com 的ACL,登录成功,但是以下每个ftp命令均失败,因为它不是作为 ftp.myhost.com 发送,而是作为< strong> 111.222.333.444 ,即相对IP。为IP添加ACL可解决ORA-24247错误。

我的解决方案被明确提到here,我的错是不仔细检查正确的文档,但我想在此分享这个问题。