「Asterisk pjsip ACL」の版間の差分

提供: VoIP-Info.jp
移動先: 案内検索
(ファイル)
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
 +
[[カテゴリ:Asterisk]]
 +
[[カテゴリ:Pjsip]]
 
AsteriskのPjSIPでACLを使用する場合の挙動
 
AsteriskのPjSIPでACLを使用する場合の挙動
 
==ファイル==
 
==ファイル==
9行目: 11行目:
 
==pjsip.conf==
 
==pjsip.conf==
 
*グローバルなACLとして動作する
 
*グローバルなACLとして動作する
 +
*他で設定されたACL(endpointなど)よりも優先使用される(BASELINE)
 
*何も設定されていない場合には『全許可』(ACLなし)
 
*何も設定されていない場合には『全許可』(ACLなし)
 
全拒否のACL
 
全拒否のACL
23行目: 26行目:
 
  type = acl
 
  type = acl
 
  acl = inhouse-phones
 
  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をendpoint等に定義した場合、CLIからリロードされません。
 +
:pjsip_wizard.confやpjsip.confのendpoint設定でendpoint/acl = myphonesあるいはacl = myphonesを定義する
 +
:Asteriskを再起動して有効にする(pjsip show endpoint なんとか)で確認
 +
:acl.confを編集する
 +
:CLIでmodule reload acl を実行する
 +
:CLIでacl show myphones を実行すると正しく変更されている
 +
::ところが挙動は正しくならない
 +
:解決するにはAsteriskを再起動するしかない
 +
 +
==一番簡単な方法==
 +
グローバルのACLだけで定義します。<br>
 +
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だけで反映されます。<br>
 +
どのみちこのACLを抜けてこないと各endpointなどのACLは参照されません。<br>
 +
==全許可しておき各endpointでACLを定義する==
 +
pjsip.confにはACLを書かない。<br>
 +
acl.confに以下のようなものを書く。<br>
 +
[myphones]
 +
type = acl
 +
deny = 0.0.0.0/0.0.0.0
 +
permit = 192.168.1.0/24
 +
endpoint設定に以下のように書く
 +
acl = myphones
 +
この場合、Asteriskを再起動しないとACLの情報が更新されません。

2018年10月29日 (月) 12:31時点における最新版

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をendpoint等に定義した場合、CLIからリロードされません。

pjsip_wizard.confやpjsip.confのendpoint設定でendpoint/acl = myphonesあるいは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だけで反映されます。
どのみちこのACLを抜けてこないと各endpointなどのACLは参照されません。

全許可しておき各endpointでACLを定義する

pjsip.confにはACLを書かない。
acl.confに以下のようなものを書く。

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

endpoint設定に以下のように書く

acl = myphones

この場合、Asteriskを再起動しないとACLの情報が更新されません。