我正试图让Asterisk允许来自同一供应商的多个IP上的入站呼叫(纯IP身份验证)。到目前为止,唯一可行的方法是为每个IP创建一个新的sip.conf对等条目。
ACL看起来应该工作,但我不知道如何正确使用它们。否则他们就不会像我认为的那样工作。
例如,如果我在sip.conf中创建以下内容(有点精简):
[general]
context=no_default_context_allowed
allowguest=yes
...
[supplier]
type=peer
host=1.1.1.1
context=abc
从1.1.1.1到达的调用按预期转到上下文abc。然而,如果我有一系列的IP(例如1.1.1.80/28),我希望沿着这些路线运行:
[supplier]
type=peer
host=dynamic
acl=supplier-acl
context=abc
acl.conf为:
[supplier-acl]
deny=0.0.0.0/0.0.0.0
permit=1.1.1.80/28
来自Asterisk CLI:
acl show supplier-acl
ACL: supplier-acl
----------------------------------------
0: deny - 0.0.0.0/0.0.0.0
1: allow - 1.1.1.80/255.255.255.240
这在我看来是正确的,sip show peers在ACL列中显示A。
在任何情况下,无论我如何尝试和配置它,调用都会转到默认上下文,除非主机包含入站调用的精确IP。
我已经尝试了很多配置变体,我真的记不清了,所以我想问的是,有人知道如何做到这一点吗?
编辑:我正在使用Asterisk 13.0.2
ACL限制网络配置,但不会识别主机。
每个呼叫源主机都需要一个单独的对等条目,以确保呼叫到达正确的上下文。只需将你的[supplier]
制作成一个模板,然后有几个[supplier-srv1]
、[supplier-srv2]
,每个都有host=<specific ip>
来区分它们。
进一步阅读
+https://wiki.asterisk.org/wiki/display/AST/Named+ACL
+http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf
acl是为类似的东西设计的
[localext]
type=friend
host=dynamic
secret=supersecret
deny=0.0.0.0/0.0.0.0
permit=192.168.0.1/24
您仍然需要添加其他强制性参数(最小实际工作是上面的例子)