ひかり電話HGW MAC認証

Asteriskのchan_sipの場合、ひかり電話のHGW等でDigest認証が通らないケースがあります。その場合にはHGWのMACアドレス認証を使えば、パッチを当てることなくAsteriskをHGWに収容することができます。Asteriskをパッケージでインストールしたり派生ディストリビューションを使用する場合には、この方法が使えます。

目次

HGW側の設定

内線として収容しますので、内線設定を行います。
RT500KI-01.jpg
上の例では内線番号7の"IPphone5"をAsteriskの収容先としています。右の[編集]をクリックします。
RT500KI-02.jpg
MACアドレスの箇所にAsteriskをインストールしたサーバのMACアドレスを入力します。
ユーザIDとパスワードはメモしておいてください。
電話番号設定は着信させたい番号と通知番号を指定します。複数の番号を持っている場合、通知番号はAsterisk側からも指定できますが、その際には着信番号として複数番号を指定しておく必要があります。要するに着信できる番号であれば通知できるというわけです。

Asteriskの設定

sip.conf

sip.confは次の例にならって書いてください。例では内線'7'なので7が番号、ユーザIDが007になります。

register => 7:password@hikari-hgw

[hikari-hgw]
context=from-hikari-hgw  <--下のextenのcontextにあわせる
type=peer
secret=password
username=0007   <--ユーザID
fromuser=7      <--番号
domain=192.168.1.1   <--HGWのIPアドレス
fromdomain=192.168.1.1
host=192.168.1.1
insecure=port,invite
disallow=all
allow=ulaw
dtmfmode=inband

パスワードはたぶん何も効いてないのですが、何か書いておかないとパスワードのフィールドとして認識されないので書いておきます。念のためHGWのパスワードと同じにしておくと何となく安心です。

extensions.conf

落せればs着信でも何でもいいのですが、次のように書いておけば複数番号の着信番号制御ができます。

[from-hikari-hgw]
exten => s,1,NoOp(ひかり電話HGW着番処理)
exten => s,n,Set(DESTNUM=${SIP_HEADER(To)})
exten => s,n,Set(DESTNUM=${DESTNUM:1:10})
exten => s,n,NoOp(着信番号: ${DESTNUM})
exten => s,n,Goto(incoming,${DESTNUM},1)

[incoming]
exten => 0312345678,1,Dial(SIP/201)

着信番号はSIPヘッダのToで落ちてくるのでそこから番号だけ取り出します。今の日本では桁数は10で大丈夫だと思うのですが、もし桁数が違う場合には:1:10のところを調整してください。最終的にincoming,着信番号,1に飛んでいくので[incoming]のところに例のように書きます。
発信は特に難しいことはなく

exten => _0.,1,Dial(SIP/${EXTEN}@hikari-hgw)

と書けばゼロで始まる番号は全部ひかり電話にぶん投げます。

発信者番号

発信者番号を指定する場合、HGW側で着信番号として設定されている必要があります。着信できない番号は指定できません。
要するにPPIヘッダを投げてやれば発信者番号が通知できるので

exten => _0,n,SIPAddHeader(P-Preferred-Identity:<sip:0312345678@ntt-east.ne.jp>)

のようにダイヤル前にPPIを設定します。ドメイン部分は東西NTTで変えてください。