FusionPBX 和 ACL

我的文章并不是对该产品的完整描述,而只是对优秀出版物“FusionPBX,或者再次伟大的 FreeSWITCH”的轻微改进。 在我看来,FusionPBX 中 ACL 的主题并没有很好地披露。 我将根据我自己使用 FreeSWITCH/FusionPBX 的经验尝试填补这一空白。

因此,我们安装了 FusionPBX,在domain.local 域中注册了内部号码 1010,并配置了用于到城市的外部呼叫的路由。 我们使用 ACL 来保护我们的电话系统免受未经授权的呼叫的侵害,这些呼叫会夺走我们的资金。 那些。 仅允许从 ACL 中描述的网络发出呼叫。 这里你需要完全清楚地了解ACL在FusionPBX中的工作原理、特点、逻辑和锚点。

和上面文章尊敬的作者一样,我也踩过所有ACL相关的耙子。

我将开始 SIP配置文件.
内部和外部的两个配置文件(我将这样称呼它们)都处于公共环境中,这并非偶然。 号码注册发生在内部档案中,我们会予以关注。 在内部配置文件中,域 ACL 绑定为 apply-inbound-acl。 正是该行负责配置文件级别的 ACL 操作。 到目前为止,个人资料就这样了。

语境

除其他外,上下文还用于呼叫路由。 所有传入路由都绑定到公共上下文。

传出(到城市、到蜂窝、长途、国际和任何其他)路由(默认情况下)位于域名的上下文中(我们将其称为domain.local)。

ACL

现在让我们处理 ACL。 默认情况下,新安装的 FusionPBX 有两个 ACL:

域默认操作:拒绝 - 此工作表绑定到内部配置文件
局域网默认操作:允许

在域 ACL 列表中,我们指定网络(例如 192.168.0.0/24),我们为该网络授予允许权限,我们使用 reloadacl。

接下来,我们从该网络注册一部电话,一切似乎都很好,并且按照说明和逻辑进行。
我们开始测试,拨打外部号码......我们得到一个甜甜圈,或者更确切地说是一个甜甜圈洞。 突然!

我们开始在控制台或通过FusioPBX日志查看器分析日志。

我们看到了我们的挑战:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

我们看到 ACL 有效:

sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.

还有:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context public
switch_core_state_machine.c:311 No Route, Aborting 
switch_core_state_machine.c:312 Hangup sofia/internal/[email protected] [CS_ROUTING] [NO_ROUTE_DESTINATION] 

没有路线! 虽然路线我们已经老老实实地登记了。

答案很简单。

电话来了。 ACL 错过了。 由于 ACL 绑定在内部配置文件中,并且该配置文件位于公共上下文中,因此 FreeSWITCH 诚实地查看公共上下文中的路由。 但在公共环境中,只有传入路由,系统诚实地告诉我们,那里没有通往城市的路由。

至少有两种方法可以摆脱这种情况。

  1. 将此 ACL 不附加到配置文件,而是附加到内部号码本身。 这可能是最正确的解决方法,因为。 最好将 ACL 绑定到尽可能靠近 Extension 以便进行更精细的调整。 那些。 您可以指定可以拨打电话的电话的特定地址/网络地址。 此选项的缺点是每个扩展都必须执行此操作。
  2. 修复 ACL,使其在配置文件级别正常工作。 我选择了这个选项,因为在我看来,将网络添加到 ACL 一次比在每个扩展中指定它更容易。 但这是专门针对我的任务的。 对于其他任务,您可能需要不同的决策逻辑。

所以。 让我们按如下方式修复 ACL 域:

域默认操作:允许

在域 ACL 列表中,我们注册网络:

拒绝 192.168.0.0/24

应用,重新加载。
我们正在测试:我们再次拨打号码 98343379xxxx,然后...检查站即将到来...您好。 一切正常。
让我们看看 FreeSWITCH 中发生了什么:
通话开始:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

ACL 没有错过:

[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.

进一步:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context domain.local
sofia/internal/[email protected] Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false 

路由过去了,接下来就是连接建立,这个超出了本主题的范围。

如果我们更改 ACL 中的网络地址,但从第一次测试中获取图片,即ACL 将跳过呼叫,路由将显示 NO_ROUTE_DESTINATION。

这可能就是我想在 ACL FusionPBX 上添加的全部内容。

我希望它对某人有用。

来源: habr.com

添加评论