AsteriskによるIP-PBXの構築(SuSE9.3編)

インストール・設定 − サービス

ここでは、外部の一般電話と接続する場合の概要を示します。これには、プロバイダのVoIPサービスを利用するので、特別なハードは一切不要です。ここで紹介するのは、おやじが契約しているAsahi-netとNiftyのIP電話Cのサービスを利用した例です。プロバイダによって設定が異なるため、このサービス以外は環境がないので質問されてもわかりませんのであしからず。

外部接続

本作業に先立ち、プロバイダへIP電話の申し込みを行いユーザID等の必要な情報を用意しておく。ここでは、Asahi-netおよびNiftyのIP電話Cを使った外線発着信を行うものとする。
 外部発信時は、0+外部の電話番号で行うようにし、着信時は家庭内の全ての電話機を同時呼出し、呼び出しタイムアウトや全話中時はボイスメールに接続するものとする。ここの例では、内線2001番は外部発信できないようにするため、internalコンテキストで別のダイヤルプランを動かしている。

外部接続のための設定は、sip.conf と extensions.conf で行う。sip.confの設定は、同じSIPとはいえプロバイダ毎に微妙に異なる。

[ sip.conf の設定 ]

  1. Asahi-net に接続するためのsip.confの設定を以下に示す。(赤字:本サービスに直接関係する設定)
    おやじの場合、Asahi-netは固定IPなので「externip」でIPアドレスを指定している。

    [general]
    context=default
    bindport=5060
    bindaddr=0.0.0.0
    srvlookup=yes

    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    allow=ilbc

    musicclass=default

    ;language=en
    language=jp

    ;NAT
    externip = 200.201.202.203   ;固定IPの場合はIPアドレスで指定
    ;externhost=foo.dyndns.net
    ;externrefresh=10
    localnet=192.168.1.0/255.255.255.0

    nat=route                    ;routerもしくはnever

    register => 050xxxxxxxx@asahi-net.or.jp:ユーザパスワード:ユーザID@asahi-net/050xxxxxxxx

    [asahi-net]
    type=friend
    secret=ユーザパスワード
    username=ユーザID
    fromuser=050xxxxxxxx
    fromdomain=サービスドメイン(asahi-net.or.jp)
    host=サーバー名(voipxx.nc.asahi-net.or.jp)
    context=myprovider-in
    dtmfmode=inband
    canreinvite=no
    insecure=very
    progressinband=no

    [2000]
    type=friend
    username=oyaji
    secret=password0
    canreinvite=no
    host=dynamic
    mailbox=2000

    [2001]
    type=friend
    username=hoge1
    secret=password1
    canreinvite=no
    host=dynamic
    mailbox=2001

    context=internal              ;外部発信不可の内線用コンテキスト



  2. Nifty に接続するためのsip.confの設定を以下に示す。(赤字:本サービスに直接関係する設定)
    おやじの場合、Niftyは動的IPなのでexternhostとexternrefreshで設定した。
    Niftyの場合、useragentがデフォルトのAsterisk PBXではRegsterできないので、VoIPアダプタを偽装した。テストミスのようで偽装は不要。

    [general]
    context=default
    bindport=5060
    bindaddr=0.0.0.0
    srvlookup=yes

    disallow=all
    allow=ulaw
    allow=alaw
    allow=gsm
    allow=ilbc

    musicclass=default

    ;language=en
    language=jp

    ; NAT
    ;externip = 200.201.202.203
    externhost=aconusftp.aconus.com ;動的IPではWAN側アドレスを牽けるFQDNを指定
    externrefresh=60                ;IPアドレスのチェック周期(ほどほどに)

    localnet=192.168.1.0/255.255.255.0

    nat=route                       ;routerもしくはnever

    useragent=Fletsphone/2.3 (VOIP_AD 3.00\; NTTEAST/NTTWEST) ;VoIPアダプタを偽装
    register => 050xxxxxxxx@nifty.com:VoIPユーザパスワード:VoIPユーザID@nifty/050xxxxxxxx

    [nifty]
    type=friend
    secret=VoIPユーザパスワード
    username=VoIPユーザID
    fromuser=050xxxxxxxx
    ;fromdomain=SIP-URL(nifty.com) SIP URLでは接続不可(2008.8.17)
    fromdomain=nifty.com
    host=VoIPサーバ名(voipxx.nifty.com)
    context=myprovider-in
    dtmfmode=inband
    canreinvite=no
    insecure=very
    progressinband=no


    [2000]
    type=friend
    username=2000
    secret=password0
    canreinvite=no
    host=dynamic
    mailbox=2000

    [2001]
    type=friend
    username=2001
    secret=password1
    canreinvite=no
    host=dynamic
    mailbox=2001

    context=internal                  ;外部発信不可の内線用コンテキスト



[ extensions.conf の設定 ]

  1. extensions.confの設定を以下に示す。市内発信でも市外局番が必要だったので、AREACODEを付加するようにした。(赤字:本サービスに直接関係する設定)

    [globals]
    CONSOLE=Console/dsp
    MYPHONEN => 050xxxxxxxx  ;IP電話サービスの電話番号
    AREACODE => 03           ;市外局番


    [myprovider-in]
    exten => ${MYPHONEN},1,Dial(SIP/2000&SIP/2001,30) ;2000/2001番同時呼出
    exten => ${MYPHONEN},2,Answer()
    exten => ${MYPHONEN},3,Wait(1)
    exten => ${MYPHONEN},4,Voicemail(2000)
    exten => ${MYPHONEN},5,Hangup()
    exten => ${MYPHONEN},102,Answer()
    exten => ${MYPHONEN},103,Wait(1)
    exten => ${MYPHONEN},104,Voicemail(2000)
    exten => ${MYPHONEN},105,Hangup()

    [default]
    ;Outside line
    ;最後の"myprovider-out"は、sip.confで指定したコンテキストを指定。
    ;ここの例では、"asahi-net"または"nifty"
    exten => _0N.,1,Dial(SIP/${AREACODE}${EXTEN:1}@
    myprovider-out) ;市内発信用
    exten => _0N.,2,Congestion
    exten => _0N.,102,Busy

    exten => _00.,1,Dial(SIP/${EXTEN:1}@
    myprovider-out)            ;市外や携帯発信用
    exten => _00.,2,Congestion
    exten => _00.,102,Busy

    ;extentions data
    exten => _200X,1,Dial(SIP/${EXTEN},30)
    exten => _200X,2,Voicemail(${EXTEN})
    exten => _200X,3,Hangup()
    exten => _200X,102,Voicemail(${EXTEN})
    exten => _200X,103,Hangup()


    [internal]
    ;extentions data
    exten => _200X,1,Dial(SIP/${EXTEN},30)
    exten => _200X,2,Voicemail(${EXTEN})
    exten => _200X,3,Hangup()
    exten => _200X,102,Voicemail(${EXTEN})
    exten => _200X,103,Hangup()



インストール・設定 − サービス


Topページへ