远程事件套接字

时间:2015-07-12 03:22:48

标签: node.js virtual-machine virtualbox acl freeswitch

我有一个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正在VM(VirtualBox)中运行。用于VM的接口是192.168.59.103,GW是192.168.59.3 因此,如果不是ACL问题(或两者),这可能是NAT问题。

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

5 个答案:

答案 0 :(得分:6)

您必须转到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和tape命令:

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>

答案 1 :(得分:3)

我发现了原因: ACL配置不是很好。使用的那个没有为event_socket打开正确的连接。因此,Event_Socket只能在本地使用或仅供外部使用。 必须重新创建一个打开本地访问权限的新ACL(如果你想使用fs_cli,则是必需的)并添加控制服务器的IP。

关于IPv6的建议,我之前对其进行了测试,发现它对我的问题没有影响&#34;

答案 2 :(得分:1)

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

经过一些试验和错误之后,我所要做的就是摆脱错误:

  1. 打开FreeSWITCH / conf / autoload_configs / event_socket.conf.xml
  2. 取消注释以下行:
  3. <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>
    

答案 3 :(得分:1)

我在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"/>

然后运行reloadaclreloadxml。在我的情况下,我需要重新启动Freeswitch才能使其正常工作。

答案 4 :(得分:0)

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

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