我有一个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配置应该是什么?
答案 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
经过一些试验和错误之后,我所要做的就是摆脱错误:
<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"/>
然后运行reloadacl
和reloadxml
。在我的情况下,我需要重新启动Freeswitch才能使其正常工作。
答案 4 :(得分:0)
由于IPv6问题可能会发生: https://freeswitch.org/jira/browse/FS-7638
作为一种解决方法,您可以尝试在autoload_configs / event_socket.conf.xml中将event_socket绑定地址从::更改为192.168.59.x