我的文章不是对该产品的完整描述,而只是对好的出版物“ FusionPBX,或者说是很棒的FreeSWITCH”的一小部分说明。 在我看来,FusionPBX中的ACL主题没有很好地涵盖。 根据我对FreeSWITCH / FusionPBX的经验,我将尝试填补这一空白。
因此,我们已经在domain.local域中安装了注册分机号为1010的FusionPBX,并且配置了用于拨打城市的外部呼叫的路由。 我们使用ACL保护电话系统免受未经授权的通话的侵害,这会占用我们的钱。 即 仅来自ACL中描述的网络允许拨出电话。 在这里,您需要对FusionPBX中的ACL的工作原理,功能,逻辑及其连接点有一个非常清晰的了解。
像以上文章的受人尊敬的作者一样,我也踩过了与ACL相关的所有问题。
我将从
SipProfiles开始。
内部和外部两个配置文件(我将其称为)都在Public的上下文中,这不是巧合。 数字注册在内部配置文件中进行,并请注意。 在内部配置文件中,域ACL绑定为apply-inbound-acl。 此行负责配置文件级别的ACL操作。 到目前为止,只有个人资料。
语境
上下文尤其用于呼叫路由。 所有传入的路由都与“公共”上下文相关。
传出(到城市,蜂窝,城际,国际和其他任何地方)的路由(默认情况下)位于域名的上下文中(我们称其为domain.local)。
访问控制列表
现在让我们处理ACL。 缺省情况下,新安装的FusionPBX具有两个访问控制列表:
域的默认操作:拒绝-此工作表已绑定到内部配置文件
lan默认操作:允许
在域ACL列表中,我们设置了网络(例如192.168.0.0/24),为此网络设置允许网络,使用reloadacl。
接下来,从该网络注册电话,根据说明和逻辑,一切似乎都很好。
我们开始测试,打电话给外部号码,然后……我们得到了百吉饼,或者说是百吉饼上的一个洞。 没想到!
我们开始在控制台中或通过Log Viewer FusioPBX分析日志。
我们看到了我们的电话:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
我们看到触发的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/1010@domain.local [CS_ROUTING] [NO_ROUTE_DESTINATION]
没有路线! 虽然我们已经诚实地注册了这条路线。
答案很简单。
来电来了。 ACL错过了它。 而且由于ACL绑定在内部配置文件中,并且此配置文件在公共上下文中,所以FreeSWITCH会诚实地在公共上下文中查看路由。 但是在公共环境中,只有传入的路由,并且系统诚实地告诉我们,那里没有通往城市的路由。
至少有两种方法可以解决这种情况。
- 将此ACL附加到内部编号,而不是附加到配置文件。 这可能是最正确的解决方法,因为 ACL应该绑在尽可能靠近扩展的位置,以进行更好的调整。 即 您可以指定电话的特定地址/网络地址,以便他可以从该地址/拨出电话。 此选项的缺点是在每个扩展中都必须执行此操作。
- 更正ACL,使其在配置文件级别正确运行。 我之所以选择此选项,是因为对我而言,一次向ACL添加网络比在每个扩展中编写网络都容易。 但这是专门为我的任务。 对于其他任务,您可能需要不同的决策逻辑。
等等。 让我们修复ACL域,如下所示:
域默认操作:允许
在域ACL列表中,我们设置网络:
拒绝192.168.0.0/24
应用reloadacl。
我们测试:我们再次拨打号码98343379xxxx,然后……CPV转到……ALLO。 一切正常。
我们来看一下FreeSWITCH中发生的情况:
通话开始:
switch_channel.c:1104 New Channel sofia/internal/1010@domain.local
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/1010@domain.local Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]\d{6})$/ break=on-false
路由已通过,然后建立的连接超出了本主题的范围。
如果我们更改ACL中的网络地址,但从第一次测试中获得图片,即 ACL调用将跳过,路由将显示NO_ROUTE_DESTINATION。
那可能就是我想在FusionPBX ACL上添加的全部内容。
我希望有人派上用场。