远程事件套接字的 Freeswitch ACL 配置

问题描述 投票:0回答:5

我有一个在一台服务器上运行的 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 服务器有 2 个接口:一个使用公共 IP,第二个使用专用网络 (192.168.59.0/24)。

我检查了 acl.conf.xml 文件和 event_socket.con.xml,到目前为止我没有看到任何特别的东西。

最后一件事:这是一个开发环境,FS 在虚拟机(VirtualBox)中运行。 VM使用的接口是192.168.59.103,GW使用的接口是192.168.59.3 因此,如果不是 ACL 问题(或两者兼而有之),这可能是 NAT 问题。

您知道 ACL 配置应该是什么吗?

node.js virtual-machine virtualbox acl freeswitch
5个回答
10
投票

您必须转到 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>

3
投票

我找到了原因: ACL 的配置并不是很好。使用的方法没有为 event_socket 打开正确的连接。因此,Event_Socket 要么打开仅供本地使用,要么仅供外部使用。 必须重新创建一个新的 ACL,并打开本地访问(如果您想使用 fs_cli,这是必需的)并添加控制服务器的 IP。

感谢您关于 IPv6 的建议,我之前测试过它,发现它对我的“问题”没有影响


3
投票

我在

loopback.auto
 下手动创建了 
acl.conf.xml

列表
<list name="loopback.auto" default="allow">
    <node type="allow" cidr="172.31.0.0/16"/>
    <node type="allow" cidr="52.67.85.153/32"/> 
</list>

其中

172.31.0.0/16
是 Freeswitch 本地 IP 地址。

event_socket.conf.xml
文件中我留下
loopback.auto
:

<param name="apply-inbound-acl" value="loopback.auto"/>

然后运行

reloadacl
reloadxml
。就我而言,我需要重新启动 Freeswitch 才能使其正常工作。


2
投票

这里有一些关于如何让它工作的信息: https://wiki.freeswitch.org/wiki/Mod_event_socket#Configuration

经过一番尝试和错误后,我所要做的就是消除错误:

  1. 打开 FreeSWITCH/conf/autoload_configs/event_socket.conf.xml
  2. 取消注释以下行:
<param name="apply-inbound-acl" value="loopback.auto"/>

这是我的工作 event_socket.conf.xml 文件:

<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="nat-map" value="false"/>
    <param name="listen-ip" value="::"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="ClueCon"/>
    <param name="apply-inbound-acl" value="loopback.auto"/>
    <!--<param name="stop-on-bind-error" value="true"/>-->
  </settings>
</configuration>

0
投票

这可能是由于 IPv6 问题而发生: https://freeswitch.org/jira/browse/FS-7638

作为解决方法,您可以尝试在 autoload_configs/event_socket.conf.xml 中将 event_socket 绑定地址从 :: 更改为 192.168.59.x

© www.soinside.com 2019 - 2024. All rights reserved.