Asterisk pjsip ACL

2018年10月29日 (月) 12:03時点におけるTakahashi (トーク | 投稿記録)による版 (一番簡単な方法)

AsteriskのPjSIPでACLを使用する場合の挙動

目次

ファイル

  • pjsip.conf
type=aclで定義されるACL
  • alc.conf
Asteriskの名前付きACL
'[ ]'で定義されるセクション名がACLの名前
PjSIPの各所(endpointなど)から'acl=名前'で参照される

pjsip.conf

  • グローバルなACLとして動作する
  • 他で設定されたACL(endpointなど)よりも優先使用される(BASELINE)
  • 何も設定されていない場合には『全許可』(ACLなし)

全拒否のACL

[acl]
type = acl
deny = 0.0.0.0/0.0.0.0

192.168.1.0/24だけ許可するACL

[acl]
type = acl
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/24

acl.confの名前付ACLをACLとして使用する場合

[acl]
type = acl
acl = inhouse-phones

acl.conf

Asteriskの名前付きACL

[inhouse-phones]
deny=0.0.0.0/0.0.0.0
permit=192.168.1.0/24

セクション名がACLの名前

既知の問題点

たぶん現時点(Asterisk 16.0.0)の仕様だと思われますが名前付きACLをpjsip_wizard.confで定義した場合、CLIからリロードされません。

pjsip_wizard.confのendpoint設定でendpoint/acl = myphonesを定義する
Asteriskを再起動して有効にする(pjsip show endpoint なんとか)で確認
acl.confを編集する
CLIでmodule reload acl を実行する
CLIでacl show myphones を実行すると正しく変更されている
ところが挙動は正しくならない
解決するにはAsteriskを再起動するしかない

一番簡単な方法

グローバルのACLだけで定義します。
pjsip.confの中で以下の例のように書くだけです。

[acl]
type = acl
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/24
permit = 許可したいIPアドレス

この方法の場合にはCLIからmodule reload res_pjsip.soだけで反映されます。