https://www.voip-info.jp/api.php?action=feedcontributions&user=Takatyan&feedformat=atom
VoIP-Info.jp - 利用者の投稿記録 [ja]
2024-03-29T10:56:09Z
利用者の投稿記録
MediaWiki 1.29.1
https://www.voip-info.jp/index.php?title=Asterisk_%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB_extensions.conf&diff=11506
Asterisk サンプル設定ファイル extensions.conf
2022-11-28T03:33:39Z
<p>Takatyan: 変更を反映させる方法とCLIからの確認・テストを記載。</p>
<hr />
<div>更なる例は[[Extension道場]]に記載があります。<br />
<br />
==context==<br />
extenの設定で一番わかりにくいのがこの、コンテキストだと思います。コンテキストとは<nowiki>' [ ] '</nowiki>で括られたセクションのことをいい、指定されたブロックをそのコンテキストと呼びます。<br />
[incoming]<br />
・<br />
・<br />
incoming context<br />
・<br />
・<br />
[outgoing]<br />
・<br />
・<br />
この例では<nowiki>[incoming]</nowiki>で指定された部分から、次の<nowiki>[outgoing]</nowiki>の前までの部分が<br />
incomingコンテキストとなります。<br><br />
sip.confやiax.confなどでcontext=incomingが指定されていると、その相手(ITSPや電話機)からの着信や接続要求はこのコンテキスト内で行われます。<br />
==exten==<br />
extensions.confの基本的な書き方は次の通りです。<br />
exten => 番号,プライオリティ,アプリケーション<br />
番号<br />
:これがextenそのもので、いわゆる内線番号に相当します。<br />
プライオリティ<br />
:処理の順番を書きます<br />
アプリケーション<br />
:Asteriskのアプリケーション・コマンドを書きます<br />
:この部分にはアプリケーション・コマンドだけでなくファンクションと呼ばれるもの、あるいはPBX組み込み機能を記述することができます。<br />
:アプリケーション・コマンドはモジュールのプレフィクスが app_ のものです。<br />
:ファンクションはモジュールプレフィクスが func_ のものです。<br />
<br />
==same==<br />
前項extenでは、以降の例で見られるように「番号」を毎行書いていく必要があります。<br />
これは面倒であり、Asterisk 1.6.2以降では、sameを使うと省略できます。<br />
<br />
例えば、4312番にダイヤルしたときの動作を次のように書いているとします。<br />
exten => 4312,1,NoOp()<br />
exten => 4312,n,Dial(ダイヤル先)<br />
exten => 4312,n,Hangup<br />
<br />
sameを使うとこのように書けます。4312は最初のexten行のみに記載し、2行目以降はsameを使い、省略します。<br />
exten => 4312,1,NoOp()<br />
same => n,Dial(ダイヤル先)<br />
same => n,Hangup<br />
<br />
4312番への動作を書き終わり、別の番号への動作を書くときは、また「exten => 番号,1,処理」から書き始めます。<br />
<br />
==generalセクション==<br />
その名の通り全般のオプション指定を行います。<br />
[general]<br />
writeprotect=no<br />
priorityjumping=no<br />
writeprotect<br />
:CLIによるextenの変更を許可するか禁止するかを指定します。<br />
priorityjumping<br />
:Asterisk 1.0系との互換性のためのオプションです。n+101ジャンプを使うか使わないかを指定しますが、今後は使わない方向ですのでnoを指定しておきます。<br />
==globalsセクション==<br />
グローバル変数を設定します。設定値は見ての通りで、Asteriskでは<br />
変数=値<br />
で、変数が設定できます。<br />
[globals]<br />
USEVOICEMAIL=YES<br />
SPEAKINGCLOCK=317<br />
ECHOTEST=333<br />
;For Hikari Denwa<br />
MYNUMBER=03XXXXXXXX<br />
==defaultセクション==<br />
この部分がdefaultコンテキストです。context=defaultが指定されたものは、ここで処理が行われます。<br><br />
全部を転記すると長くなりすぎるので、一部だけ解説します。<br><br />
===時報===<br />
; Speaking Clock<br />
exten => ${SPEAKINGCLOCK},1,Answer()<br />
exten => ${SPEAKINGCLOCK},n,Wait(1)<br />
exten => ${SPEAKINGCLOCK},n,Set(FutureTime=$[${EPOCH} + 5])<br />
exten => ${SPEAKINGCLOCK},n,SayUnixTime(${FutureTime},Japan,YbdAPHM)<br />
exten => ${SPEAKINGCLOCK},n,Playback(jp-desu)<br />
exten => ${SPEAKINGCLOCK},n,playback(beep)<br />
exten => ${SPEAKINGCLOCK},n,Hangup<br />
ここで変数の参照を行っています。内線番号は変数、SPEAKINGCLOCKに指定された番号になります。値を参照するには'''${ }'''で括ります。<br><br />
プライオリティは本来、1,2,と順番に書くのですがAsterisk 1.2からオートインクリメントが可能になり'''n'''を記述しておくと自動的に+1するようになりました。<br><br />
===一斉呼び出し===<br />
; Ring 201-204 phones<br />
exten => 200,1,Dial(SIP/201&SIP/202&SIP/203&SIP/204&IAX2/201&IAX2/202&IAX2/203&IAX2/204)<br />
exten => 200,n,Hangup<br />
この例はSIP/201またはIAX/201~SIP/204またはIAX/204を一斉に呼び出す方法を示しています。Dialコマンドでは&で区切り複数の相手を指定することで、一斉に呼び出すことができます。<br><br />
===個別呼び出し===<br />
; Local SIP/IAX phones 201-209<br />
exten => _20Z,1,GotoIf($["${USEVOICEMAIL}"="YES"]?use-vm)<br />
exten => _20Z,n,Dial(SIP/${EXTEN}&IAX2/${EXTEN},,tT)<br />
exten => _20Z,n,Hangup<br />
exten => _20Z,n(use-vm),Dial(SIP/${EXTEN}&IAX2/${EXTEN},60,tTwW)<br />
exten => _20Z,n,NoOp(${DIALSTATUS})<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="BUSY"]?vm-rec)<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?vm-rec)<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?vm-rec)<br />
exten => _20Z,n,Hangup<br />
exten => _20Z,n(vm-rec),Answer()<br />
exten => _20Z,n,Wait(1)<br />
exten => _20Z,n,Voicemail(${EXTEN})<br />
exten => _20Z,n,Hangup<br />
まずextenの部分では_20Zのように指定してありますが、これはパターンマッチを意味します。Zは1~9までの数字に合致します。これにより個々の電話機を呼び出すextenをひとつづつ記述するのではなく、これだけで一括記述できるわけです。<br><br />
個別の内線番号を呼び出す設定ですが、ボイスメール使用可否の判断のため少し複雑になっています。<br><br />
n(use-vm) は'''ラベル'''です。Goto命令でジャンプさせる場合に、プライオリティの数字を指定するのではなくラベルを指定することができます。<br><br />
DIALSTATUSなどの変数は、各アプリケーションコマンドがセットします。例えばDIALSTATUSはDial()がセットし、ダイヤルした結果をその変数に入れます。<br><br />
<br />
===アプリケーション実行===<br />
基本的に、Asteriskの機能はアプリケーションコマンドで実装されています。Dialもそのひとつですが、機能を「まとめて」ひとつのアプリケーションとなっている例としてはVoicemailやMeetMeがあります。<br />
exten => 299,1,Answer()<br />
exten => 299,n,Wait(1)<br />
exten => 299,n,VoicemailMain(${CALLERID(num)},s)<br />
exten => 299,n,Hangup<br />
例えばこの部分はボイスメールのメニュー、再生などを行うVoicemailMainというアプリケーションを実行しています。この際の引数として発信者番号(<nowiki>${CALLERID(num)}</nowiki>)を使い、パスワード認証を行わない(s)という呼び出し方になっています。アプリケーションの引数とその意味を簡単に確認するには、CLIから core show application voicemailmainなどのようにアプリケーション名を指定します。<br />
*CLI> core show application voicemailmain<br />
-= Info about application 'VoiceMailMain' =-<br />
<br />
[Synopsis]<br />
Check Voicemail messages<br />
<br />
[Description]<br />
VoiceMailMain([mailbox][@context][,options]): This application allows the<br />
calling party to check voicemail messages. A specific mailbox, and optional<br />
corresponding context, may be specified. If a mailbox is not provided, the<br />
calling party will be prompted to enter one. If a context is not specified,<br />
the 'default' context will be used.<br />
<br />
Options:<br />
p - Consider the mailbox parameter as a prefix to the mailbox that<br />
is entered by the caller.<br />
g(#) - Use the specified amount of gain when recording a voicemail<br />
message. The units are whole-number decibels (dB).<br />
s - Skip checking the passcode for the mailbox.<br />
a(#) - Skip folder prompt and go directly to folder specified.<br />
Defaults to INBOX<br />
VoicemailやMeetMeそれ自体の設定は、それぞれのアプリケーション用の設定ファイルで行います。voicemail.confやmeetme.confがそれです。<br />
<br />
==反映とテスト==<br />
extensions.confを変更したら、[[Asterisk CLI]]から次のコマンドを実行すると反映されます。<br />
dialplan reload<br />
<br />
現在読み込まれているextensions.confの内容(以下ダイヤルプランと言います)を見るには、Asterisk CLIで次のコマンドを実行します。<br />
dialplan show<br />
<br />
パターンマッチの内容のテストとして、例えばusersコンテキストから6421にダイヤルした場合の動作を表示するには、次のコマンドを実行します。<br />
dialplan show 6421@users<br />
この場合、真っ先にマッチするだろうパターン以外のダイヤルプランも表示されます。<br><br />
Hangup()やBusy()アプリケーションによって発信が終了されない場合、同じコンテキスト内の、真っ先にマッチするだろうパターンでないダイヤルプランの、探すべき優先度の行にも移っていく仕様なのでご注意ください。 <br />
<br />
参考:https://wiki.asterisk.org/wiki/display/AST/Pattern+Matching</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB_extensions.conf&diff=11505
Asterisk サンプル設定ファイル extensions.conf
2022-11-28T03:01:47Z
<p>Takatyan: extensions.confでのsameの記載を追加。</p>
<hr />
<div>==context==<br />
extenの設定で一番わかりにくいのがこの、コンテキストだと思います。コンテキストとは<nowiki>' [ ] '</nowiki>で括られたセクションのことをいい、指定されたブロックをそのコンテキストと呼びます。<br />
[incoming]<br />
・<br />
・<br />
incoming context<br />
・<br />
・<br />
[outgoing]<br />
・<br />
・<br />
この例では<nowiki>[incoming]</nowiki>で指定された部分から、次の<nowiki>[outgoing]</nowiki>の前までの部分が<br />
incomingコンテキストとなります。<br><br />
sip.confやiax.confなどでcontext=incomingが指定されていると、その相手(ITSPや電話機)からの着信や接続要求はこのコンテキスト内で行われます。<br />
==exten==<br />
extensions.confの基本的な書き方は次の通りです。<br />
exten => 番号,プライオリティ,アプリケーション<br />
番号<br />
:これがextenそのもので、いわゆる内線番号に相当します。<br />
プライオリティ<br />
:処理の順番を書きます<br />
アプリケーション<br />
:Asteriskのアプリケーション・コマンドを書きます<br />
:この部分にはアプリケーション・コマンドだけでなくファンクションと呼ばれるもの、あるいはPBX組み込み機能を記述することができます。<br />
:アプリケーション・コマンドはモジュールのプレフィクスが app_ のものです。<br />
:ファンクションはモジュールプレフィクスが func_ のものです。<br />
<br />
==same==<br />
前項extenでは、以降の例で見られるように「番号」を毎行書いていく必要があります。<br />
これは面倒であり、Asterisk 1.6.2以降では、sameを使うと省略できます。<br />
<br />
例えば、4312番にダイヤルしたときの動作を次のように書いているとします。<br />
exten => 4312,1,NoOp()<br />
exten => 4312,n,Dial(ダイヤル先)<br />
exten => 4312,n,Hangup<br />
<br />
sameを使うとこのように書けます。4312は最初のexten行のみに記載し、2行目以降はsameを使い、省略します。<br />
exten => 4312,1,NoOp()<br />
same => n,Dial(ダイヤル先)<br />
same => n,Hangup<br />
<br />
4312番への動作を書き終わり、別の番号への動作を書くときは、また「exten => 番号,1,処理」から書き始めます。<br />
<br />
==generalセクション==<br />
その名の通り全般のオプション指定を行います。<br />
[general]<br />
writeprotect=no<br />
priorityjumping=no<br />
writeprotect<br />
:CLIによるextenの変更を許可するか禁止するかを指定します。<br />
priorityjumping<br />
:Asterisk 1.0系との互換性のためのオプションです。n+101ジャンプを使うか使わないかを指定しますが、今後は使わない方向ですのでnoを指定しておきます。<br />
==globalsセクション==<br />
グローバル変数を設定します。設定値は見ての通りで、Asteriskでは<br />
変数=値<br />
で、変数が設定できます。<br />
[globals]<br />
USEVOICEMAIL=YES<br />
SPEAKINGCLOCK=317<br />
ECHOTEST=333<br />
;For Hikari Denwa<br />
MYNUMBER=03XXXXXXXX<br />
==defaultセクション==<br />
この部分がdefaultコンテキストです。context=defaultが指定されたものは、ここで処理が行われます。<br><br />
全部を転記すると長くなりすぎるので、一部だけ解説します。<br><br />
===時報===<br />
; Speaking Clock<br />
exten => ${SPEAKINGCLOCK},1,Answer()<br />
exten => ${SPEAKINGCLOCK},n,Wait(1)<br />
exten => ${SPEAKINGCLOCK},n,Set(FutureTime=$[${EPOCH} + 5])<br />
exten => ${SPEAKINGCLOCK},n,SayUnixTime(${FutureTime},Japan,YbdAPHM)<br />
exten => ${SPEAKINGCLOCK},n,Playback(jp-desu)<br />
exten => ${SPEAKINGCLOCK},n,playback(beep)<br />
exten => ${SPEAKINGCLOCK},n,Hangup<br />
ここで変数の参照を行っています。内線番号は変数、SPEAKINGCLOCKに指定された番号になります。値を参照するには'''${ }'''で括ります。<br><br />
プライオリティは本来、1,2,と順番に書くのですがAsterisk 1.2からオートインクリメントが可能になり'''n'''を記述しておくと自動的に+1するようになりました。<br><br />
===一斉呼び出し===<br />
; Ring 201-204 phones<br />
exten => 200,1,Dial(SIP/201&SIP/202&SIP/203&SIP/204&IAX2/201&IAX2/202&IAX2/203&IAX2/204)<br />
exten => 200,n,Hangup<br />
この例はSIP/201またはIAX/201~SIP/204またはIAX/204を一斉に呼び出す方法を示しています。Dialコマンドでは&で区切り複数の相手を指定することで、一斉に呼び出すことができます。<br><br />
===個別呼び出し===<br />
; Local SIP/IAX phones 201-209<br />
exten => _20Z,1,GotoIf($["${USEVOICEMAIL}"="YES"]?use-vm)<br />
exten => _20Z,n,Dial(SIP/${EXTEN}&IAX2/${EXTEN},,tT)<br />
exten => _20Z,n,Hangup<br />
exten => _20Z,n(use-vm),Dial(SIP/${EXTEN}&IAX2/${EXTEN},60,tTwW)<br />
exten => _20Z,n,NoOp(${DIALSTATUS})<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="BUSY"]?vm-rec)<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?vm-rec)<br />
exten => _20Z,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?vm-rec)<br />
exten => _20Z,n,Hangup<br />
exten => _20Z,n(vm-rec),Answer()<br />
exten => _20Z,n,Wait(1)<br />
exten => _20Z,n,Voicemail(${EXTEN})<br />
exten => _20Z,n,Hangup<br />
まずextenの部分では_20Zのように指定してありますが、これはパターンマッチを意味します。Zは1~9までの数字に合致します。これにより個々の電話機を呼び出すextenをひとつづつ記述するのではなく、これだけで一括記述できるわけです。<br><br />
個別の内線番号を呼び出す設定ですが、ボイスメール使用可否の判断のため少し複雑になっています。<br><br />
n(use-vm) は'''ラベル'''です。Goto命令でジャンプさせる場合に、プライオリティの数字を指定するのではなくラベルを指定することができます。<br><br />
DIALSTATUSなどの変数は、各アプリケーションコマンドがセットします。例えばDIALSTATUSはDial()がセットし、ダイヤルした結果をその変数に入れます。<br><br />
<br />
===アプリケーション実行===<br />
基本的に、Asteriskの機能はアプリケーションコマンドで実装されています。Dialもそのひとつですが、機能を「まとめて」ひとつのアプリケーションとなっている例としてはVoicemailやMeetMeがあります。<br />
exten => 299,1,Answer()<br />
exten => 299,n,Wait(1)<br />
exten => 299,n,VoicemailMain(${CALLERID(num)},s)<br />
exten => 299,n,Hangup<br />
例えばこの部分はボイスメールのメニュー、再生などを行うVoicemailMainというアプリケーションを実行しています。この際の引数として発信者番号(<nowiki>${CALLERID(num)}</nowiki>)を使い、パスワード認証を行わない(s)という呼び出し方になっています。アプリケーションの引数とその意味を簡単に確認するには、CLIから core show application voicemailmainなどのようにアプリケーション名を指定します。<br />
*CLI> core show application voicemailmain<br />
-= Info about application 'VoiceMailMain' =-<br />
<br />
[Synopsis]<br />
Check Voicemail messages<br />
<br />
[Description]<br />
VoiceMailMain([mailbox][@context][,options]): This application allows the<br />
calling party to check voicemail messages. A specific mailbox, and optional<br />
corresponding context, may be specified. If a mailbox is not provided, the<br />
calling party will be prompted to enter one. If a context is not specified,<br />
the 'default' context will be used.<br />
<br />
Options:<br />
p - Consider the mailbox parameter as a prefix to the mailbox that<br />
is entered by the caller.<br />
g(#) - Use the specified amount of gain when recording a voicemail<br />
message. The units are whole-number decibels (dB).<br />
s - Skip checking the passcode for the mailbox.<br />
a(#) - Skip folder prompt and go directly to folder specified.<br />
Defaults to INBOX<br />
VoicemailやMeetMeそれ自体の設定は、それぞれのアプリケーション用の設定ファイルで行います。voicemail.confやmeetme.confがそれです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E3%82%A2%E3%83%8A%E3%83%AD%E3%82%B0%E9%9B%BB%E8%A9%B1%E6%A9%9F%E3%81%AE%E6%8E%A5%E7%B6%9A&diff=11465
アナログ電話機の接続
2022-03-19T13:30:03Z
<p>Takatyan: /* ATA(Analog Telephone Adapter) */</p>
<hr />
<div>Asteriskと普通のアナログ電話機を接続する方法です。主に以下の手段があります。<br />
==アナログ・インタフェースカード==<br />
*Digium [[TDM400P]]<br />
==ATA(Analog Telephone Adapter)==<br />
アナログ電話機を、VoIPベースのネットワークなどの電話網に接続する製品である。<br />
*[[VoIPアダプタ(NTT東西)|VoIPアダプタ]] NTT東日本/西日本がレンタル、販売していたVoIPアダプタ。<br />
*[[Linksys SPA3102]]<br />
*[[Linksys PAP2T]]<br />
*[[Digium IAXy]]<br />
*[[Grandstream HT286]]<br />
<br />
==VoIPルータ==<br />
*[[ICOM SR-5200]] (メーカー製造中止)<br />
*[[YAMAHA RT57i|YAMAHA RT57i/RT58i]]<br />
*[[YAMAHA RTV700]]<br />
<br />
==VoIPゲートウェイ==<br />
*[[Quintum]]<br />
*Grandstream GXW4004,GXW4008,GXW4024(FXSタイプ)<br />
*Grandstream GXW4104,GXW4108(FXOタイプ)<br />
*MultiTech MultiVOIP210<br />
*MultiTech MultiVOIP410<br />
*MultiTech MultiVOIP810<br />
==変なアナログ電話機==<br />
*[[STP1960]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=VoIP%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF(NTT%E6%9D%B1%E8%A5%BF)&diff=11464
VoIPアダプタ(NTT東西)
2022-03-19T13:26:52Z
<p>Takatyan: ページの作成:「NTT東西がレンタル・販売していた、VoIPアダプタ。<br> 固有の製品名、型番...」</p>
<hr />
<div>NTT東西がレンタル・販売していた、[[アナログ電話機の接続#ATA.28Analog_Telephone_Adapter.29|VoIPアダプタ]]。<br><br />
固有の製品名、型番のようなものがない。<br />
<br />
==機能==<br />
Asteriskに対してREGISTし、接続されたアナログ電話機での発着信が可能。<br><br />
(NTTの公式の商品説明では、事業者の提供する050IP電話等に直接接続することが想定されているようだが、後述の仕様により使いづらい)<br><br />
アナログ電話回線(以下「加入電話」)も接続可能で、発信先電話番号によって使用する回線をIP電話・加入電話を自動で切り替える。<br><br />
(ただし加入電話回線なしでも使用可能)<br />
<br />
設定はWebブラウザから行う。<br><br />
他、簡易ブロードバンドルーター機能(PPPoEを喋る)搭載、UPnP対応といった機能を搭載している。<br />
<br />
==入手==<br />
2022年現在では、NTTからの販売は終了しており、インターネットオークション等で中古品を手に入れることとなる。<br />
<br />
==動作・仕様==<br />
本機の仕様・動作にはともちゃ氏が[https://tomocha.net/docs/voip/ 述べて]いるように、多数の注意すべき点がある。<br />
<br />
*「設定はWebブラウザから可能」ではあるが、本機にはRJ-45のWAN端子とLAN端子があり、LAN端子側に接続したPCからのみ可能。<br />
:Webブラウザから見える設定画面には「WAN側からの保守」なる設定項目があるが、これはベンダー用の機能であって、設定画面にWAN端子側からアクセス可能になるという機能ではない。<br />
<br />
本品はルータモードとアダプターモードからなる2つの動作モードを備えている。しかし、次のような問題点がある。<br />
<br />
===ルータモード===<br />
* LAN端子側のDHCPサーバーを無効化できない。<br />
* 本機のWAN・LAN端子は100Mbpsまで対応で1Gbps非対応であり、またそのスループットは5Mbps程度との報告がある(https://bb.watch.impress.co.jp/cda/special/1731.html )。2022年現在ではおよそ実用的ではない。<br />
* NAPT(いわゆるポート開放)機能はない。ブロードバンドルーターとしての機能は極めて簡易である。<br />
<br />
===アダプターモード===<br />
* UPnP対応ルーターの配下で使用することが必須となる(WAN端子側にUPnP対応ルーターが見つからない場合、SIP REGISTに進まない動作となっている)。<br />
* アダプターモードでも、実はルーター(L3スイッチ)として動作し、LAN端子側からWAN端子側にアクセス可能。<br />
* ルータモードと同様に、LAN端子側のDHCPサーバーを無効化できない。<br />
* SIPサーバーへの接続喪失時の再接続の動作に問題がある。<br />
<br />
==LAN内のAsteriskにREGISTして使う==<br />
上記のような特徴のある本機だが、<br />
WAN端子で家庭内LANに接続し、同じ家庭内LAN内にあるAsteriskにREGISTして、接続した電話機の発着信機能のみ使用して、ルーター機能等は使用しない場合には、次のように設定すると使用できる。<br><br />
VoIPアダプタのファームウェアはVer3.47、Asteriskバージョンは16.12.0にて試した。<br />
<br />
===接続===<br />
* 本機のWAN端子は、家庭内LANに接続する。<br />
* LAN端子は、設定用PCを接続する。これは設定作業時のみ接続し、終わったら外して良い。<br />
* 電話機ポートにはアナログ電話機を接続する。<br />
* 電話回線ポートには、電話回線を接続してもよい。<br />
<br />
===Asterisk側の設定===<br />
'''重要''' Asterisk側では本機に対し、μ-lawコーデックの使用を許可しなければならない。<br><br />
pjsip.confでの設定例:<br />
<nowiki><br />
[201](endpoint-default)<br />
allow = !all,alaw,ulaw,opus,g722,gsm</nowiki><br />
<br />
他、一般的なSIPクライアント向けの設定を行う。<br />
<br />
===本機の設定===<br />
設定画面の開き方は、説明書を参照のこと。<br><br />
<br />
====「ネットワーク設定」====<br />
*「PPPoE/IP設定」では、接続種別はイーサネットとする。<br />
:同画面「IP設定」では、WAN側端子におけるIPアドレス設定を行う。DHCPを使用してIPアドレスを取得する場合は「ダイナミック」、静的IPアドレスを設定する場合は「スタティック」とし、各自の環境に合わせた必要な設定を行う。<br />
*「ルータ/アダプタ設定、UPnP使用」画面では「ルータ」モードに設定する。「UPnP使用」は「使用しない」にする。<br />
* DHCPサーバー設定などはルータモードでは変更不可能である。<br />
<br />
====「IP電話設定」====<br />
このページは説明書通りに設定すればよい。<br><br />
「電話回線の種別」は、電話回線を接続していないときはPB(プッシュ回線)にしておくのが良いだろう。接続する電話機がダイヤル回線専用等の場合は、本機もダイヤル回線の設定にする。<br><br />
<br />
====「設定情報の確認」====<br />
設定情報の「確認」なるページにどうしてSIPサーバー情報の設定項目が配置されているのだろうか。<br />
* 「SIPサーバアドレス」にはLAN内のSIPサーバーアドレスを入力する。<br />
* 「REGISTERサーバアドレス」「REGISTERサーバポート番号」はそれぞれSIPサーバーのアドレスとポートを入力しておく。<br />
* 「IP電話番号」はAsteriskからみた、このVoIPアダプタの電話番号を入れておく。この欄は数字しか入力できないわけではないようだ。<br />
* 「市外局番」は何に使用されるのかが判然としないが、入力しておく。(市外局番を省略して発信した場合に、自動的に付加されるのか?)<br />
<br />
====設定の確認====<br />
以上のように設定を行い、「その他設定」内「システム情報と端末の状態」ページで、「端末の状態」欄に<br />
<nowiki><br />
SIP: 登録が完了しました。</nowiki><br />
<br />
と表示されていれば使用可能である。このとき、本機本体前面では、少なくとも、電源ランプ、VoIPランプ、WANランプが点灯していればよい。<br />
<br />
====その他====<br />
<br />
説明書に記載のある、「加入電話回線を選択する電話番号」にはいわゆる1XY特番が記載されており、これらの番号に対しては、IP電話経由での発信ができない。<br><br />
Asteriskでの内線通話としてこれらの番号をダイヤルすることはできないことに注意する必要がある。<br><br />
(110/118/119に対してダイヤルした後は「本品の再起動が必要になります」とも記載がある)<br />
<br />
==参考文献==<br />
<br />
* ともちゃ氏による動作検証・考察<br />
:https://tomocha.net/docs/voip/<br />
* NTT西日本の製品ページ<br />
:https://www.ntt-west.co.jp/kiki/consumer/flets/voip/index.html<br />
* 取扱説明書<br />
:https://www.ntt-west.co.jp/kiki/download/flets/voip/VoIP-adapta0804.pdf<br />
* NTT西日本 VoIPアダプタのファームウェア<br />
:https://www.ntt-west.co.jp/kiki/download/flets/voip/index15.html</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11366
Asterisk ログファイル
2020-08-23T05:24:34Z
<p>Takatyan: </p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki>; /etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>; /etc/asterisk/logger.conf<br />
[logfiles]<br />
full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
Asteriskには、内蔵のログローテート機構があります。<br><br />
===ローテートの仕方の設定===<br />
ログのローテートのファイル名の付け方をlogger.confの[general]セクションで設定できます。<br><br />
<nowiki>; /etc/asterisk/logger.conf<br />
[general]<br />
rotatestrategy=sequential</nowiki><br />
<br />
; none<br />
: 全くローテートを行いません。<br />
; sequential(デフォルト)<br />
: ローテートするたびに、最も新しいログファイルのファイル名の通し番号が最も大きくなるように変名します。<br />
; rotate<br />
: ローテートするたびに、過去のログファイルのファイル名の通し番号を1ずつ増やし、最も新しいログファイルの末尾の数字を0とします。<br />
; timestamp<br />
: 通し番号の代わりにタイムスタンプを使用します。<br />
<br />
sequentialとrotateの違いが分かりにくいですが、例えば「messages」ログファイルを今、ローテートするとして、既にmessages.0 messages.1 messages.2がある場合、<br />
; sequential<br />
: ローテートすると、messagesはmessages.3に変名されます。0~2はそのままです。<br />
; rotate<br />
: ローテートすると、messages.2はmessages.3に、messages.1がmessages.2に、messages.0がmessages.1に変名され、messagesはmessage.0に変名されます。<br />
その後、新しいmessagesが作られ、ローテート後はこの新しいmessagesに書き込まれます。<br />
<br />
===古いファイルを自動で消す===<br />
varパーティションが溢れないようにするためには、古いファイルを自動で消す必要があります。<BR><br />
古いログファイルを4世代保持しておき、古いファイルから消していくためには、[general]セクションで次のように設定します。<BR><br />
<br />
<nowiki>; /etc/asterisk/logger.conf<br />
[general]<br />
rotatestrategy=rotate<br />
exec_after_rotate=rm -f $["${filename}" : "(.+)\.0$"].4</nowiki><br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
: 解説:上記の設定ファイルではAsterisk expressionsの記法が使用されています。${filename}は、rotatestrategy=rotateにおいては「/var/log/asterisk/messages.0」のような文字列になります。<br />
: これに正規表現 "(.+)\.0$" をマッチ(:演算子は正規表現をマッチさせる演算子ですが、暗黙の「^」により文字列の先頭にマッチされます)させ、Asterisk expressionsの正規表現は他の多数の言語でいう$1を返す仕様のため、<br />
: これに".4"を付与したものを削除することで、最も古いログファイルを削除します。<br />
: 詳細は[[Asterisk expressions]]を参照してください。<br />
<br />
===ローテートの実行===<br />
<br />
ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
# root以外のユーザーでAsteriskを実行している場合は下2行でAsteriskの実行ユーザーに合わせてください<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11365
Asterisk ログファイル
2020-08-20T16:12:11Z
<p>Takatyan: /* 古いファイルを自動で消す */</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki># /etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
Asteriskには、内蔵のログローテート機構があります。<br><br />
===ローテートの仕方の設定===<br />
ログのローテートのファイル名の付け方をlogger.confの[general]セクションで設定できます。<br><br />
<nowiki>[general]<br />
rotatestrategy=sequential</nowiki><br />
<br />
; none<br />
: 全くローテートを行いません。<br />
; sequential(デフォルト)<br />
: ローテートするたびに、最も新しいログファイルのファイル名の通し番号が最も大きくなるように変名します。<br />
; rotate<br />
: ローテートするたびに、過去のログファイルのファイル名の通し番号を1ずつ増やし、最も新しいログファイルの末尾の数字を0とします。<br />
; timestamp<br />
: 通し番号の代わりにタイムスタンプを使用します。<br />
<br />
sequentialとrotateの違いが分かりにくいですが、例えば「messages」ログファイルを今、ローテートするとして、既にmessages.0 messages.1 messages.2がある場合、<br />
; sequential<br />
: ローテートすると、messagesはmessages.3に変名されます。0~2はそのままです。<br />
; rotate<br />
: ローテートすると、messages.2はmessages.3に、messages.1がmessages.2に、messages.0がmessages.1に変名され、messagesはmessage.0に変名されます。<br />
その後、新しいmessagesが作られ、ローテート後はこの新しいmessagesに書き込まれます。<br />
<br />
===古いファイルを自動で消す===<br />
varパーティションが溢れないようにするためには、古いファイルを自動で消す必要があります。<BR><br />
古いログファイルを4世代保持しておき、古いファイルから消していくためには、[general]セクションで次のように設定します。<BR><br />
<br />
<nowiki>[general]<br />
rotatestrategy=rotate<br />
exec_after_rotate=rm -f $["${filename}" : "(.+)\.0$"].4</nowiki><br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
: 解説:上記の設定ファイルではAsterisk expressionsの記法が使用されています。${filename}は、rotatestrategy=rotateにおいては「/var/log/asterisk/messages.0」のような文字列になります。<br />
: これに正規表現 "(.+)\.0$" をマッチ(:演算子は正規表現をマッチさせる演算子ですが、暗黙の「^」により文字列の先頭にマッチされます)させ、Asterisk expressionsの正規表現は他の多数の言語でいう$1を返す仕様のため、<br />
: これに".4"を付与したものを削除することで、最も古いログファイルを削除します。<br />
: 詳細は[[Asterisk expressions]]を参照してください。<br />
<br />
===ローテートの実行===<br />
<br />
ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11364
Asterisk ログファイル
2020-08-20T15:27:31Z
<p>Takatyan: </p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki># /etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
Asteriskには、内蔵のログローテート機構があります。<br><br />
===ローテートの仕方の設定===<br />
ログのローテートのファイル名の付け方をlogger.confの[general]セクションで設定できます。<br><br />
<nowiki>[general]<br />
rotatestrategy=sequential</nowiki><br />
<br />
; none<br />
: 全くローテートを行いません。<br />
; sequential(デフォルト)<br />
: ローテートするたびに、最も新しいログファイルのファイル名の通し番号が最も大きくなるように変名します。<br />
; rotate<br />
: ローテートするたびに、過去のログファイルのファイル名の通し番号を1ずつ増やし、最も新しいログファイルの末尾の数字を0とします。<br />
; timestamp<br />
: 通し番号の代わりにタイムスタンプを使用します。<br />
<br />
sequentialとrotateの違いが分かりにくいですが、例えば「messages」ログファイルを今、ローテートするとして、既にmessages.0 messages.1 messages.2がある場合、<br />
; sequential<br />
: ローテートすると、messagesはmessages.3に変名されます。0~2はそのままです。<br />
; rotate<br />
: ローテートすると、messages.2はmessages.3に、messages.1がmessages.2に、messages.0がmessages.1に変名され、messagesはmessage.0に変名されます。<br />
その後、新しいmessagesが作られ、ローテート後はこの新しいmessagesに書き込まれます。<br />
<br />
===古いファイルを自動で消す===<br />
varパーティションが溢れないようにするためには、古いファイルを自動で消す必要があります。<BR><br />
古いログファイルを4世代保持しておき、古いファイルから消していくためには、[general]セクションで次のように設定します。<BR><br />
<br />
''記載途中''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
===ローテートの実行===<br />
<br />
ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11361
Asterisk ログファイル
2020-08-20T07:41:14Z
<p>Takatyan: /* 自動でログをローテートする */</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki># /etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
Asteriskには、内蔵のログローテート機構があり、追加の設定なしにログローテートを実行可能です。<br><br />
ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11360
Asterisk ログファイル
2020-08-20T06:26:54Z
<p>Takatyan: /* ログファイル */</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki># /etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
まず、ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&diff=11359
Asterisk ログファイル
2020-08-20T06:23:05Z
<p>Takatyan: ページの作成:「カテゴリ:Asterisk Asteriskのログファイルについて ==ログファイル== デフォルトの設定ではmessagesログとして、notice, warning, error...」</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
<br />
Asteriskのログファイルについて<br />
==ログファイル==<br />
デフォルトの設定ではmessagesログとして、notice, warning, errorが出力されます。<br><br />
ログファイルの設定は/etc/asterisk/logger.confで行います。<br />
<nowiki># etc/asterisk/logger.conf<br />
[logfiles]<br />
messages => notice,warning,error</nowiki><br />
<br />
noticeレベルログとして認証失敗も記録されるため、Asteriskをインターネットに公開していると、膨大なログが出力されます。<br><br />
[[SIP-Fail2ban|Fail2ban]]を使用していても、しつこい攻撃者がいると、ログが増えていきます。<br><br />
ログファイルを置くvarパーティションが溢れないようにログファイルの管理を行う必要があります。<br />
<br />
==ログの記録レベルを変更する==<br />
必要がなければ、ログの記録レベルを落として出力を減らすのも、1つの手段です。<br><br />
/etc/asterisk/logger.confのlogfilesセクションにて、上記の例にならいログレベルをカンマ区切りで記載します。<br><br />
レベルとしてはdebug, trace, notice, warning, error, verbose, dtmf, fax, securityが記載できます。ログレベルとして「*」を使用すると、全ログレベルを意味します。<br><br />
また、ログレベルの前に[json]を付与するとJSON出力が可能です。<br />
<br />
<nowiki>full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki><br />
<br />
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br><br />
'''Fail2banを使用している場合は、ログ出力のレベルを変更すると動作に影響を及ぼす恐れがあります。注意して変更してください。'''<br />
<br />
設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。<br />
<br />
==自動でログをローテートする==<br />
まず、ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br><br />
<br />
systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.service<br />
[Unit]<br />
Description=Asterisk log rotate<br />
Requires=asterisk.service<br />
<br />
[Service]<br />
Type=simple<br />
#User=asterisk<br />
#Group=asterisk<br />
ExecStart=/usr/sbin/asterisk -rx 'logger rotate'</nowiki><br />
<br />
<nowiki># /etc/systemd/system/asterisk-logrotate.timer<br />
[Unit]<br />
Description=Asterisk log rotate timer<br />
<br />
[Timer]<br />
OnCalendar=Mon *-*-* 04:00:00<br />
RandomizedDelaySec=300<br />
Persistent=true<br />
<br />
[Install]<br />
WantedBy=timers.target</nowiki><br />
<br />
設定したら、systemdにユニットファイルをリロードさせ、タイマーを始動します。<br />
<nowiki># systemctl daemon-reload<br />
# systemctl start asterisk-logrotate.timer<br />
# systemctl enable asterisk-logrotate.timer</nowiki><br />
<br />
手動で1回ローテートしてみようと思う場合、次を実行します。<br />
<nowiki># systemctl start asterisk-logrotate.service</nowiki><br />
<br />
==外部の機構によりログをローテートする==<br />
上記はAsterisk内蔵のログローテート機構によるローテートを説明しました。logrotate等、外部のログローテートツールを使用してログローテートを行う方法もあります。<BR><br />
その場合の詳細は割愛しますが、[https://www.voip-info.org/logrotate/ voip-info.org]等には参考となる情報があるようです。<BR><br />
外部のログローテートツールによる場合でも、ローテート後にはCLIからlogger reloadを実行すればAsteriskはログを開き直すようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_%E9%9B%BB%E8%A9%B1%E6%A9%9F&diff=11358
Asterisk pjsip 電話機
2020-08-17T04:19:39Z
<p>Takatyan: Asterisk pjsip NATへのリンクを追加。</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:Pjsip]]<br />
AsteriskでPjSIPを使用した場合の電話機関連設定<br />
==電話機設定例==<br />
電話機を設定する場合にはセクションが3つ必要です。エンドポイントそれ自体とaor,authの3つです。<br />
[phone1]<br />
type = aor<br />
max_contacts = 1<br />
qualify_frequency = 30<br />
authenticate_qualify = no<br />
<br />
[phone1]<br />
type = auth<br />
username = phone3<br />
password = mysecretpassword<br />
<br />
[phone1]<br />
type = endpoint<br />
context = default<br />
transport=transport-udp<br />
dtmf_mode = rfc4733<br />
disallow = all<br />
allow = ulaw<br />
allow = alaw<br />
rtp_symmetric = yes<br />
force_rport = yes<br />
rewrite_contact = yes<br />
direct_media = no<br />
send_pai = yes<br />
inband_progress = yes<br />
call_group = 1<br />
pickup_group = 1<br />
language = ja<br />
device_state_busy_at = 1<br />
auth = phone1<br />
outbound_auth = phone1<br />
aors = phone1<br />
AORの max_contacts = 1 が設定されていないと電話機はAsteriskに対してRegisterできません。このmax_contactsが2以上に設定されている場合には、複数の電話機が同じアカウントでRegisterできるようになります。<BR><br />
エンドポイントにACLを使用する場合には<BR><br />
acl=myhouse<br />
のように書きますが、この場合の名前付きACLは'''Asteriskの名前付きALC'''です。<BR><br />
つまりacl.confに設定されている名前付きACLということです。pjsipのACLではないので注意してください。<BR><br />
==Wizardを使用した場合の設定例==<br />
Wizardを使用した場合、共通設定部分をテンプレート化し、各電話機の認証情報だけ別に書くことができます。<br />
;電話機用テンプレート(共通設定)<br />
[phone-defaults](!)<br />
type=wizard<br />
transport = transport-udp<br />
accepts_registrations = yes<br />
sends_registrations = no<br />
accepts_auth = yes<br />
sends_auth = no<br />
endpoint/context = default<br />
endpoint/dtmf_mode = rfc4733<br />
endpoint/call_group = 1<br />
endpoint/pickup_group = 1<br />
endpoint/language = ja<br />
endpoint/disallow = all<br />
endpoint/allow = ulaw<br />
endpoint/rtp_symmetric = yes<br />
endpoint/force_rport = yes<br />
endpoint/direct_media = no<br />
endpoint/send_pai = yes<br />
endpoint/send_rpid = yes<br />
endpoint/rewrite_contact = yes<br />
endpoint/inband_progress = yes<br />
endpoint/allow_subscribe = yes<br />
endpoint/transport = transport-udp<br />
aor/max_contacts = 1<br />
aor/qualify_frequency = 30<br />
aor/authenticate_qualify = no<br />
<br />
;各電話機個別設定<br />
[phone1](phone-defaults)<br />
inbound_auth/username = phone1<br />
inbound_auth/password = mypasswordishere<br />
<br />
==NAT==<br />
NAT環境での設定については[[Asterisk pjsip NAT]]を参照のこと。<br />
<br />
==複数同時レジスト==<br />
同一のユーザ名とパスワードで、電話機を複数同時にレジストすることができます。AORのmax_contactsで指定した数字が同時レジストできる台数になります。<br />
詳しい使い方は [[Pjsip 機能拡張]] を参照してください。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_NAT&diff=11357
Asterisk pjsip NAT
2020-08-14T04:16:25Z
<p>Takatyan: ページの作成:「== Asteriskサーバがグローバル、端末がNAT背後の場合 == Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末...」</p>
<hr />
<div>== Asteriskサーバがグローバル、端末がNAT背後の場合 ==<br />
Asteriskサーバ側がグローバルIPアドレスを持ち、それにアクセスする端末側がNAT背後にある場合、pjsip.confのtype=endpoint、type=aorのセクションに次のように記載します。<br />
<nowiki><br />
[201]<br />
type = aor<br />
max_contacts = 1<br />
qualify_frequency = 1000<br />
<br />
[201]<br />
type = endpoint<br />
context = default<br />
disallow = all<br />
allow = ulaw<br />
rtp_symmetric = yes<br />
rewrite_contact = yes<br />
direct_media = no<br />
auth = 201<br />
outbound_auth = 201<br />
aors = 201</nowiki><br />
<br />
重要なのはdirect_media, rtp_symmetric, rewrite_contactです。direct_mediaをnoにすると、端末間通話で常にAsteriskが映像・音声を中継しますから、NATの背後の端末同士の通話が可能となります。<br><br />
rtp_symmetric, rewrite_contactの設定は従来のsip.confではnat=yesに相当します。<br />
また相手(端末側)のNATテーブルをキープするためにtype=aorのセクションに'''qualify_frequency=1000'''(単位はミリ秒)を記述しておくと良いでしょう。遅延の大きい端末相手ならば2000あたりに設定します。<br />
<br />
==AsteriskサーバがNAT背後==<br />
この場合は、通信相手となる端末または回線(ITSP)の状況にも大きく依存するようですが、下記の手段が有用と思われます。<br />
===対応1===<br />
pjsip.confのtype=transportのセクションで次のように記載します。<br />
<nowiki>external_media_address=fqdnhostname.example.com<br />
external_signaling_address=fqdnhostname.example.com<br />
local_net=192.168.0.0/16<br />
local_net=127.0.0.1/32</nowiki><br />
<br />
external_media_address, external_signaling_addressにはグローバルIPアドレス、またはDDNS(Dynamic DNS)サービスを利用しホスト名(FQDN)を記載します。<br />
<br />
ルータのNATを調整し、SIP(5060/UDP)とRTP(デフォルトでは10000~20000/UDP)をAsteriskサーバのプライベートIPアドレスに向けます。<br><br />
ただし、これらの対処を行ってもRegisterできないITSPがあります。<br><br />
<br />
===対応2===<br />
上記の方法で解決しない場合、SIP-NAT機能を持つルータを使えば解決する場合があるとのことですがpjsipを使用する場合の詳細は未検証。<BR></div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan&diff=11356
利用者:Takatyan
2020-08-14T01:54:18Z
<p>Takatyan: </p>
<hr />
<div>* Takatyanの投稿した内容については、サイト管理人[[たかはし]]、および、その許諾する者に対し、あらゆる利用を認めます。<br />
* 一方で、投稿内容の正しさについてはTakatyanは一切保証しませんし、たとえ誤りがあっても、投稿内容を利用したことについての責任は負いません。<br />
* Takatyanは個人的に試して判明したことや、調べてわかったことをまとめて投稿しているか、明らかな誤字修正等を行うのみであり、宣伝等の意図はありません。<br />
<br />
[[Category:人々]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E6%B8%88%E3%81%BFOS&diff=11355
Asterisk動作確認済みOS
2020-08-08T10:31:06Z
<p>Takatyan: /* CentOS */ CentOS 8no</p>
<hr />
<div>工事中。情報追加歓迎!このページは簡単な説明と詳細ページへのリダイレクトに使用します。<br><br />
[[Asteriskインストールメモ]]のページも参照のこと。<br />
==CentOS==<br />
===4.x===<br />
===5.x===<br />
; Asterisk 1.6.0.17 <br />
数カ月運用試験を行ったが安定して動作している。<br />
<br />
動作環境<br />
* [http://ja.wikipedia.org/wiki/PSTN PSTN]: NTT東日本 ひかり電話オフィスタイプ(番号:2,回線:4)<br />
* FXS Gateway: アナログ電話 2台 <br />
* Asterisk: Digium社のRepositoryを使用 (1.6.0.17で固定,適用patch無し)<br />
===6.x===<br />
===7.x===<br />
; Asterisk 13 <br />
make configではsystemdのユニットファイルは作成されず、init.dスクリプトが作成されるが問題なく動作。<br />
===8.x===<br />
; Asterisk 16<br />
Asterisk 16でも、systemdのユニットファイルの作成は実装されていないようだ。動作は問題ない。systemdに管理させるためには[[Asterisk Startup systemd|こちら]]。<br />
<br />
==Windows==<br />
以前はCygwinや仮想化を使用してWindows上でAsteriskを動作させることができましたが、Windows 10以降ではWindows Subsystem for Linux(WSL)を使ってAsteriskを動作させることができます。どうしてもLinux系シャシを使いたくない場合にどうぞ。<br />
:[[Asterisk WSL]]<br />
==Fedora==<br />
<br />
==FreeBSD==<br />
<br />
==Mac OS X==<br />
==Solaris==<br />
→ [[Asterisk Solaris]]<br />
==Voyage Linux==<br />
Debian派生のCF向けディストリビューション<br><br />
:→[[Voyage Linux]]<br />
==Ubuntu==<br />
===16.04===<br />
apt-get install asterisk<br />
だけでインストールできるので、あとは/etc/asteriskの設定ファイルをいじるだけでいい。実行ユーザはasterisk:asterisk。<br />
ただしMySQL ODBC connectorがパッケージでは入らない模様</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_trunks&diff=11354
Asterisk pjsip trunks
2020-08-08T09:52:36Z
<p>Takatyan: /* 基本設定 */ スペルミス修正</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:pjsip]]<br />
==使いかた==<br />
このページではトランク接続の部分のみについて解説します。#include pjsip_trunks.conf などして使うと良いでしょう。<br />
<br />
==基本設定==<br />
トランク接続でもグローバル設定やACLは使用されます。最低限トランスポートの設定は行っておきましょう。<BR><br />
基本となる設定はpjsip.confに書きます。<BR><br />
*[[Asterisk_pjsip_parameters#GLOBAL]]<BR><br />
グローバル設定を使用する場合にはtype=globalのセクションを書きます。<BR><br />
<nowiki>[global]<br />
type=global<br />
max_forwards = 50</nowiki><br />
SIPの基本パラメータやPjSIPの動作に関わるパラメータはSystemで設定します。<BR><br />
*[[Asterisk_pjsip_parameters#SYSTEM]]<BR><br />
===トランスポート===<br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
sip.confに書いていたものと同じですが、トランスポートはセクションで明示指定します。上の例では5070ポートにbindさせていますが、5060を使用する場合にはここを5060にします。<BR><br />
<br />
==CLI==<br />
*外部に対するregisterを確認するには pjsip show registrations<br />
<br />
==ひかり電話HGW==<br />
[[Asterisk pjsip trunk hgw]]<br />
==楽天OpenGate(B2BUA)==<br />
[[Asterisk pjsip trunk opengate]]<br />
==Brastel Basix==<br />
[[Asterisk pjsip trunk basix]]<br />
==@niftyフォン-C==<br />
[[Asterisk pjsip trunk @niftyフォン-C]]<br />
==拠点間接続==<br />
[[Asterisk pjsip trunk intra]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip&diff=11353
Asterisk pjsip
2020-08-08T09:51:51Z
<p>Takatyan: /* グローバル設定 */ スペルミス修正</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:pjsip]]<br />
<br />
AsiteriskでチャネルにPjSIPを使用する際の設定方法など<br />
==コンパイル==<br />
Asterisk 13まではpjprojectを別個インストールするか、configureに--with-pjproject-bundledを付けて実行する必要がありましたが、Asterisk 16からはデフォルトでbundledインストールされるようになりました。<BR><br />
各バージョン毎のインストール方法についてはAsteriskのそれぞれのページを参照してください。<BR><br />
[[Asterisk 13]]<BR><br />
[[Asterisk 16]]<BR><br />
<br />
==変換ツール==<br />
Asterisk 13以降であれば ソースディレクトリ/contrib/scripts/sip_to_pjsip の下にPythonのスクリプトがあります(複数)。sip.confのあるディレクトリでこれを実行するとpjsip.confに変換してくれます。#includeしている場合にはそれらも変換してくれますが、完璧ではないです。<br />
==Asterisk 16における注意点==<br />
PjSIPはres_statsd.soに依存します。このためres_statsdがloadされていないと、res_pjsipがloadされない問題が発生します。<BR><br />
(Asterisk 16ではモジュールの依存関係チェックが厳密化されています)<BR><br />
res_statsdモジュールはstatsd.confファイルが無いとloadされないため、statsd.confファイルが無いだけで、PjSIPが使えないという困った状態になります。ソースファイルに含まれる statsd.conf.sample を /etc/asterisk/statsd.conf にコピーしておいてください。もっとも、このファイルはコメントされた行だけなので要するに空なのですが。<br />
<br />
==パラメータ一覧==<br />
[[Asterisk pjsip parameters]]<br />
<br />
==基本設定==<br />
*間違いやすいところ<br />
:sip.confでは1wordだったのがアンダーバーが入る<br />
:dtmfmode → dtmf_mode<br />
:fromdomain → from_domain<br />
===グローバル設定===<br />
設定は基本としてはpjsip.confに書きます。<BR><br />
*[[Asterisk_pjsip_parameters#GLOBAL]]<BR><br />
グローバル設定を使用する場合にはtype=globalのセクションを書きます。<BR><br />
<nowiki>[global]<br />
type=global<br />
max_forwards = 50</nowiki><br />
SIPの基本パラメータやPjSIPの動作に関わるパラメータはSystemで設定します。<BR><br />
*[[Asterisk_pjsip_parameters#SYSTEM]]<BR><br />
<br />
===インクルード===<br />
Asteriskの他の設定ファイル同様に#includeが使えます。なので、電話機と回線は別ファイルにした方が見通しは良いかもしれません。例えば<BR><br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
<br />
#include pjsip_phones.conf<br />
#include pjsip_trunk_hikari.conf<br />
のようにファイルを分割し、includeすると管理が楽になります。<br />
<br />
基本で必要なものは以下です。<br />
<br />
===トランスポート===<br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
sip.confに書いていたものと同じですが、トランスポートはセクションで明示指定します。上の例では5070ポートにbindさせていますが、5060を使用する場合にはここを5060にします。<BR><br />
<br />
===ACL===<br />
ACLの例は次の通りです。<br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
※deny,permitはこの順でないとpermitしてdenyしてしまう模様で、逆に書くと誰も使えなくなります。<BR><br />
<BR><br />
pjsip.confに複数のACL(type=acl)を書くとそのセクション名にかかわらず後ろにあるACLの方が勝つ模様。<BR><br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
<br />
[acl-my]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=10.10.0.0/16<br />
と、書くとacl-myが勝つので要注意です。複数を許可したい場合には1セクションで<br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
permit=10.10.0.0/16<br />
のように書きます。<BR><br />
*[[Asterisk_pjsip_parameters#ACL.28res_pjsip_acl.29]]<br />
→[[Asterisk pjsip ACL]]<br />
<br />
===認証情報(Auth)===<br />
sip_confではピア(エンドポイント)の認証がわかりにくかったのですが、PjSIPでは別なセクションで(type=auth)認証情報を定義するようになりました。このため、認証情報がピア名(sip.confの[ ])に紐付かなくなりました。<BR><br />
慣れないとわかりにくい感じがしますが、管理がより柔軟になります。例えば<br />
[some-phone]<br />
type = endpoint<br />
.<br />
.<br />
.<br />
auth = phone-auth<br />
outbound_auth = phone-out-auth<br />
のようなendpointが定義されている場合には、2つのauthセクションが必要です。<br />
[phone-auth]<br />
type = auth<br />
username = phone123<br />
password = phonepassword<br />
このAuthは'[some-phone]'エンドポイントに接続、すまり外からの"入り"の際の認証情報です。<BR><br />
[phone-out-auth]<br />
略<br />
このAuthはoutbound_authで設定されているので、このエンドポイントからの"出"の際の認証情報です。<BR><br />
<br />
==電話機==<br />
電話機の接続は [[Asterisk pjsip 電話機]] のページへ<br />
==トランク==<br />
回線接続側は [[Asterisk pjsip trunks]]のページへ<br />
<br />
==Wizard==<br />
Asteriskにはpjsip_wizardが組み込まれており、PjSIPの設定を簡素化することができます。使う場合の条件は以下の通りです。<br />
*基本の設定はpjsip.confに書く<br />
:transportなどの情報はpjsip.confに書く必要があります<br />
*Wizard用のファイル名はpjsip_wizard.conf<br />
*共通化したテンプレート内で各セクションを指定するにはスラッシュ(/)で区切る<br />
*Wizardは電話機でもトランクでも使用できる<br />
:registration/を書くとregistrationセクションがつくられる<br />
:例: endpoint/dtmf_mode<br />
pjsip_wizard.confの記述例<br />
;電話機用テンプレート(共通設定)<br />
[phone-defaults](!)<br />
type=wizard<br />
transport = transport-udp<br />
accepts_registrations = yes<br />
sends_registrations = no<br />
accepts_auth = yes<br />
sends_auth = no<br />
endpoint/context = default<br />
endpoint/dtmf_mode = rfc4733<br />
endpoint/call_group = 1<br />
endpoint/pickup_group = 1<br />
endpoint/language = ja<br />
endpoint/disallow = all<br />
endpoint/allow = ulaw<br />
endpoint/rtp_symmetric = yes<br />
endpoint/force_rport = yes<br />
endpoint/direct_media = no<br />
endpoint/send_pai = yes<br />
endpoint/send_rpid = yes<br />
endpoint/rewrite_contact = yes<br />
endpoint/inband_progress = yes<br />
endpoint/allow_subscribe = yes<br />
endpoint/transport = transport-udp<br />
aor/max_contacts = 1<br />
aor/qualify_frequency = 30<br />
aor/authenticate_qualify = no<br />
<br />
;各電話機個別設定<br />
[phone1](phone-defaults)<br />
inbound_auth/username = phone1<br />
inbound_auth/password = mypasswordishere<br />
<br />
==CLIコマンド==<br />
*sip show peersに対応するのはpjsip show endpoints<br />
*sip show peer phone1などピア情報を表示するのはpjsip show endpoint phone1<br />
*AORを表示するのは一覧ならpjsip show aorsでピアの情報を表示するのはpjsip show aor phone1のようにする<br />
*それぞれの設定項目で何が設定されているかを確認するには pjsip show endpoint phone1 のようにすると phone1 の endpoint パラメータ一覧が表示される。aorを見たければ pjsip show aor phone1。これはトランクの場合も同様で pjsip show registration hikari-hgw のようにするとregister関係のパラメータがみえる。<br />
<br />
==挙動上の注意点==<br />
===挙動そのもの===<br />
chan_sipより制限が少し"きつい"です。SIPメッセージの中に少しおかしなものがあってもchan_sipでは制限が緩かったので、通っていたものがPjSIPでは通らないことがあります。CLI等で'syntax error'のようなメッセージが出る場合にはSIPメッセージにおかしなところがあるかもしれないので調べてください。<br />
===AddHeader===<br />
chan_sipの場合にはSIPAddHeaderでSIPヘッダを追加できましたが、PjSIPではファンクションPJSIP_HEDER()を使用します。ただしこのファンクションはextenの途中で使用しても効果がありません。Dial時にサブルーチンコールしてやる必要があります。<BR><br />
例えばAlert-Info: hogeを追加するにはまず以下のよなルーチンを定義します。<br />
[add-alert]<br />
exten => s,1,Set(PJSIP_HEADER(add,Alert-Info)=hoge)<br />
exten => s,n,Return<br />
Dial時に以下のようにしてコールします<br />
exten => 201,1,Dial(PJSIP/201,,b(add-alert,s,1))<br />
<br />
==設定変更の反映==<br />
*モジュール数が多すぎて一発リロードする方法がよくわからない<br />
*module reload res_pjsip.soを実行すれば"だいたい"はいけそう<br />
:wizardのaor/を変更しても反映されない場合がある<br />
==PjSIPで拡張される機能==<br />
[[pjsip_機能拡張]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_trunk_@nifty%E3%83%95%E3%82%A9%E3%83%B3-C&diff=11352
Asterisk pjsip trunk @niftyフォン-C
2020-08-07T14:30:51Z
<p>Takatyan: /* pjsip.conf */</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:Pjsip]]<br />
[[カテゴリ:ITSP]]<br />
== @niftyフォン-Cとは ==<br />
<br />
インターネットサービスプロバイダ「@nifty」の提供するIP電話サービスで、050番のIP電話の1つです。<BR><br />
NTTコミュニケーションズの基盤を利用しています([http://ipphone.nifty.com/niftyphone/c/kiyaku/index.htm @niftyフォン-Cの利用規約] 第1条 第1項)。<br />
<br />
== 特徴 ==<br />
<br />
=== メリット ===<br />
* @niftyの接続サービスを利用していれば'''基本料金0円'''で維持費がユニバーサルサービス料のみ。<br />
* 同じくNTTコミュニケーションズの基盤を利用する、050plus等のIP電話への通話料が無料。<br />
* Asteriskに収容可能('''重要'''、ただし非公式)。<br />
<br />
=== デメリット ===<br />
* 2020年の今日としては、公式サイトのデザインが明らかに古くFlashを使用したページなどがある。<br />
* 050IP電話の需要は減少傾向らしくサービスの継続性に疑問がある。<br />
* @niftyの接続サービスにロックインされ、他の事業者に番号を持ち運べない。<br />
* 110, 119等1XY 特番、0120, 0570等0AB0 特番には発信できない。<br />
<br />
== Asterisk 16 ==<br />
<br />
以下の設定で発着信可能(2020年8月)<br />
<br />
=== pjsip.conf ===<br />
<nowiki><br />
; 050NNNNNNNN は@niftyフォン-Cの050電話番号<br />
; ABCDEFGHIはVoIPユーザ ID<br />
; abcdefghiはVoIPユーザパスワード<br />
; v???NN.nifty.comはVoIPサーバ名(SIPサーバアドレス、REGISTERサーバアドレス)<br />
; nifty.comはSIP-URL(SIPドメイン名)<br />
<br />
[atniftyphone]<br />
type=aor<br />
contact=sip:ABCDEFGHI@v???NN.nifty.com<br />
<br />
[atniftyphone]<br />
type=identify<br />
endpoint=atniftyphone<br />
match=v???NN.nifty.com<br />
<br />
[atniftyphone]<br />
type=auth<br />
auth_type=userpass<br />
username=ABCDEFGHI<br />
password=abcdefghi<br />
<br />
[atniftyphone]<br />
type=registration<br />
transport=transport-udp<br />
outbound_auth=atniftyphone<br />
contact_user=050NNNNNNNN<br />
server_uri=sip:v???NN.nifty.com<br />
client_uri=sip:050NNNNNNNN@nifty.com<br />
retry_interval=60<br />
<br />
[atniftyphone]<br />
type=endpoint<br />
transport=transport-udp<br />
context=from-atniftyphone<br />
disallow=all<br />
allow=ulaw<br />
dtmf_mode=inband<br />
direct_media=no<br />
send_pai=yes<br />
inband_progress=no<br />
outbound_auth=atniftyphone<br />
from_user=050NNNNNNNN<br />
from_domain=nifty.com<br />
aors=atniftyphone<br />
language=ja ; お好みで</nowiki><br />
<br />
=== extensions.conf ===<br />
<br />
一例です。<br />
<br />
<nowiki>; 発信<br />
[default]<br />
exten => _0.,1,Dial(PJSIP/${EXTEN}@atniftyphone)<br />
same => n,Congestion<br />
same => n,Hangup<br />
<br />
; 着信<br />
[globals]<br />
ATNIFTYPHONENUMBER=050NNNNNNNN<br />
<br />
[from-atniftyphone]<br />
exten => ${ATNIFTYPHONENUMBER},1,Dial(.....) ; 着信先を設定する<br />
same => n,Congestion<br />
same => n,Hangup</nowiki><br />
<br />
=== 注意点 ===<br />
@niftyフォン-Cはqualifyには非対応のようで、qualify_frequency、authenticate_qualifyを設定するとうまくいきませんのでご注意ください。<br />
<br />
[https://qa.nifty.com/cs/catalog/faq_nqa/qid_11216/1.htm?category1=100004&category3=300070&category2=200013 @niftyフォン-C よくある質問「@niftyフォンが正しく設定されているか確認する方法はありますか。」]では、<BR><br />
「@niftyフォン利用確認用の試験番号」なるものが記載されており、「発信テストにご利用いただき、@niftyフォン特有の発信音がするか、ご確認ください。」とあるが、<BR><br />
上記の設定のAsterisk16から発信してみたところ「おかけになった電話番号は、通信できない状態にあり、かかりません。」というガイダンスが繰り返し流れる。特有の発信音とはどのような音なのであろうか。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_trunks&diff=11351
Asterisk pjsip trunks
2020-08-07T14:08:24Z
<p>Takatyan: Asterisk pjsip trunk @niftyフォン-Cへのリンクを追加</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:pjsip]]<br />
==使いかた==<br />
このページではトランク接続の部分のみについて解説します。#include pjsip_trunks.conf などして使うと良いでしょう。<br />
<br />
==基本設定==<br />
トランク接続でもグローバル設定やACLは使用されます。最低限トランスポートの設定は行っておきましょう。<BR><br />
基本となる設定はpjsip.confに書きます。<BR><br />
*[[Asterisk_pjsip_parameters#GLOBAL]]<BR><br />
グローバル設定を使用する場合にはtype=grobalのセクションを書きます。<BR><br />
[grobal]<br />
type=grobal<br />
max_forwards = 50<br />
SIPの基本パラメータやPjSIPの動作に関わるパラメータはSystemで設定します。<BR><br />
*[[Asterisk_pjsip_parameters#SYSTEM]]<BR><br />
===トランスポート===<br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
sip.confに書いていたものと同じですが、トランスポートはセクションで明示指定します。上の例では5070ポートにbindさせていますが、5060を使用する場合にはここを5060にします。<BR><br />
<br />
==CLI==<br />
*外部に対するregisterを確認するには pjsip show registrations<br />
<br />
==ひかり電話HGW==<br />
[[Asterisk pjsip trunk hgw]]<br />
==楽天OpenGate(B2BUA)==<br />
[[Asterisk pjsip trunk opengate]]<br />
==Brastel Basix==<br />
[[Asterisk pjsip trunk basix]]<br />
==@niftyフォン-C==<br />
[[Asterisk pjsip trunk @niftyフォン-C]]<br />
==拠点間接続==<br />
[[Asterisk pjsip trunk intra]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip_trunk_@nifty%E3%83%95%E3%82%A9%E3%83%B3-C&diff=11350
Asterisk pjsip trunk @niftyフォン-C
2020-08-07T14:06:31Z
<p>Takatyan: ページの作成:「カテゴリ:Asterisk カテゴリ:Pjsip カテゴリ:ITSP == @niftyフォン-Cとは == インターネットサービスプロバイダ「@nifty」の提...」</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:Pjsip]]<br />
[[カテゴリ:ITSP]]<br />
== @niftyフォン-Cとは ==<br />
<br />
インターネットサービスプロバイダ「@nifty」の提供するIP電話サービスで、050番のIP電話の1つです。<BR><br />
NTTコミュニケーションズの基盤を利用しています([http://ipphone.nifty.com/niftyphone/c/kiyaku/index.htm @niftyフォン-Cの利用規約] 第1条 第1項)。<br />
<br />
== 特徴 ==<br />
<br />
=== メリット ===<br />
* @niftyの接続サービスを利用していれば'''基本料金0円'''で維持費がユニバーサルサービス料のみ。<br />
* 同じくNTTコミュニケーションズの基盤を利用する、050plus等のIP電話への通話料が無料。<br />
* Asteriskに収容可能('''重要'''、ただし非公式)。<br />
<br />
=== デメリット ===<br />
* 2020年の今日としては、公式サイトのデザインが明らかに古くFlashを使用したページなどがある。<br />
* 050IP電話の需要は減少傾向らしくサービスの継続性に疑問がある。<br />
* @niftyの接続サービスにロックインされ、他の事業者に番号を持ち運べない。<br />
* 110, 119等1XY 特番、0120, 0570等0AB0 特番には発信できない。<br />
<br />
== Asterisk 16 ==<br />
<br />
以下の設定で発着信可能(2020年8月)<br />
<br />
=== pjsip.conf ===<br />
<nowiki><br />
; 050NNNNNNNN は@niftyフォン-Cの050電話番号<br />
; ABCDEFGHIはVoIPユーザ ID<br />
; abcdefghiはVoIPユーザパスワード<br />
; v???NN.nifty.comはVoIPサーバ名(SIPサーバアドレス、REGISTERサーバアドレス)<br />
nifty.comはSIP-URL(SIPドメイン名)<br />
<br />
[atniftyphone]<br />
type=aor<br />
contact=sip:ABCDEFGHI@v???NN.nifty.com<br />
<br />
[atniftyphone]<br />
type=identify<br />
endpoint=atniftyphone<br />
match=v???NN.nifty.com<br />
<br />
[atniftyphone]<br />
type=auth<br />
auth_type=userpass<br />
username=ABCDEFGHI<br />
password=abcdefghi<br />
<br />
[atniftyphone]<br />
type=registration<br />
transport=transport-udp<br />
outbound_auth=atniftyphone<br />
contact_user=050NNNNNNNN<br />
server_uri=sip:v???NN.nifty.com<br />
client_uri=sip:050NNNNNNNN@nifty.com<br />
retry_interval=60<br />
<br />
[atniftyphone]<br />
type=endpoint<br />
transport=transport-udp<br />
context=from-atniftyphone<br />
disallow=all<br />
allow=ulaw<br />
dtmf_mode=inband<br />
direct_media=no<br />
send_pai=yes<br />
inband_progress=no<br />
outbound_auth=atniftyphone<br />
from_user=050NNNNNNNN<br />
from_domain=nifty.com<br />
aors=atniftyphone<br />
language=ja ; お好みで</nowiki><br />
<br />
=== extensions.conf ===<br />
<br />
一例です。<br />
<br />
<nowiki>; 発信<br />
[default]<br />
exten => _0.,1,Dial(PJSIP/${EXTEN}@atniftyphone)<br />
same => n,Congestion<br />
same => n,Hangup<br />
<br />
; 着信<br />
[globals]<br />
ATNIFTYPHONENUMBER=050NNNNNNNN<br />
<br />
[from-atniftyphone]<br />
exten => ${ATNIFTYPHONENUMBER},1,Dial(.....) ; 着信先を設定する<br />
same => n,Congestion<br />
same => n,Hangup</nowiki><br />
<br />
=== 注意点 ===<br />
@niftyフォン-Cはqualifyには非対応のようで、qualify_frequency、authenticate_qualifyを設定するとうまくいきませんのでご注意ください。<br />
<br />
[https://qa.nifty.com/cs/catalog/faq_nqa/qid_11216/1.htm?category1=100004&category3=300070&category2=200013 @niftyフォン-C よくある質問「@niftyフォンが正しく設定されているか確認する方法はありますか。」]では、<BR><br />
「@niftyフォン利用確認用の試験番号」なるものが記載されており、「発信テストにご利用いただき、@niftyフォン特有の発信音がするか、ご確認ください。」とあるが、<BR><br />
上記の設定のAsterisk16から発信してみたところ「おかけになった電話番号は、通信できない状態にあり、かかりません。」というガイダンスが繰り返し流れる。特有の発信音とはどのような音なのであろうか。</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8&diff=11349
メインページ
2020-08-07T10:54:11Z
<p>Takatyan: /* テレワーク関連に対する注意喚起 */ マークアップを改善</p>
<hr />
<div>== '''VoIP-Info.jp Wiki''' ==<br />
このページでは[[Asterisk]]の話題を中心にVoIP関連の情報交換を行なっています。<br><br />
なおこのページは http://www.voip-info.jp http://voip-info.jp のいずれでもアクセスできます。<br><br />
Asterisk PBX、VoIP、IP電話に興味をお持ちの皆様ご参加下さい。<br><br />
<br><br />
Asteriskをビジネスとして扱われている方は[[Asteriskコンサルタント]]のページへ。仕事を依頼したい、仕事として受けたいなど、ビジネスマッチングにお使い下さい。<br><br />
<br><br />
'''SPAM投稿が多いため、ポリシーを変更します。ユーザ登録を行わないと書き込み/編集はできません。'''<br><br />
書き込みを行われる方は、[http://www.voip-info.jp/index.php/%E7%89%B9%E5%88%A5:%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3 ログインまたはアカウント作成]のページから、ユーザ登録を行ってください。<br><br />
(アクセスログ等は取得しています。迷惑行為等に対しては関係各所へ通報いたします。)<br><br />
<br><br />
'''警告''':以前のWikiからもそうでしたが、広告宣伝に情報が埋もれることだけは避けたいので、特定企業への誘導リンク等は適切なページへ貼ってください。[[購入情報]]や[[Asteriskコンサルタント]]のページがそれに相当します。<br><br />
広告出稿をご希望の場合はwebmaster'at'voip-info.jpへメールでお問合せください [[広告]]。<br />
<br><br />
各種ユーザ会関連情報は[[コミュニティ]]のページへ。<br><br />
<br />
=='''COVID-19関連情報'''==<br />
===テレワーク関連に対する注意喚起===<br />
テレワーク関連で、SIPポートへのアタックが考えられますので注意喚起しておきます。<br />
====影響を受ける環境/状況====<br />
テレワーク環境(家庭等)でSIP対応の電話機、ソフトフォンなどを使用しておりクラウドサービスや、会社のIP-PBXに接続している場合。<br />
====考えられる攻撃====<br />
これまでインターネット上に広まっていたSIPポート(主に5060/udp)に対する攻撃を一般家庭でも受ける可能性があります。<br><br />
現象としては『謎の』着信がある、正体の不明の相手からの通話要求があるが電話に出られない、出ても何も聞こえないなどです。<br />
====攻撃の影響を受ける理由/場合:====<br />
SIP対応の電話機あるいはソフトフォンがローカル(電話機やソフトフォン自体が使用する)のSIPポートとして5060を使用している場合、SIPポートに対するアタックの対象となります。これはAsterisk等のサーバのSIPポートが5060であるかどうかに関係しません。<br><br />
[電話機 5060] <=====> [Asterisk 5060]<br />
一般的にSIPの電話機/ソフトフォン(SIPクライアント)はAsteriskやIP-PBXに対して、自分の「所在」を登録するためREGISTERを行い、通話を開始するためにはINVITEを行います。この際、SIPクライアントが「目がけて行く」先は、AsteriskやIP-PBXの IPアドレス:ポート番号です。ご承知の通り、このポート番号が5060番の場合、インターネット上から攻撃を受けることがよくあり、皆さんもポート番号をずらす、あるいはファイアウォールで防御する等の対策を取られていると思います。ところが昨今のテレワーク環境においては、このAsteriskやIP-PBXのポート番号ではなく、SIP電話機やソフトフォン側のポート番号で、一部の電話機/ソフトフォンでは『ローカルSIPポート』として5060を使うものがあることが知られています。ここで、問題とするのはこのローカルSIPポートです。<br />
====対策:====<br />
不用意な攻撃を受けないようにする方法はいくつかあります。<br />
:; 電話機/ソフトフォンのポート番号をずらす :電話機あるいはソフトフォンの設定で、ローカルSIPポートを5060以外のところにずらしてください。ここで、〇〇番が良い、などと書くとその情報が伝播して攻撃対象となることが考えられますので、『不都合のない適切な』値に設定してください。この対策においては、クライアント側だけ変更すればよく、Asterisk等のサーバ側ポート番号は現在使用しているものから変更する必要は通常ありません。<br />
:; 家庭側でもフィルタ/ファイアウォールを施す :クラウド上のIP-PBXや会社のサーバのIPアドレスが固定、あるいは、ある範囲にある場合ならば、家庭側のルータ等でSIPポート番号に対する『入り』(着信)をそのIPアドレスからのみ許可するようにしてください。<br />
急な対応により、不用意なSIP電話機やソフトフォンも増えているかと思いますので、皆様、お気をつけください。サーバ側の5060ポートに対しては慎重に行動されているかとは思いますが、家庭等に電話機を持っていった場合、5060が開いているかもしれないということを失念されていることがあります。今回、問題としているのは電話機ソフトフォン側のポート番号ですので、注意をお願いします。<br><br />
:当然ですがVPNで会社にトンネルを張ってる場合には関係ありませんので念のため。<br />
<br />
===安直にサーバを立てないでください===<br />
Asteriskの情報に辿り着き、クラウド上等にPBXを構築する場合、ネット上の一般的な情報だけを元に安直にAsteriskサーバを立てるのはやめましょう。インターネット上で開いているサーバには十分なセキュリティを施しておかないと、いわゆる『タダがけ』でやられます。特にSIPの5060ポートに対する攻撃は、あっという間に来ます。[[Asterisk SIP セキュリティ]] のページを参考にして注意して運用してください。<br />
===テレワークの参考情報===<br />
テレビ会議等で、音が『気持ち悪い』ような場合には、ヘッドフォンの片方を耳からはずして、片耳状態で使ってみてください。<br><br />
モノラル音源の場合、音像の定位が頭の中心にきてしまうため気持ち悪く感じるためです。私たちは頭の中心で誰かが喋ることに慣れていません。携帯電話など、電話での会話は片耳で聞くことに慣れているので、テレビ会議でも片耳で聞けば気持ち悪くなくなります。<br><br />
画面上の人物と音の来る方向が一致しないのも『気持ち悪い』原因となりますので、あまり人物を注視しない方が良いでしょう。<br><br />
<br />
===会社の電話(番号)をテレワークでも使いたい===<br />
これは我々の得意とする分野です。お困りの場合には [[コミュニティ]] のページからユーザ会にご参加いただき、案件を投げてもらえれば手を挙げてくれるベンダーさんもいるかと思います。[[Asteriskコンサルタント]] ページも参考にしてください。<br />
<br><br />
=='''注意喚起'''==<br />
===DNSへのアタックに注意===<br />
DNSへのアタックが多発しています。サーバを運用している方は特にご注意ください。普通のアクセスルータでも、まずいケースがありますのでアクセス回線でも速度がおかしい場合には注意した方がよいかもしれません。<br><br />
ヤマハルータによるこの対策方法をまとめておきました。→ [[DNSamp対策]]<br />
<br />
===SIPポートへの攻撃についてご注意下さい===<br />
SIPポートへの攻撃が流行っているようですので、ご注意下さい。<br><br />
現在多い攻撃は'''SIPのREGISTERを総当たりで試す'''というものです。<br><br />
対策方法等については : '''[[Asterisk SIP セキュリティ]]'''<br><br />
Fail2banによるiptablesでのブロック方法の設定をまとめました : '''[[SIP-Fail2ban]]'''<br><br />
<br />
=='''注目の情報'''==<br />
*[[ABS]] をリリースしました<br />
:軽量なAsteriskベースのPBXをお探しの場合にどうぞ<br />
:キーテレホン挙動もできるのでビジホン用途でも使えます [[ABS]]<br />
*Asterisk16<br />
:Asterisk16がリリースされました。13に続くLTSです。<br />
:Asteriskのバージョンと位置付けはこちら https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions<br />
<br />
*新サンプル設定ファイル<br />
:サンプル設定ファイルの内容を一新し13対応としました。<br />
:[[Asterisk 13 サンプル設定ファイル]]<br />
<br />
*'''Sangoma「が」Digium「を」買収'''<br />
:特設ページ作りました [[Sangoma_Digium]]<br />
<br />
==イベント・セミナー情報==<br />
毎月やってる定例会はこちら。<br />
:http://www.denphone.com/voip-asterisk-lounge-jp<br />
<br />
==お願い==<br />
最近、SPAMが増えつつあります。気付いた方は正常なページへの差し戻しまたは削除をお願いします。同一ページが複数回のSPAM書き込みを受けた場合にはページの保護をお願いします。<br />
<br />
==RSSフィードについて==<br />
メインのWikiのRSSフィードは[[%E7%89%B9%E5%88%A5:Recentchanges|最近更新したページ]]のツールボックス(左サイドバーの広告の下)にあります。<br><br />
フォーラム(Google Groups)のRSSフィードは下記です。<br><br />
:https://groups.google.com/forum/feed/asterisk-ug/msgs/rss.xml?num=50<br />
ご利用ください。<br />
<br />
==Wikiの管理者権限==<br />
管理者権限が欲しい人は[[たかはし]]まで、ご連絡ください。<br><br />
Wikiページの書き換えや更新は、ユーザ登録を行っていただければできます。まだ登録されていない方は[[特別:Userlogin|アカウント作成ページ]]からユーザ登録をお願いします。</div>
Takatyan
https://www.voip-info.jp/index.php?title=SIP-Fail2ban&diff=11348
SIP-Fail2ban
2020-08-07T10:40:29Z
<p>Takatyan: /* CentOS 8 */</p>
<hr />
<div>IAXでのFail2banは'''[[IAX-Fail2ban]]'''を参照してください。<br />
==fail2ban==<br />
ログファイルとiptablesを利用したファイアウォールの一種。Brute Forceアタックの対策に使いやすい。<br><br />
:http://www.fail2ban.org/<br />
:http://sourceforge.net/projects/fail2ban/<br />
iptablesおよびpythonを必要とします。最新のFail2banではAsteriskにも対応しています。<br />
<br />
==CentOS==<br />
CentOSではepelからyumでインストールすることが可能です。<br />
yum install -y epel-release<br />
yum --enablerepo=epel -y install fail2ban<br />
yumでインストールした最新のFail2BanはAsteriskのログフォーマットを変更し、ローカル設定ファイルを作成するだけで使用することができます。<BR><br />
まずAsteriskのlogger.confを修正し<br />
[general]<br />
; Customize the display of debug message time stamps<br />
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)<br />
; see strftime(3) Linux manual for format specifiers<br />
dateformat=%F %T<br />
dateformatの箇所のコメント(;)を外して有効にし、Asteriskを再起動します。<br><br />
/etc/fail2ban/に以下の内容のjail.localというファイルを作成します。ファイルがある場合には修正します。<br />
[DEFAULT]<br />
ignoreip =<br />
backend = polling<br />
bantime = 3600 ; 1hour<br />
maxretry= 5<br />
usedns = no<br />
<br />
[asterisk]<br />
enabled = true<br />
fail2banを起動すると監視が始まります。<br />
<br />
<br />
===起動の確認===<br />
iptables -Lでiptablesの状態を確認するとfail2banでbanされたIPアドレス等が確認できます。<br />
Chain f2b-asterisk-tcp (1 references)<br />
target prot opt source destination<br />
REJECT all -- 46.17.42.180 anywhere reject-with icmp-port-unreachable<br />
RETURN all -- anywhere anywhere<br />
<br />
Chain f2b-asterisk-udp (1 references)<br />
target prot opt source destination<br />
REJECT all -- 46.17.42.180 anywhere reject-with icmp-port-unreachable<br />
RETURN all -- anywhere anywhere<br />
デフォルトではban時間は1時間です。<br />
<br />
==INVITEによるBrute force攻撃への対策==<br />
REGISTERメッセージによる攻撃以外に、INVITEによるBrute force攻撃も確認されています。<br />
<br />
この攻撃時に出力されるログメッセージは以下のようなものになります。<br />
<br />
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c <br />
<br />
このログメッセージの攻撃元IPアドレスが、FROMヘッダに記載されているIPアドレスになっています。<br />
<br />
このままでは、NAT配下のサーバーからの攻撃や、FROMヘッダが偽装された場合にfail2banで対応することができません。<br />
<br />
そこで、Asteriskへパッチを当てて、実際の攻撃元IPアドレスを表示するように修正します。<br />
<br />
===Asteriskへパッチを当てる===<br />
<br />
次のようなパッチをAsteriskに適用します。<br />
<br />
このパッチはAsterisk-1.4.40を対象にしていますが、1.6系、1.8系にも同様の修正で対応できます。<br />
<br />
--- asterisk-1.4.40.orig/channels/chan_sip.c 2011-01-05 02:11:48.000000000 +0900<br />
+++ asterisk-1.4.40/channels/chan_sip.c 2011-03-10 17:59:26.000000000 +0900<br />
@@ -15456,7 +15456,7 @@<br />
ast_log(LOG_NOTICE, "Sending fake auth rejection for user %s\n", get_header(req, "From"));<br />
transmit_fake_auth_response(p, SIP_INVITE, req, XMIT_RELIABLE);<br />
} else {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate user %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate user %s (%s:%d)\n", get_header(req, "From"), ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
}<br />
p->invitestate = INV_COMPLETED;<br />
<br />
こちらは Asterisk-1.8.23.0 用です。Asterisk-11.5.1 でもほぼ同じコードが使えます。<br />
<br />
--- asterisk-1.8.23.0/channels/chan_sip.c.orig 2013-08-02 11:41:03.233638321 +0900<br />
+++ asterisk-1.8.23.0/channels/chan_sip.c 2013-12-06 14:51:08.698990909 +0900<br />
@@ -22673,7 +22673,7 @@<br />
return 0;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return 0;<br />
@@ -23334,7 +23334,7 @@<br />
goto request_invite_cleanup;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
p->invitestate = INV_COMPLETED;<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
@@ -25164,7 +25164,7 @@<br />
p->lastinvite = seqno;<br />
return 0;<br />
} else if (auth_result < 0) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
ast_string_field_set(p, theirtag, NULL);<br />
@@ -25384,7 +25384,7 @@<br />
if (res == AUTH_CHALLENGE_SENT) /* authpeer = NULL here */<br />
return 0;<br />
if (res != AUTH_SUCCESSFUL) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
<br />
pvt_set_needdestroy(p, "authentication failed");<br />
<br />
Asterisk 11.23.1用パッチです。<br />
<br />
--- channels/chan_sip.c.orig 2016-09-09 01:28:35.000000000 +0900<br />
+++ channels/chan_sip.c 2016-10-28 23:26:38.985774935 +0900<br />
@@ -18751,7 +18751,7 @@ static void receive_message(struct sip_p<br />
return;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return;<br />
@@ -24963,7 +24963,7 @@ static int handle_request_options(struct<br />
return 0;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return 0;<br />
@@ -25798,7 +25798,7 @@ static int handle_request_invite(struct<br />
goto request_invite_cleanup;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
p->invitestate = INV_COMPLETED;<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
@@ -27788,7 +27788,7 @@ static int handle_request_publish(struct<br />
p->lastinvite = seqno;<br />
return 0;<br />
} else if (auth_result < 0) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
ast_string_field_set(p, theirtag, NULL);<br />
@@ -28003,7 +28003,7 @@ static int handle_request_subscribe(stru<br />
if (res == AUTH_CHALLENGE_SENT) /* authpeer = NULL here */<br />
return 0;<br />
if (res != AUTH_SUCCESSFUL) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s for SUBSCRIBE\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s) for SUBSCRIBE\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
<br />
pvt_set_needdestroy(p, "authentication failed");<br />
<br />
<br />
<br />
パッチを当てて、Asteriskをコンパイルし直し、再起動します。<br />
<br />
すると、先ほどの攻撃時のログは以下のように出力されるようになります。<br />
<br />
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c (123.45.67.89:5060)<br />
<br />
ログの( )内に攻撃元の実IPアドレスが表示されるようになり、これを元にfail2banで攻撃を検知することができます。<br />
<br />
===fail2banへ設定を追加===<br />
<br />
修正したログに合わせたフィルタ設定をfail2banに追加します。<br />
<br />
/etc/fail2ban/filter.d/asterisk.conf の failregex の項目に以下を追加します。<br />
<br />
NOTICE.* .*: Failed to authenticate user .* \(<HOST>:.*\)<br />
<br />
フィルタ追加後、fail2banを再起動し設定完了です。<br />
<br />
==securityログの設定==<br />
/etc/asterisk/logger.confに<br />
[logfiles]<br />
security => security<br />
を追加(コメント解除)して、/var/log/asterisk/securityにできるログをfail2banに監視させる方法もあります。<br />
<br />
==ステータス確認==<br />
fail2ban-client コマンドで問い合わせるのがいいです。<br />
# コマンド一覧<br />
fail2ban-client<br />
<br />
# 有効なjail一覧<br />
fail2ban-client status<br />
<br />
# jail名"asterisk"のステータス <br />
fail2ban-client status asterisk<br />
<br />
# 手動でban/unban<br />
fail2ban-client set asterisk banip 11.22.33.44<br />
fail2ban-client set asterisk unbanip 11.22.33.44<br />
banされてることになっていても、actionが正しく書けていないと実際にはfirewalldやiptablesなどに反映されず、攻撃されっぱなしもあり得るので、挙動確認が大事です。<br><br />
fail2ban-server コマンドは直接叩いてはいけないようです。<br><br />
または、ログファイル /var/log/fail2ban.log を見てもいいです。<br />
<br />
== CentOS 8 ==<br />
<br />
Asterisk16, CentOS 8でも同様にepelからdnfでインストールすることが可能です。<BR><br />
CentOS 8では、iptablesではなく、nftables及びfirewalldが使用されていますが、問題なく対応しています。<br />
dnf install -y epel-release<br />
dnf --enablerepo=epel -y install fail2ban fail2ban-systemd<br />
<br />
Asteriskのlogger.confの変更、/etc/fail2ban/jail.localの作成は上記、[[#CentOS|以前のCentOS]]と同様にしてください。<BR><br />
しかし、2020年8月7日時点では、ここでfail2banを起動しても<br />
2020-08-07 16:39:54,981 fail2ban.transmitter [58697]: WARNING Command ['server-stream', [['set', 'syslogsocket', 'auto']<br />
(略)<br />
Received ValueError('Action firewallcmd-rich-rules already exists',)<br />
2020-08-07 16:39:54,981 fail2ban [58697]: ERROR NOK: ('Action firewallcmd-rich-rules already exists',)<br />
<br />
というエラーが出て動きません。さしあたりの回避策として/etc/fail2ban/jail.d/00-firewalld.confを次のように変更します。<br />
(略)<br />
[DEFAULT]<br />
banaction = firewallcmd-ipset<br />
banaction_allports = firewallcmd-ipset<br />
#banaction = firewallcmd-rich-rules[actiontype=<multiport>]<br />
#banaction_allports = firewallcmd-rich-rules[actiontype=<allports>]<br />
<br />
これでfail2banを起動すると監視が始まります。<br />
systemctl enable fail2ban<br />
systemctl start fail2ban<br />
<br />
稼働状態の確認としては、上記fail2ban-clientコマンドまたは、次のコマンドが使用できます。<br />
ipset --list<br />
<br />
Asterisk 16及び[[Asterisk pjsip|pjsip]]を使用していると、Asteriskにパッチを当てる等しなくても[[#INVITEによるBrute force攻撃への対策|INVITEによるBrute force攻撃]]も防御できるようです。</div>
Takatyan
https://www.voip-info.jp/index.php?title=SIP-Fail2ban&diff=11347
SIP-Fail2ban
2020-08-07T07:54:37Z
<p>Takatyan: /* CentOS 8 */</p>
<hr />
<div>IAXでのFail2banは'''[[IAX-Fail2ban]]'''を参照してください。<br />
==fail2ban==<br />
ログファイルとiptablesを利用したファイアウォールの一種。Brute Forceアタックの対策に使いやすい。<br><br />
:http://www.fail2ban.org/<br />
:http://sourceforge.net/projects/fail2ban/<br />
iptablesおよびpythonを必要とします。最新のFail2banではAsteriskにも対応しています。<br />
<br />
==CentOS==<br />
CentOSではepelからyumでインストールすることが可能です。<br />
yum install -y epel-release<br />
yum --enablerepo=epel -y install fail2ban<br />
yumでインストールした最新のFail2BanはAsteriskのログフォーマットを変更し、ローカル設定ファイルを作成するだけで使用することができます。<BR><br />
まずAsteriskのlogger.confを修正し<br />
[general]<br />
; Customize the display of debug message time stamps<br />
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)<br />
; see strftime(3) Linux manual for format specifiers<br />
dateformat=%F %T<br />
dateformatの箇所のコメント(;)を外して有効にし、Asteriskを再起動します。<br><br />
/etc/fail2ban/に以下の内容のjail.localというファイルを作成します。ファイルがある場合には修正します。<br />
[DEFAULT]<br />
ignoreip =<br />
backend = polling<br />
bantime = 3600 ; 1hour<br />
maxretry= 5<br />
usedns = no<br />
<br />
[asterisk]<br />
enabled = true<br />
fail2banを起動すると監視が始まります。<br />
<br />
<br />
===起動の確認===<br />
iptables -Lでiptablesの状態を確認するとfail2banでbanされたIPアドレス等が確認できます。<br />
Chain f2b-asterisk-tcp (1 references)<br />
target prot opt source destination<br />
REJECT all -- 46.17.42.180 anywhere reject-with icmp-port-unreachable<br />
RETURN all -- anywhere anywhere<br />
<br />
Chain f2b-asterisk-udp (1 references)<br />
target prot opt source destination<br />
REJECT all -- 46.17.42.180 anywhere reject-with icmp-port-unreachable<br />
RETURN all -- anywhere anywhere<br />
デフォルトではban時間は1時間です。<br />
<br />
==INVITEによるBrute force攻撃への対策==<br />
REGISTERメッセージによる攻撃以外に、INVITEによるBrute force攻撃も確認されています。<br />
<br />
この攻撃時に出力されるログメッセージは以下のようなものになります。<br />
<br />
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c <br />
<br />
このログメッセージの攻撃元IPアドレスが、FROMヘッダに記載されているIPアドレスになっています。<br />
<br />
このままでは、NAT配下のサーバーからの攻撃や、FROMヘッダが偽装された場合にfail2banで対応することができません。<br />
<br />
そこで、Asteriskへパッチを当てて、実際の攻撃元IPアドレスを表示するように修正します。<br />
<br />
===Asteriskへパッチを当てる===<br />
<br />
次のようなパッチをAsteriskに適用します。<br />
<br />
このパッチはAsterisk-1.4.40を対象にしていますが、1.6系、1.8系にも同様の修正で対応できます。<br />
<br />
--- asterisk-1.4.40.orig/channels/chan_sip.c 2011-01-05 02:11:48.000000000 +0900<br />
+++ asterisk-1.4.40/channels/chan_sip.c 2011-03-10 17:59:26.000000000 +0900<br />
@@ -15456,7 +15456,7 @@<br />
ast_log(LOG_NOTICE, "Sending fake auth rejection for user %s\n", get_header(req, "From"));<br />
transmit_fake_auth_response(p, SIP_INVITE, req, XMIT_RELIABLE);<br />
} else {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate user %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate user %s (%s:%d)\n", get_header(req, "From"), ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
}<br />
p->invitestate = INV_COMPLETED;<br />
<br />
こちらは Asterisk-1.8.23.0 用です。Asterisk-11.5.1 でもほぼ同じコードが使えます。<br />
<br />
--- asterisk-1.8.23.0/channels/chan_sip.c.orig 2013-08-02 11:41:03.233638321 +0900<br />
+++ asterisk-1.8.23.0/channels/chan_sip.c 2013-12-06 14:51:08.698990909 +0900<br />
@@ -22673,7 +22673,7 @@<br />
return 0;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return 0;<br />
@@ -23334,7 +23334,7 @@<br />
goto request_invite_cleanup;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
p->invitestate = INV_COMPLETED;<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
@@ -25164,7 +25164,7 @@<br />
p->lastinvite = seqno;<br />
return 0;<br />
} else if (auth_result < 0) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
ast_string_field_set(p, theirtag, NULL);<br />
@@ -25384,7 +25384,7 @@<br />
if (res == AUTH_CHALLENGE_SENT) /* authpeer = NULL here */<br />
return 0;<br />
if (res != AUTH_SUCCESSFUL) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
<br />
pvt_set_needdestroy(p, "authentication failed");<br />
<br />
Asterisk 11.23.1用パッチです。<br />
<br />
--- channels/chan_sip.c.orig 2016-09-09 01:28:35.000000000 +0900<br />
+++ channels/chan_sip.c 2016-10-28 23:26:38.985774935 +0900<br />
@@ -18751,7 +18751,7 @@ static void receive_message(struct sip_p<br />
return;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return;<br />
@@ -24963,7 +24963,7 @@ static int handle_request_options(struct<br />
return 0;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
return 0;<br />
@@ -25798,7 +25798,7 @@ static int handle_request_invite(struct<br />
goto request_invite_cleanup;<br />
}<br />
if (res < 0) { /* Something failed in authentication */<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response_reliable(p, "403 Forbidden", req);<br />
p->invitestate = INV_COMPLETED;<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
@@ -27788,7 +27788,7 @@ static int handle_request_publish(struct<br />
p->lastinvite = seqno;<br />
return 0;<br />
} else if (auth_result < 0) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);<br />
ast_string_field_set(p, theirtag, NULL);<br />
@@ -28003,7 +28003,7 @@ static int handle_request_subscribe(stru<br />
if (res == AUTH_CHALLENGE_SENT) /* authpeer = NULL here */<br />
return 0;<br />
if (res != AUTH_SUCCESSFUL) {<br />
- ast_log(LOG_NOTICE, "Failed to authenticate device %s for SUBSCRIBE\n", sip_get_header(req, "From"));<br />
+ ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s) for SUBSCRIBE\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));<br />
transmit_response(p, "403 Forbidden", req);<br />
<br />
pvt_set_needdestroy(p, "authentication failed");<br />
<br />
<br />
<br />
パッチを当てて、Asteriskをコンパイルし直し、再起動します。<br />
<br />
すると、先ほどの攻撃時のログは以下のように出力されるようになります。<br />
<br />
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c (123.45.67.89:5060)<br />
<br />
ログの( )内に攻撃元の実IPアドレスが表示されるようになり、これを元にfail2banで攻撃を検知することができます。<br />
<br />
===fail2banへ設定を追加===<br />
<br />
修正したログに合わせたフィルタ設定をfail2banに追加します。<br />
<br />
/etc/fail2ban/filter.d/asterisk.conf の failregex の項目に以下を追加します。<br />
<br />
NOTICE.* .*: Failed to authenticate user .* \(<HOST>:.*\)<br />
<br />
フィルタ追加後、fail2banを再起動し設定完了です。<br />
<br />
==securityログの設定==<br />
/etc/asterisk/logger.confに<br />
[logfiles]<br />
security => security<br />
を追加(コメント解除)して、/var/log/asterisk/securityにできるログをfail2banに監視させる方法もあります。<br />
<br />
==ステータス確認==<br />
fail2ban-client コマンドで問い合わせるのがいいです。<br />
# コマンド一覧<br />
fail2ban-client<br />
<br />
# 有効なjail一覧<br />
fail2ban-client status<br />
<br />
# jail名"asterisk"のステータス <br />
fail2ban-client status asterisk<br />
<br />
# 手動でban/unban<br />
fail2ban-client set asterisk banip 11.22.33.44<br />
fail2ban-client set asterisk unbanip 11.22.33.44<br />
banされてることになっていても、actionが正しく書けていないと実際にはfirewalldやiptablesなどに反映されず、攻撃されっぱなしもあり得るので、挙動確認が大事です。<br><br />
fail2ban-server コマンドは直接叩いてはいけないようです。<br><br />
または、ログファイル /var/log/fail2ban.log を見てもいいです。<br />
<br />
== CentOS 8 ==<br />
<br />
Asterisk16, CentOS 8でも同様にepelからdnfでインストールすることが可能です。<br />
dnf install -y epel-release<br />
dnf --enablerepo=epel -y install fail2ban fail2ban-systemd<br />
<br />
Asteriskのlogger.confの変更、/etc/fail2ban/jail.localの作成は上記以前のCentOSと同様にしてください。<BR><br />
しかし、2020年8月7日時点では、ここでfail2banを起動しても<br />
2020-08-07 16:39:54,981 fail2ban.transmitter [58697]: WARNING Command ['server-stream', [['set', 'syslogsocket', 'auto']<br />
(略)<br />
Received ValueError('Action firewallcmd-rich-rules already exists',)<br />
2020-08-07 16:39:54,981 fail2ban [58697]: ERROR NOK: ('Action firewallcmd-rich-rules already exists',)<br />
<br />
というエラーが出て動きません。さしあたりの回避策として/etc/fail2ban/jail.d/00-firewalld.confを次のように変更します。<br />
(略)<br />
[DEFAULT]<br />
banaction = firewallcmd-ipset<br />
banaction_allports = firewallcmd-ipset<br />
#banaction = firewallcmd-rich-rules[actiontype=<multiport>]<br />
#banaction_allports = firewallcmd-rich-rules[actiontype=<allports>]<br />
<br />
これでfail2banを起動すると監視が始まります。<br />
systemctl enable fail2ban<br />
systemctl start fail2ban<br />
<br />
稼働状態の確認としては、上記fail2ban-clientコマンドまたは、次のコマンドが使用できます。<br />
ipset --list</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E9%BB%92%E9%9B%BB%E8%A9%B1_%E3%83%8F%E3%83%83%E3%82%AF&diff=11346
黒電話 ハック
2020-08-06T01:46:28Z
<p>Takatyan: /* 基本的な話 */</p>
<hr />
<div>最近どーも、黒電話をハックして再発見&再発明しようとしている人が多いようなのでページを作っておきます。<BR><br />
==まず読むべきもの==<br />
*電話はなぜつながるのか 知っておきたいNTT電話、IP電話、携帯電話の基礎知識<br />
:https://www.amazon.co.jp/dp/4822282864/<br />
*NTT技術参考資料(通称:ぎさんし)<br />
:https://www.ntt-east.co.jp/gisanshi/<br />
==基本的な話==<br />
アナログ電話機は2線式で全二重の音声通信をやっています。なので自分の音声も相手の音声も同一の線に乗ります。<BR><br />
:だから受話器からは自分の声も聞こえます<br />
基本的な電圧(直流バイアス)は48V(正確には-48V)<br />
:"電話"仕様のDCは48Vが基本です<br />
:PoEで48Vが使われるのはこの仕様が理由で、もともとツイストペア線ネットワークは電話線流用から始まっているため<br />
:鳴動(ベルを鳴らす)の際には直流バイアスに加えて48V(42~53V)の交流(AC:15~20Hz)を重畳します(技参資:3.5.2参照)。<br />
:"呼び"のインピーダンスは600Ωです。ただし端末(電話機)のインピーダンスは線路(電線)を加えたものになるので、これより低いのが普通です。<br />
"シグナリング"は受話器を上げた、下した、ダイヤルしたなどの操作によって相手と繋いだり切ったりすることを言います。<BR><br />
"ダイヤル"には2種類の方法があり回転(ロータリー)式の電話機はDP(ダイヤルパルス)、押しボタン(プッシュ)式の電話機はDT(ダイヤルトーン)です。<br />
:DPは10PPSと20PPSの2種類があります。PPSは秒間のパルスの数のこと<br />
:DPは受話器の上げ下ろし(オフ/オンフック)と等価なので器用な人はフックボタンでダイヤルできます<br />
:DTは2種類のトーンを同時に出して制御する方式です<br />
電話機に繋ぐポートを'''FXS'''、電話回線に繋ぐポートを'''FXO'''といいます。<br />
<br />
==ネットにつなぐには?==<br />
アナログ電話機をIP化する装置をATA(Analog Telephone Adapter)といいます。ATAはとても安い値段で売ってます。<BR><br />
:ただし、日本製ではないものが多いためDPに対応するATAは多くありません。<BR><br />
:DPに対応している代表的なものはNTT東西のひかり電話アダプタというかルータ(PRとかRT)か、ヤマハのアナログポートを持つものです。<BR><br />
:Grandstream の [http://www.grandstream.jp/%E3%83%9B%E3%83%BC%E3%83%A0/%E8%A3%BD%E5%93%81%E6%83%85%E5%A0%B1/ata%E3%83%BB%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4/%E3%82%A2%E3%83%8A%E3%83%AD%E3%82%B0%E9%9B%BB%E8%A9%B1%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF/handytone-802/ HT-802]がDPサポートしているって話もあるので人柱募集。<br />
::HT-801/4号A自動式電話機の組み合わせで発信および着信を確認しました。おそらく600-A1電話機でもイケるでしょう。ただし20pps(600/601-A2)による発信はダメみたいで、ダイヤルしてもせいぜい1桁までしか反応してくれない。<br />
:電話回線(NTT側)をIP化する装置はゲートウェイと呼びます。ATAによってはこの機能をあわせもつものもあります。<br />
:::ただし停電時バックアップ用にのみFXOを持つものはゲートウェイにはなりません。<br />
ATAを使うとIP化できるので一般的にはSIPで制御できるようになります。SIPになればAsteriskとかで制御簡単。<BR><br />
:IP化したけど、どうやって制御すんねーん!という人はAsteriskについて調べてください。ってか、ここ。<BR><br />
:USBのFXSもありますがあまりメジャーではないです。USB FXSを使う場合は制御がDAHDI(旧Zaptel)のものが多いのでAsteriskが要ります<br />
:目覚まし(モーニングコール)とか簡単にできるんだけどなぁ・・・<br />
<br />
==マイコンにつなぐには?==<br />
マイコンとかRaspberry Piにつなぐにはアナログの呼制御(シグナリング)をしてやらないとなのでちゃんとやろうとすると回路を作らないとだめです。<BR><br />
Raspberry Pi用にはFXS/FXOモジュールが乗るPi TDMというのが出ていたりします。<br />
:https://switchpi.com/shop-now/</div>
Takatyan
https://www.voip-info.jp/index.php?title=Opus%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF&diff=11345
Opusコーデック
2020-08-06T01:42:00Z
<p>Takatyan: ページの作成:「== 概要 == OpusコーデックはAsteriskで利用可能な音声コーデックの1つ。技術的特徴は[https://ja.wikipedia.org/wiki/Opus_(音声圧縮) Wikipedi...」</p>
<hr />
<div>== 概要 ==<br />
<br />
OpusコーデックはAsteriskで利用可能な音声コーデックの1つ。技術的特徴は[https://ja.wikipedia.org/wiki/Opus_(音声圧縮) Wikipediaの記事]を参照のこと。<br />
<br />
可変ビットレートであり、ビットレートに比して高音質で、低遅延とのことです。<br />
<br />
== 注意事項 ==<br />
<br />
インストール前に、提供元の[http://downloads.digium.com/pub/telephony/codec_opus/README README]をお読みください。<br />
<br />
使用状況の統計を24時間ごとにコミュニティサーバーに送信する旨が記載されています。<br />
<br />
また、バイナリパッケージの提供であり、x86またはx86_64のみの提供であるため、Raspberry Pi等の<b>ARMプロセッサ環境に対してはインストールできません。</b><br />
<br />
了解された上で、インストールを行ってください。<br />
<br />
== インストール ==<br />
<br />
=== Asterisk 16 ===<br />
<br />
Asterisk 16では、ビルド時にmake menuconfigでインストールするかどうかを選択します。<br />
<br />
インストールするを選択した場合、make install時にOpusコーデックのバイナリがダウンロードされ、インストールされます。<br />
<br />
make menuconfig <br />
<br />
Codec Translators → 下の方「External」の更に下 → codec_opusを選択肢、Enterキーで*マークをつけ、Save & Exitし、makeします。<br />
<br />
もし<br />
<br />
XXX codec_opus<br />
<br />
とXXXが表示されていて選択できない場合、何らかの依存ソフトウェアがインストールされていないためインストールできないようです。<br />
codec_opusを選択した状態で、下の方の「Depends on」に記載されているソフトウェアをインストールします。<br />
<br />
''CentOS 8ではxmlstarletが不足していましたが、何故かdnfからインストールできなかったので、RPMパッケージを手動でインストールしました。''<br />
<br />
依存ソフトウェアをインストールしたら、./configureからやり直します。その場合make menuconfigで設定した内容は消去されるので、必要な場合設定内容を手元にメモしてから./configureをやり直し、再度make menuconfigを実行します。<br />
<br />
make menuconfigが完了したら、makeでビルドを行います。続いて、sudo make installまたはrootユーザーでmake installを行います。Opusの追加のみの場合は、上書きインストールをしても問題は発生しませんでした。<br />
<br />
==== 設定 ====<br />
<br />
Asterisk設定ファイルのmodules.confに次の2行を追加します。<br />
load = codec_opus.so<br />
load = res_format_attr_opus.so<br />
<br />
追加しなくても動く場合もあるようですが、他コーデックとの変換に失敗する場合は上記の追加で改善します。(他コーデックと変換については下記「CLIでの確認」も参照。)<br />
<br />
続いて、pjsip.confのendpoint等でallow=opusと記載します。使用するクライアントでもOpusを使用する設定を行います。<br />
<br />
==== CLIでの確認 ====<br />
<br />
Opusが使用可能かどうかは、[[Asterisk CLI]]で次のコマンドを実行するとわかります。<br />
<br />
CLIコマンド:<br />
core show codecs<br />
<br />
結果(抜粋):<br />
29 audio opus opus (Opus Codec)<br />
<br />
CLIコマンド(コーデック同士の変換にかかるミリ秒を表示):<br />
core show translation<br />
<br />
結果:<br />
Translation times between formats (in microseconds) for one second of data<br />
Source Format (Rows) Destination Format (Columns)<br />
<br />
ulaw gsm slin8 slin12 slin16 slin24 slin32 slin44 slin48 slin96 slin192 g722 testlaw opus<br />
ulaw - 15000 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 15000 23000<br />
gsm 15000 - 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 15000 23000<br />
slin8 6000 6000 - 8000 8000 8000 8000 8000 8000 8000 8000 8250 6000 14000<br />
slin12 14500 14500 8500 - 8000 8000 8000 8000 8000 8000 8000 14000 14500 14000<br />
slin16 14500 14500 8500 8500 - 8000 8000 8000 8000 8000 8000 6000 14500 14000<br />
slin24 14500 14500 8500 8500 8500 - 8000 8000 8000 8000 8000 14500 14500 14000<br />
slin32 14500 14500 8500 8500 8500 8500 - 8000 8000 8000 8000 14500 14500 14000<br />
slin44 14500 14500 8500 8500 8500 8500 8500 - 8000 8000 8000 14500 14500 14000<br />
slin48 14500 14500 8500 8500 8500 8500 8500 8500 - 8000 8000 14500 14500 6000<br />
slin96 14500 14500 8500 8500 8500 8500 8500 8500 8500 - 8000 14500 14500 14500<br />
slin192 14500 14500 8500 8500 8500 8500 8500 8500 8500 8500 - 14500 14500 14500<br />
g722 15600 15600 9600 17500 9000 17000 17000 17000 17000 17000 17000 - 15600 23000<br />
testlaw 15000 15000 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 - 23000<br />
opus 23500 23500 17500 17500 17500 17500 17500 17500 9000 17000 17000 23500 23500 -<br />
<br />
他コーデックとの変換については、Opusと変換する他方のコーデックのモジュールについてもmodules.confに記載する必要があるようで、必要な場合、上記のmodules.confへの追加例に倣って記載してください。<br />
<br />
== 使ってみる ==<br />
<br />
ulawではVoicemailmainで各音声の末尾が切れているような感じ(「メッセージ」の「ジ」が聞こえる前に次の音声に移ってしまう)でしたが、Opusにしたら改善しました。</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan&diff=11344
利用者:Takatyan
2020-08-05T09:23:56Z
<p>Takatyan: </p>
<hr />
<div>* Takatyanの投稿した内容については、サイト管理人[[たかはし]]、または、その許諾する者に対し、あらゆる利用を認めます。<br />
* 一方で、投稿内容の正しさについてはTakatyanは一切保証しませんし、たとえ誤りがあっても、投稿内容を利用したことについての責任は負いません。<br />
* Takatyanは個人的に試して判明したことや、調べてわかったことをまとめて投稿しているか、明らかな誤字修正等を行うのみであり、宣伝等の意図はありません。<br />
<br />
[[Category:人々]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_SIP_%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&diff=11343
Asterisk SIP セキュリティ
2020-08-05T09:22:47Z
<p>Takatyan: /* SIPのユーザ名/パスワードを、わかりにくくする */</p>
<hr />
<div>AsteriskのSIPのセキュリティを向上させる方法<br />
=大前提=<br />
まず第一に用事がない(外からREGISTさせる必要がない)Asteriskはインターネットから到達可能な所に置かない、つまりインターネットに出さない/開かないのが当然の措置です。一般的な内線網であれば、外部との接続にはゲートウェイ等が用いられるためIPリーチャブルなところにAsteriskを置く必要はありません。<br><br />
サンプル設定ファイルをそのまま使用してはいけません。サンプル設定ファイルの中身は「誰でも」見られますし、公開されています。つまり攻撃者も同じ情報を入手できるということです。<br><br />
当たり前の話ですが、外部に対してサーバを開くことの危険性を理解していないのであれば、サーバをインターネット上に出すべきではありません。<br />
==allowguest==<br />
現在配布しているサンプル設定ファイルでは allowguest=no を指定してありますが、以前配布していたものにはこの指定がなく、デフォルトの yes になっていましたので注意してください。<br><br />
基本 sip.conf には allowguest=no を指定しておいて下さい。yes を指定する場合/理由は自分で調べてください。<br><br />
<br />
=総当たり対策=<br />
SIPのユーザ名、パスワードを総当たりしてくる攻撃の対策方法。<br><br />
総当たりで来るので、対策はそこそこ面倒です。<br><br />
==SIPポート番号をずらす==<br />
デフォルトのSIPポートは5060/udpですが、これを別なポート番号にしてください。<br><br />
現在よく見られる攻撃は5060を狙い撃ちで来ます。このためSIPポート番号を移動することによって効果的な"逃げ"が行えます。<br><br />
ただしSIPポート番号を変更した場合には電話機等のSIPクライアント側も設定変更を行う必要があります(当然ですが)。<br><br />
==iptablesなどソースIPによるフィルタリング==<br />
一般的なセキュリティ対策と同様に通す/通さないIPアドレスが明確な場合には効果的な対策のひとつです。<br><br />
特定のIPアドレスないしは、レンジからのREGISTERやSIPのセッションしか通さないのであれば、そのIPアドレスに対してのみSIP(5060)とRTP(UDPの10000~20000など)を開きます。<br><br />
ただしこの方法は「相手」のIPアドレスが明確な場合にのみ使える方法です。<br><br />
==Fail2banを使用する==<br />
fail2ban はログファイルを検査することにより、iptablesへ登録することでブロックする方式のツールです。SSHへのBruto Forceアタック対策などに使用されますが、Asteriskのログ検査を行うことでSIPをブロックするのにも使用できます。<br><br />
→[[SIP-Fail2ban]]<br />
<br />
==ドメイン認証を使う==<br />
sip.confのグローバルに以下の設定を追加します。<br />
domain=nanntoka.kanntoka.tld<br />
こうすると、SIPチャネルはこのドメインを持つものからのREGISTER以外は受付けなくなります。ただし、IPアドレスをドメインに使っている場合には、このIPアドレスも併記する必要があります。<br><br />
domain=nanntoka.kanntoka.tld<br />
domain=192.168.1.120<br />
このように複数を記述することができます。<br><br />
ただしこの方法は簡単に裏をかかれる可能性が高いので過信してはいけません。設定したから安全だと思わないように。他のセキュリティ対策を必ず併用してください。<br><br />
<br><br />
==SIPのユーザ名/パスワードを、わかりにくくする==<br />
===パスワードを長くする===<br />
まず第一にパスワードを長くし、わかりにくい文字列に変更すると総当たりされた場合に、ヒットする確率を下げることができます。<br />
===ピア名を長くする===<br />
サンプルの設定ファイルでは簡素化のために"内線番号=SIPピア名"という形で記述していますが、これは必ずしもイコールである必要はありません。ここをイコールにしている理由は<br />
exten => _2XX,1,Dial(SIP/${EXTEN})<br />
のように内線番号そのままでSIPピアにダイヤルしたいからです。もし、この利便性を捨ててかまわないのであれば、以下のような記述はアリです。<br />
---sip.conf---<br />
[4207f1257d2a12cb]<br />
username=4207f1257d2a12cb<br />
secret=なんちゃら<br />
・<br />
・<br />
---extensions.conf<br />
exten => 201,1,Dial(SIP/4207f1257d2a12cb)<br />
内線番号とSIPのピア名の紐付けを行っているのはextensions.confです。なので、extensions.confの中で正しく記述されていれば、SIPのピア(ユーザ)名は内線番号と一致している必要はありません。<br />
===上の応用===<br />
上の方法を応用して、「ひみつのフレーズ」を付加することでピア(ユーザ)名を「わかりにくく」することが可能です。ただし、この「ひみつのフレーズ」を知られてしまっては意味がないので注意してください。<br><br />
まず sip.conf はこんな感じ<br />
---sip.conf---<br />
[5e8518af331d-201]<br />
username=5e8518af331d-201<br />
secret=なんちゃら<br />
・<br />
・<br />
次にextensions.confはこんな感じ<br />
exten => _201.,1,Dial(SIP/5e8518af331d-${EXTEN})<br />
このフレーズの部分 5e8518af331d を使うことで、ピア名を長くしてしまうわけです。<br />
<br />
==Asterisk 11の名前付きACLを使う==<br />
Asterisk 11から名前付きACL(Named ACL)が使用可能になっています。これを使うことで、SIPのピア毎にアクセス制御をかけることが可能です。<br />
*[[Asterisk 11 名前付きACL]]<br />
<br />
=外にかけられないように対策=<br />
勝手に外(外線)に対して発信できないように規制をかけることで、電話を勝手に使われて費用が発生してしまうことを防ぐことができます。<br><br />
==外線プレフィックスを特殊なものにしてしまう==<br />
一般的に外線発信を単に、頭'0'で始めたり'0'ないしは'9' (03-, 003-のスタイル)で行えるようにしてしまっている所が多いと思います。これをワザと変なものにしてしまいます。例えば567とか何か適当なプレフィックスを外線発信用としてしまえば、ユーザ/パス総当たり->外線プレフィックス総当たり と両方を破って外に出られてしまうという危険性はかなり低くなります。<br><br />
exten => _567.,1,Dial(SIP/${EXTEN:3}@outband-gateway)<br />
とかのように書いてしまいます。<br><br />
==内線番号によって発信規制する==<br />
これはREGISTERされてCIDを騙られると効果はありませんが、特定の内線からのみ外線発信しておくことで若干は効果が期待できます。<br><br />
==発信先規制を入れる==<br />
海外に通話できる番号を禁止してしまいましょう。そうすれば海外に対して発信できないので超高額な電話代の請求をされる可能性は、ぐっと低くなります。<br><br />
例えば頭が'00'とか'010'に対しては発信させないようにextenで書いてしまいます。ですが、これでは国際通話ができないので不便という場合には「超長いプレフィックス」などを使うとダイヤルできるようにしておくと良いでしょう。<br><br />
==そもそもの海外発信契約を止める==<br />
キャリアと契約すると黙っていても国際通話ができるようになっていますが、これを止めます。一番安全かもしれません。<br />
[[Category:セキュリティ]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan&diff=11342
利用者:Takatyan
2020-08-05T07:18:59Z
<p>Takatyan: ページの作成:「* Takatyanの投稿した内容については、サイト管理人たかはし、または、その許諾する者に対し、あらゆる利用を認めます。 *...」</p>
<hr />
<div>* Takatyanの投稿した内容については、サイト管理人[[たかはし]]、または、その許諾する者に対し、あらゆる利用を認めます。<br />
* 一方で、投稿内容の正しさについてはTakatyanは一切保証しませんし、たとえ誤りがあっても、投稿内容を利用したことについての責任は負いません。<br />
* Takatyanは個人的に試して判明したことや、調べてわかったことをまとめて投稿しているか、明らかな誤字修正等を行うのみであり、宣伝等の意図はありません。</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_pjsip&diff=11341
Asterisk pjsip
2020-08-05T06:59:37Z
<p>Takatyan: /* CLIコマンド */ スペルミス修正</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:pjsip]]<br />
<br />
AsiteriskでチャネルにPjSIPを使用する際の設定方法など<br />
==コンパイル==<br />
Asterisk 13まではpjprojectを別個インストールするか、configureに--with-pjproject-bundledを付けて実行する必要がありましたが、Asterisk 16からはデフォルトでbundledインストールされるようになりました。<BR><br />
各バージョン毎のインストール方法についてはAsteriskのそれぞれのページを参照してください。<BR><br />
[[Asterisk 13]]<BR><br />
[[Asterisk 16]]<BR><br />
<br />
==変換ツール==<br />
Asterisk 13以降であれば ソースディレクトリ/contrib/scripts/sip_to_pjsip の下にPythonのスクリプトがあります(複数)。sip.confのあるディレクトリでこれを実行するとpjsip.confに変換してくれます。#includeしている場合にはそれらも変換してくれますが、完璧ではないです。<br />
==Asterisk 16における注意点==<br />
PjSIPはres_statsd.soに依存します。このためres_statsdがloadされていないと、res_pjsipがloadされない問題が発生します。<BR><br />
(Asterisk 16ではモジュールの依存関係チェックが厳密化されています)<BR><br />
res_statsdモジュールはstatsd.confファイルが無いとloadされないため、statsd.confファイルが無いだけで、PjSIPが使えないという困った状態になります。ソースファイルに含まれる statsd.conf.sample を /etc/asterisk/statsd.conf にコピーしておいてください。もっとも、このファイルはコメントされた行だけなので要するに空なのですが。<br />
<br />
==パラメータ一覧==<br />
[[Asterisk pjsip parameters]]<br />
<br />
==基本設定==<br />
*間違いやすいところ<br />
:sip.confでは1wordだったのがアンダーバーが入る<br />
:dtmfmode → dtmf_mode<br />
:fromdomain → from_domain<br />
===グローバル設定===<br />
設定は基本としてはpjsip.confに書きます。<BR><br />
*[[Asterisk_pjsip_parameters#GLOBAL]]<BR><br />
グローバル設定を使用する場合にはtype=grobalのセクションを書きます。<BR><br />
[grobal]<br />
type=grobal<br />
max_forwards = 50<br />
SIPの基本パラメータやPjSIPの動作に関わるパラメータはSystemで設定します。<BR><br />
*[[Asterisk_pjsip_parameters#SYSTEM]]<BR><br />
<br />
===インクルード===<br />
Asteriskの他の設定ファイル同様に#includeが使えます。なので、電話機と回線は別ファイルにした方が見通しは良いかもしれません。例えば<BR><br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
<br />
#include pjsip_phones.conf<br />
#include pjsip_trunk_hikari.conf<br />
のようにファイルを分割し、includeすると管理が楽になります。<br />
<br />
基本で必要なものは以下です。<br />
<br />
===トランスポート===<br />
[transport-udp]<br />
type = transport<br />
protocol = udp<br />
bind = 0.0.0.0:5070<br />
sip.confに書いていたものと同じですが、トランスポートはセクションで明示指定します。上の例では5070ポートにbindさせていますが、5060を使用する場合にはここを5060にします。<BR><br />
<br />
===ACL===<br />
ACLの例は次の通りです。<br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
※deny,permitはこの順でないとpermitしてdenyしてしまう模様で、逆に書くと誰も使えなくなります。<BR><br />
<BR><br />
pjsip.confに複数のACL(type=acl)を書くとそのセクション名にかかわらず後ろにあるACLの方が勝つ模様。<BR><br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
<br />
[acl-my]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=10.10.0.0/16<br />
と、書くとacl-myが勝つので要注意です。複数を許可したい場合には1セクションで<br />
[acl]<br />
type=acl<br />
deny=0.0.0.0/0.0.0.0<br />
permit=192.168.0.0/16<br />
permit=10.10.0.0/16<br />
のように書きます。<BR><br />
*[[Asterisk_pjsip_parameters#ACL.28res_pjsip_acl.29]]<br />
→[[Asterisk pjsip ACL]]<br />
<br />
===認証情報(Auth)===<br />
sip_confではピア(エンドポイント)の認証がわかりにくかったのですが、PjSIPでは別なセクションで(type=auth)認証情報を定義するようになりました。このため、認証情報がピア名(sip.confの[ ])に紐付かなくなりました。<BR><br />
慣れないとわかりにくい感じがしますが、管理がより柔軟になります。例えば<br />
[some-phone]<br />
type = endpoint<br />
.<br />
.<br />
.<br />
auth = phone-auth<br />
outbound_auth = phone-out-auth<br />
のようなendpointが定義されている場合には、2つのauthセクションが必要です。<br />
[phone-auth]<br />
type = auth<br />
username = phone123<br />
password = phonepassword<br />
このAuthは'[some-phone]'エンドポイントに接続、すまり外からの"入り"の際の認証情報です。<BR><br />
[phone-out-auth]<br />
略<br />
このAuthはoutbound_authで設定されているので、このエンドポイントからの"出"の際の認証情報です。<BR><br />
<br />
==電話機==<br />
電話機の接続は [[Asterisk pjsip 電話機]] のページへ<br />
==トランク==<br />
回線接続側は [[Asterisk pjsip trunks]]のページへ<br />
<br />
==Wizard==<br />
Asteriskにはpjsip_wizardが組み込まれており、PjSIPの設定を簡素化することができます。使う場合の条件は以下の通りです。<br />
*基本の設定はpjsip.confに書く<br />
:transportなどの情報はpjsip.confに書く必要があります<br />
*Wizard用のファイル名はpjsip_wizard.conf<br />
*共通化したテンプレート内で各セクションを指定するにはスラッシュ(/)で区切る<br />
*Wizardは電話機でもトランクでも使用できる<br />
:registration/を書くとregistrationセクションがつくられる<br />
:例: endpoint/dtmf_mode<br />
pjsip_wizard.confの記述例<br />
;電話機用テンプレート(共通設定)<br />
[phone-defaults](!)<br />
type=wizard<br />
transport = transport-udp<br />
accepts_registrations = yes<br />
sends_registrations = no<br />
accepts_auth = yes<br />
sends_auth = no<br />
endpoint/context = default<br />
endpoint/dtmf_mode = rfc4733<br />
endpoint/call_group = 1<br />
endpoint/pickup_group = 1<br />
endpoint/language = ja<br />
endpoint/disallow = all<br />
endpoint/allow = ulaw<br />
endpoint/rtp_symmetric = yes<br />
endpoint/force_rport = yes<br />
endpoint/direct_media = no<br />
endpoint/send_pai = yes<br />
endpoint/send_rpid = yes<br />
endpoint/rewrite_contact = yes<br />
endpoint/inband_progress = yes<br />
endpoint/allow_subscribe = yes<br />
endpoint/transport = transport-udp<br />
aor/max_contacts = 1<br />
aor/qualify_frequency = 30<br />
aor/authenticate_qualify = no<br />
<br />
;各電話機個別設定<br />
[phone1](phone-defaults)<br />
inbound_auth/username = phone1<br />
inbound_auth/password = mypasswordishere<br />
<br />
==CLIコマンド==<br />
*sip show peersに対応するのはpjsip show endpoints<br />
*sip show peer phone1などピア情報を表示するのはpjsip show endpoint phone1<br />
*AORを表示するのは一覧ならpjsip show aorsでピアの情報を表示するのはpjsip show aor phone1のようにする<br />
*それぞれの設定項目で何が設定されているかを確認するには pjsip show endpoint phone1 のようにすると phone1 の endpoint パラメータ一覧が表示される。aorを見たければ pjsip show aor phone1。これはトランクの場合も同様で pjsip show registration hikari-hgw のようにするとregister関係のパラメータがみえる。<br />
<br />
==挙動上の注意点==<br />
===挙動そのもの===<br />
chan_sipより制限が少し"きつい"です。SIPメッセージの中に少しおかしなものがあってもchan_sipでは制限が緩かったので、通っていたものがPjSIPでは通らないことがあります。CLI等で'syntax error'のようなメッセージが出る場合にはSIPメッセージにおかしなところがあるかもしれないので調べてください。<br />
===AddHeader===<br />
chan_sipの場合にはSIPAddHeaderでSIPヘッダを追加できましたが、PjSIPではファンクションPJSIP_HEDER()を使用します。ただしこのファンクションはextenの途中で使用しても効果がありません。Dial時にサブルーチンコールしてやる必要があります。<BR><br />
例えばAlert-Info: hogeを追加するにはまず以下のよなルーチンを定義します。<br />
[add-alert]<br />
exten => s,1,Set(PJSIP_HEADER(add,Alert-Info)=hoge)<br />
exten => s,n,Return<br />
Dial時に以下のようにしてコールします<br />
exten => 201,1,Dial(PJSIP/201,,b(add-alert,s,1))<br />
<br />
==設定変更の反映==<br />
*モジュール数が多すぎて一発リロードする方法がよくわからない<br />
*module reload res_pjsip.soを実行すれば"だいたい"はいけそう<br />
:wizardのaor/を変更しても反映されない場合がある<br />
==PjSIPで拡張される機能==<br />
[[pjsip_機能拡張]]</div>
Takatyan
https://www.voip-info.jp/index.php?title=Asterisk_16&diff=11336
Asterisk 16
2020-08-03T05:25:12Z
<p>Takatyan: CentOS 8の記載を追加</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[カテゴリ:pjsip]]<br />
<br />
Asterisk 16.0.0が2018年10月9日(現地時間)リリースされました。<br><br />
:メンテナンス終了は2022年10月<br />
:セキュリティフィックス提供終了は2023年10月<br />
==概要==<br />
Asterisk 16は最新のAsteriskのメジャーリリースで、Asterisk 13同様にLTS(Long Term Support:通常4年)になります。<br />
:https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions<br />
===Asterisk 13からの変更点で重要なもの===<br />
*app_faxは廃止予定<br />
:res_faxへ移行のこと<br />
*'''app_macroは廃止予定'''<br />
:デフォルトではapp_macroはコンパイルされない<br />
:app_stack(Gosub)へ移行のこと → [[extension_Macro_To_Gosub]]<br />
*AMI/ARIのイベントにいくつか変更あり<br />
*libjanssonは2.11以上のバージョンが必要<br />
*cdr_syslogは廃止予定<br />
:デフォルトではコンパイルされない<br />
*res_config_sqliteは廃止予定<br />
:デフォルトではres_config_sqliteはコンパイルされない<br />
:res_config_sqlite3に移行のこと<br />
*'''res_monitorは廃止予定'''<br />
:app_mixmonitorに移行のこと<br />
*libeditは組み込みでは提供されなくなったのでOSのパッケージでインストールのこと<br />
<br />
==注意==<br />
将来的にSIPチャネルはPjSipが標準となる模様です。なるべくはやい時期にchan_sipからPjSipへの移行をお勧めします。Asterisk 16からはconfigureのオプションなしでもbundledでpjsipをダウンロードするようです。→ [[Asterisk pjsip]]<br><br />
なおAsterisk 16ではPjSIPはstatsdに依存しています。上のページの注意点をよく読んで設定してください。<br><br />
<br><br />
Macroが廃止予定にされているので注意が必要です。Macroを多用している場合には早い時期にGosub/Returnへの書き換えが必要です。<BR><br />
'''単純にmake installしてしまうとMacro()もDialのMも動かなくなるのでハマりますよ!'''<br />
<br />
==日本語音声の扱い==<br />
core sound packageでJAが使用可能ですが、Asterisk 16で変更された音声に対応しているかどうかは不明です。<br />
<br />
==インストール==<br />
===前提となるパッケージ類=== <br />
GCC、G++(GNU-C++)、OpenSSL、Ncurses、bison、カーネルソース(DAHDIを使う場合)、libxml2、SQLite3、libuuid-devel uuid-devel、json-c、json-c-devel<br><br />
CentOS 7 minimalからインストールする場合、以下の手順でコンパイル環境を整えます。<br><br />
CentOS 8 minimalからインストールする場合で、yum installで必要なパッケージが無い旨のエラーが出たときは「--enablerepo=PowerTools」を付与して実行すると上手くいきます。<br><br />
Asterisk 16からlibeditがパッケージで必要となったため追加しておく必要があります。<br><br />
開発環境系パッケージを一括インストールしておきます。<br />
yum groupinstall "Development Libraries" "Additional Development"<br />
パッケージを追加<br><br />
yum install gcc gcc-c++<br />
yum install libxml2 libxml2-devel openssl-devel ncurses-devel sqlite-devel newt-devel libuuid-devel uuid-devel libedit-devel<br />
yum install json-c json-c-devel<br />
<br />
openssl-develをインストールするとkrb5-devel,zlib-develも一緒に付いて来るので別途インストールの必要はありません。<br><br />
Asteriskは現在のバージョンではBerkley DBではなくSQLite3をDBとして使用しますので、SQLite3と開発環境が必要です。<br><br />
newt-develがないとmenuselectがフルスクリーンコントロールになりません。テキストベースになります。<br><br />
<br><br />
CentOSのminimalだと足りないツール類がいくつかあるので入れておきます。<br />
yum install wget bzip2 patch<br />
format_mp3など、一部のソースはAsteriskに含まれないため別途入手しますが、この際にSubversionが必要となりますので、Subversionも入れておきます。<br />
yum install subversion<br />
<br />
Asteriskは10以降でMySQLサポートが"非常に"制限されています。このためCDRをMySQLで管理するような場合にはODBCが必要となるため、AsteriskのODBCサポート(res_odbc)を有効にする場合には以下も必要です。<br />
yum install unixODBC unixODBC-devel mysql-connector-odbc<br />
yum install libtool-ltdl libtool-ltdl-devel <br />
<br><br />
システムを最新の状態にアップデート<br />
yum update<br />
カーネルが更新された場合にはリブートしておきます。<br><br />
<br />
===janssonのインストール===<br />
個別インストールせずbundledインストールが可能です。configureのオプションで指定してください。<br />
./configure --with-jansson-bundled<br />
<br />
===Asteriskソースの入手===<br />
Asterisk 16のソースは以下からダウンロードできます。なお asterisk-16-current.tar.gz が最新バージョンへのシンボリックリンクとなっていますので、これをダウンロードすれば最新バージョンが入手できます。<br />
http://downloads.asterisk.org/pub/telephony/asterisk/<br />
展開するディレクトリはどこでもかまいませんが、ここでは/usr/src/とします。<br />
# cd /usr/src<br />
# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz<br />
入手したら展開しておきます。展開すると現在のAsteriskのバージョンのディレクトリに展開されます。以降それぞれの作業は、それぞれの展開したサブディレクトリで行います。<br />
# tar zxvf asterisk-16-current.tar.gz<br />
# cd asterisk-16.x.x<br />
<br />
===Asteriskのコンパイルとインストール===<br />
基本的にconfigureしてmakeするだけです。<br />
# ./configure<br />
*16でjanssonをbundleインストールするには以下を実行します(通常はこの方法)<br />
# ./configure --with-jansson-bundled<br />
日本語音声ファイルをインストールする場合には./configureの後 make menuselectを実行します。<br />
# make menuselect<br />
メニュー画面から '''Core Sound Packages'''で'''CORE_SOUND-JA-....'''の必要なフォーマットのファイルを選択し、[Save & Exit]でmenuselectを終了します。<BR><br />
extenでMacro()を使用している場合、デフォルトではコンパイルされなくなったので注意してください。make menuselectでappのMacroを明示的にON指定してください(deprecatedの下にあります)。<BR><br />
<BR><br />
以前のバージョンからアップグレードを行う場合、変更されたモジュール類が多いので、一旦、以前のモジュールをディレクトリごと名前変更してバックアップしてからインストールしてください。<BR><br />
mv /usr/lib/asterisk/module /usr/lib/asterisk/module.13.bak<br />
<br />
あとはコンパイルとインストールを行うだけです。<br />
# make<br />
# make install<br />
# make samples<br />
*make configはCentOS 7では注意<br />
:[[Asterisk Startup systemd]]<br><br />
CentOS 7以前のOSならばmake configしておくと自動起動します。<br />
# make config<br />
これで新規インストールは完了します。最後の make config で起動時に自動起動するようになります。<br><br />
<br />
===MP3を使用する場合の注意===<br />
MP3関連(MoHなど)を使用する場合には、MP3系のソースはAsterisk本体に含まれていないため、コンパイル時にエラーになりますが、ソース入手のスクリプトが付属しています。<br />
# ./contrib/scripts/get_mp3_source.sh<br />
これを実行すればMP3関連のモジュールがコンパイルできるようになります。<br />
<br />
===SIPチャネルとしてPjsipを使う場合===<br />
Asterisk 16からPjSIPはデフォルトでbundled扱いでダウンロード/コンパイルが行われます。このためconfigureを実行するだけでPjSIPも組み込まれます。<br />
<br />
==サンプル設定ファイル==<br />
単純な使用ならばAsterisk 13用の設定ファイルが使えます。<BR><br />
:[[Asterisk 13 サンプル設定ファイル]]<br />
PjSIPを使用して電話機を収容したい場合には以下のファイルを使ってください。<BR><br />
:PjSIP用サンプル設定ファイル https://www.voip-info.jp/images/8/87/Conf-sample-pj.zip<br />
<br />
==ひかり電話ホームの使用==<br />
*chan_sipの今後のサポートが怪しいので、PjSIPを使ってください。 <br />
:[[pjsip ひかり電話HGW]]を参照してください。<br />
:chan_sipをどうしても使いたい場合にはMACアドレス認証を使ってください。<br />
:<del>パッチを作るかどうかはお悩み中</del><br />
:今後はパッチは提供しません。chan_sipが廃止方向にあるのでpjsipを使ってください。</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan/sandbox&diff=10875
利用者:Takatyan/sandbox
2018-08-26T06:03:50Z
<p>Takatyan: </p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[Category:練習場]]<br />
<br />
<span style="color: red;">このページは[[利用者:Takatyan|Takatyan]]のサンドボックスです。編集を試したり下書きを置いておくための場所です。内容は記載途中のものに過ぎません。</span><br />
<br />
chan_dongleは、USB接続で3Gモデムを接続し、音声通話、SMSをAsteriskから扱えるようにするモジュールです。<br />
<br />
==インストール==<br />
===前提条件===<br />
* CentOS 7.5で検証しています。カーネルは「kernel-3.10.0-862.9.1.el7.x86_64」で検証しています。<br />
* [[Asterisk 13|Asterisk 13.22.0]]をソースからビルドしてインストールしています。<br />
* 使用可能な3Gモデムについては、[http://wiki.e1550.mobi/doku.php?id=requirements 公式サイト]を参照のこと。<br />
<br />
===必要なツール===<br />
ソースコードの入手及びビルドのために、git, autoconf, automakeが必要です。<br />
<br />
sudo yum install git autoconf automake<br />
<br />
===ソースコードの入手===<br />
ソースコードは[https://github.com/bg111/asterisk-chan-dongle github]でオリジナルのものが配布されていますが、そのままではAsterisk 13にはインストールできません。<br />
[https://github.com/bg111/asterisk-chan-dongle/pull/216/commits プルリクエスト216]は2018年8月現在プルされていませんが、これを手元でマージします。そのための手順は次のようになります。<br />
<br />
git clone https://github.com/bg111/asterisk-chan-dongle.git<br />
cd asterisk-chan-dongle<br />
git fetch origin pull/216/head:asterisk_13<br />
git checkout asterisk_13<br />
<br />
これでAsterisk 13で使用できるchan_dongleソースコードができました。<br />
ビルドの前に、SELinux有効下での使用を考えていらっしゃる方は下記を修正します。<br />
<br />
// 119行目<br />
// return snprintf(buf, length, "/var/lock/LCK..%s", basename);<br />
return snprintf(buf, length, "/var/lock/'''lockdev/'''LCK..%s", basename);<br />
<br />
これをビルド、インストールします。<br />
./bootstrap<br />
./configure --with-asterisk=../asterisk-13.22.0/include -with-astversion=13.22.0<br />
make<br />
sudo make install<br />
<br />
'''以下記載途中'''<br />
<br />
'''以下記載予定'''<br />
* SELinux有効下で使う方法<br />
* 設定ファイルの書き方</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan/sandbox&diff=10862
利用者:Takatyan/sandbox
2018-08-22T07:42:20Z
<p>Takatyan: </p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[Category:練習場]]<br />
<br />
<span style="color: red;">このページは[[利用者:Takatyan|Takatyan]]のサンドボックスです。編集を試したり下書きを置いておくための場所です。内容は記載途中のものに過ぎません。</span><br />
<br />
chan_dongleは、USB接続で3Gモデムを接続し、音声通話、SMSをAsteriskから扱えるようにするモジュールです。<br />
<br />
==インストール==<br />
===前提条件===<br />
* CentOS 7.5で検証しています。カーネルは「kernel-3.10.0-862.9.1.el7.x86_64」で検証しています。<br />
* [[Asterisk 13|Asterisk 13.22.0]]をソースからビルドしてインストールしています。<br />
* 使用可能な3Gモデムについては、[http://wiki.e1550.mobi/doku.php?id=requirements 公式サイト]を参照のこと。<br />
* コンパイラ等のツールは、Asteriskインストール時のもののほか、git、autoconf?など(検証中)<br />
<br><br />
===ソースコードの入手===<br />
ソースコードは[https://github.com/bg111/asterisk-chan-dongle github]でオリジナルのものが配布されていますが、そのままではAsterisk 13にはインストールできません。<br />
[https://github.com/bg111/asterisk-chan-dongle/pull/216/commits プルリクエスト216]は2018年8月現在プルされていませんが、これを手元でマージします。そのための手順は次のようになります。<br />
<br />
git clone https://github.com/bg111/asterisk-chan-dongle.git<br />
cd asterisk-chan-dongle<br />
git fetch origin pull/216/head:asterisk_13<br />
git checkout asterisk_13<br />
<br />
これでAsterisk 13で使用できるchan_dongleソースコードができました。<br />
ビルドの前に、SELinux有効下での使用を考えていらっしゃる方は下記を修正します。<br />
<br />
// 119行目<br />
// return snprintf(buf, length, "/var/lock/LCK..%s", basename);<br />
return snprintf(buf, length, "/var/lock/'''lockdev/'''LCK..%s", basename);<br />
<br />
これをビルドします。<br />
./configure --with-asterisk=../asterisk-13.22.0/include -with-astversion=13.22.0<br />
<br />
'''以下記載途中'''<br />
<br />
'''以下記載予定'''<br />
* SELinux有効下で使う方法<br />
* 設定ファイルの書き方</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan/sandbox&diff=10861
利用者:Takatyan/sandbox
2018-08-22T05:58:15Z
<p>Takatyan: </p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[Category:練習場]]<br />
<br />
<span style="color: red;">このページは[[利用者:Takatyan|Takatyan]]のサンドボックスです。編集を試したり下書きを置いておくための場所です。内容は記載途中のものに過ぎません。</span><br />
<br />
chan_dongleは、USB接続で3Gモデムを接続し、音声通話、SMSをAsteriskから扱えるようにするモジュールです。<br />
<br />
==インストール==<br />
===前提条件===<br />
* CentOS 7.5で検証しています。カーネルは「kernel-3.10.0-862.9.1.el7.x86_64」で検証しています。<br />
* [[Asterisk 13|Asterisk 13.22.0]]をソースからビルドしてインストールしています。<br />
* 使用可能な3Gモデムについては、[http://wiki.e1550.mobi/doku.php?id=requirements 公式サイト]を参照のこと。<br />
* コンパイラ等のツールは、Asteriskインストール時のもののほか、git、autoconf?など(検証中)<br />
<br><br />
===ソースコードの入手===<br />
ソースコードは[https://github.com/bg111/asterisk-chan-dongle github]でオリジナルのものが配布されていますが、そのままではAsterisk 13にはインストールできません。<br />
[https://github.com/bg111/asterisk-chan-dongle/pull/216/commits プルリクエスト216]は2018年8月現在プルされていませんが、これを手元でマージします。そのための手順は次のようになります。<br />
<br />
git clone https://github.com/bg111/asterisk-chan-dongle.git<br />
cd asterisk-chan-dongle<br />
git fetch origin pull/216/head:asterisk_13<br />
git checkout asterisk_13<br />
<br />
これでAsterisk 13で使用できるchan_dongleソースコードができました。これをビルドします。<br />
./configure --with-asterisk=../asterisk-13.22.0/include -with-astversion=13.22.0<br />
<br />
'''以下記載途中'''<br />
<br />
'''以下記載予定'''<br />
* SELinux有効下で使う方法<br />
* 設定ファイルの書き方</div>
Takatyan
https://www.voip-info.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Takatyan/sandbox&diff=10860
利用者:Takatyan/sandbox
2018-08-22T05:54:31Z
<p>Takatyan: Chan_dongleのページの下書き初版</p>
<hr />
<div>[[カテゴリ:Asterisk]]<br />
[[Category:練習場]]<br />
<br />
<span style="color: red;">このページは[[利用者:Takatyan|Takatyan]]のサンドボックスです。編集を試したり下書きを置いておくための場所です。内容は記載途中のものに過ぎません。</span><br />
<br />
chan_dongleは、USB接続で3Gモデムを接続し、音声通話、SMSをAsteriskから扱えるようにするモジュールです。<br />
<br />
==インストール==<br />
===前提条件===<br />
* CentOS 7.5で検証しています。カーネルは「kernel-3.10.0-862.9.1.el7.x86_64」で検証しています。<br />
* [[Asterisk 13|Asterisk 13.22.0]]をソースからビルドしてインストールしています。<br />
* 使用可能な3Gモデムについては、[http://wiki.e1550.mobi/doku.php?id=requirements 公式サイト]を参照のこと。<br />
* コンパイラ等のツールは、Asteriskインストール時のもののほか、git、autoconf?など(検証中)<br />
<br><br />
===ソースコードの入手===<br />
ソースコードは[https://github.com/bg111/asterisk-chan-dongle github]でオリジナルのものが配布されていますが、そのままではAsterisk 13にはインストールできません。<br />
[https://github.com/bg111/asterisk-chan-dongle/pull/216/commits プルリクエスト216]は2018年8月現在プルされていませんが、これを手元でマージします。そのための手順は次のようになります。<br />
<br />
git clone https://github.com/bg111/asterisk-chan-dongle.git<br />
cd asterisk-chan-dongle<br />
git fetch origin pull/216/head:asterisk_13<br />
git checkout asterisk_13<br />
<br />
これでAsterisk 13で使用できるchan_dongleソースコードができました。これをビルドします。<br />
./configure --with-asterisk=../asterisk-13.22.0/include -with-astversion=13.22.0<br />
<br />
'''以下記載途中'''</div>
Takatyan