我有一个 FS 服务器在一台服务器上运行,在一台远程服务器上我有一个 Node JS 实例使用 node_esl(一个用于 FS 的 Node JS 事件套接字库)控制它。
每次我向服务器发送请求时都会出现以下错误:
[WARNING] mod_event_socket.c:2603 IP ::ffff:192.168.59.3 Rejected by acl "loopback.auto"
FS 服务器有两个接口(interface):一个使用公共(public) IP,第二个使用私有(private)网络 (192.168.59.0/24)。
我检查了 acl.conf.xml 文件和 event_socket.con.xml,到目前为止我没有发现任何特别之处。
最后一件事:这是一个开发环境,FS 在 VM (VirtualBox) 中运行。 VM使用的接口(interface)是192.168.59.103,GW是192.168.59.3 因此,如果不是 ACL 问题(或两者),这可能是 NAT 问题。
您知道 ACL 配置应该是什么吗?
最佳答案
您必须转到 FreeSWITCH/conf/autoload_configs/event_socket.conf.xml 并取消注释并编辑 acl 行:
<param name="apply-inbound-acl" value="loopback.auto"/>
你必须写类似 my_acl 而不是 loopback.auto
之后你必须去 FreeSWITCH/conf/autoload_configs/acl.conf.xml 并在那里写下这样的东西:
<list name="my_acl" default="deny">
<node type="allow" cidr="xxx.xxx.xxx.xxx/32"/>
<node type="allow" cidr="xxx.xxx.xxx.0/24"/>
</list>
在此之后转到 fs_cli 和磁带命令:
reloadacl
尽情享受吧!
编辑:
确保以下内容:
<list name="my_acl" default="deny">
<node type="allow" cidr="xxx.xxx.xxx.xxx/32"/>
<node type="allow" cidr="xxx.xxx.xxx.0/24"/>
</list>
变成:
<list name="my_acl" default="deny">
<node type="allow" cidr="xxx.xxx.xxx.xxx/32"/>
<node type="allow" cidr="xxx.xxx.xxx.0/24"/>
<node type="allow" cidr="192.168.42.42/32"/>
<node type="allow" domain="$${domain}"/>
<!-- this allow fs_cli to connect else fs_cli wont work --!>
<node type="allow" cidr="127.0.0.1/32" />
</list>
关于node.js - 远程事件套接字的 Freeswitch ACL 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31364064/