远程事件套接字的 Freeswitch ACL 配置
Freeswitch ACL configuration for remote event socket
我在一台服务器上有一个 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 个接口:一个使用 public 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 配置应该是什么吗?
这可能是因为 IPv6 问题:
https://freeswitch.org/jira/browse/FS-7638
作为解决方法,您可以尝试将 event_socket 绑定地址从 :: 更改为 192.168。59.x in autoload_configs/event_socket。conf.xml
我发现了原因:
ACL 并没有真正配置好。使用的那个没有为 event_socket 打开正确的连接。因此 Event_Socket 要么仅供本地使用,要么仅供外部使用。
不得不重新创建一个打开本地访问的新 ACL(如果你想使用 fs_cli 则需要)并添加控制服务器的 IP。
谢谢你关于 IPv6 的建议,我之前测试过它,发现它对我的 "issue"
没有影响
这里有一些关于如何让它工作的信息:
https://wiki.freeswitch.org/wiki/Mod_event_socket#Configuration
经过反复试验,我必须做的就是消除错误:
- 打开 FreeSWITCH/conf/autoload_configs/event_socket.conf.xml
- 取消注释以下行:
<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>
您必须转到 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>
我在 acl.conf.xml
下手动创建了 loopback.auto
列表
<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 才能使其正常工作。
我在一台服务器上有一个 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 个接口:一个使用 public 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 配置应该是什么吗?
这可能是因为 IPv6 问题: https://freeswitch.org/jira/browse/FS-7638
作为解决方法,您可以尝试将 event_socket 绑定地址从 :: 更改为 192.168。59.x in autoload_configs/event_socket。conf.xml
我发现了原因: ACL 并没有真正配置好。使用的那个没有为 event_socket 打开正确的连接。因此 Event_Socket 要么仅供本地使用,要么仅供外部使用。 不得不重新创建一个打开本地访问的新 ACL(如果你想使用 fs_cli 则需要)并添加控制服务器的 IP。
谢谢你关于 IPv6 的建议,我之前测试过它,发现它对我的 "issue"
没有影响这里有一些关于如何让它工作的信息: https://wiki.freeswitch.org/wiki/Mod_event_socket#Configuration
经过反复试验,我必须做的就是消除错误:
- 打开 FreeSWITCH/conf/autoload_configs/event_socket.conf.xml
- 取消注释以下行:
<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>
您必须转到 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>
我在 acl.conf.xml
loopback.auto
列表
<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 才能使其正常工作。