5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ひかり電話 OG配下でAsteriskからRegistする

Posted at

概要

フレッツ光ネクストで、ひかり電話オフィスやオフィスAを直接収容する記事は割と見かけるのですが、
OG配下で収容する記事が無かったので試してみました。
(1契約のひかり電話で、FAX用のアナログ回線使いながら、Asteriskで収容するとの需要はあると思うんだけど)

お決まりですが、At your own riskでお願いします。

前提

  • Asterisk 16.2.1 + PJSIP
    • 手元にサクッと準備出来る環境がこれだっただけ
  • NTT西 光ネクスト + ひかり電話 オフィス
    • OG410Xi 2.28

設定方法

ほぼ、ONU直結で直収するときと同じだけど、OG配下だとDHCPでひかり電話側のルート情報がもらえないみたいなので、そこだけポイント

OGの設定

この部分はどこまで細かく書いて良いかわからないのでさらっと

  1. 「電話設定」の「IP端末/GW収容設定」で、Asteriskが動作している機器のMACアドレスを設定し、適当なIPアドレスを割り当てる
    ※ 当然ながら、OGと接続しているI/FのMACアドレスを登録
  2. 「着信番号設定」などは必要に応じて行う

DHCPクライアントの設定

/etc/dhcp/dhclient.conf
option ip-sip-servers code 120 = { boolean, array of ip-address };

option vendor-class.ntt code 210 = string;

option space ntt code width 1 length width 1 hash size 7;
option ntt.mac      code 201 = string;
option ntt.number   code 202 = text;
option ntt.domain   code 204 = domain-list;
option ntt.firmware code 210 = domain-list;
option vendor.ntt code 210 = encapsulate ntt;

# インターフェイス名は必要に応じて変更
interface "ethX" {
  send dhcp-client-identifier = hardware;
  request subnet-mask, routers, ip-sip-servers, rfc3442-classless-static-routes, vivso;
  send vendor-class.ntt = concat(06, suffix(hardware, 6));
}

こんな感じで設定して、dhclientを立ち上げると必要な情報が取れる
※ インターフェイス名は必要に応じて変更

/var/lib/dhcp/dhclient.ethX.leases
lease {
  interface "eth1";
  fixed-address 192.168.52.109;
  option subnet-mask 255.255.255.0;
  option routers 192.168.52.254;
  option dhcp-lease-time 14400;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.52.254;
  option dhcp-server-identifier 192.168.52.254;
  option ip-sip-servers true 192.168.52.254;
  option dhcp-renewal-time 7200;
  option dhcp-rebinding-time 12600;
  option vivso 0:0:0:.....:0;
  option vendor.ntt c9:.....:0;
  option ntt.domain "ntt-west.ne.jp.";
  option ntt.mac xx:xx:xx:be:ef:c5;
  option ntt.number "054xxxxxxx";
  renew 4 2021/06/10 11:47:50;
  rebind 4 2021/06/10 13:31:20;
  expire 4 2021/06/10 14:01:20;
}
/etc/hosts.
# routers    # ntt.domain
192.168.52.254  ntt-west.ne.jp

ちなみに、OG配下でやろうとすると、ひかり電話側の経路情報が取れなくて、RTPが流れないので、デフォルトゲートウェイをOGに向けるのが楽
細かくやるなら、一度 通話してAsteriskで見えているRTPの送信先IPアドレスをOGに向ける

Asteriskの設定

pjsip.conf
[global]
type = global
debug = no

[system]
type = system
disable_rport = yes ;via headerにrportが入らないよう必須

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0

[reg_HIKARI-DENWA]
type = registration
contact_user = 054xxxxxxx ;電話番号(=DHCPで取得したntt.number)
transport = transport-udp
client_uri = sip:054xxxxxxx@ntt-west.ne.jp ;"電話番号@DHCPで取得したntt.domain"である必要がある
server_uri = sip:ntt-west.ne.jp ;DHCPで取得したntt.domain"である必要がある

[HIKARI-DENWA]
type = aor
contact = sip:192.168.52.254 ;DHCPで取得したip-sip-servers

[HIKARI-DENWA]
type = identify
endpoint = HIKARI-DENWA
match = 192.168.52.254 ;DHCPで取得したip-sip-servers

[HIKARI-DENWA]
type = endpoint
context = incomming ;extension.conf
disallow = all
allow = ulaw
rtp_symmetric = no ;via headerにrportが入らないよう必須
force_rport = no ;via headerにrportが入らないよう必須
rewrite_contact = no ;via headerにrportが入らないよう必須
direct_media = no ;RTPをAsteriskで中継するため必要
from_domain = ntt-west.ne.jp ;DHCPで取得したntt.domain"である必要がある
aors = HIKARI-DENWA
extensions.conf
[incomming]
# ひかり電話では、追加番号の着信も契約番号向けにINVITEされるので、Toヘッダから着信先を取得
exten => _X.,1,Set(TO_DIAL=${PJSIP_HEADER(read,To):5})
exten => _X.,2,Set(TO_DIAL=${CUT(TO_DIAL,@,1)})
exten => _X.,3,Goto(fromHikari,${TO_DIAL},1)

[fromHikari]

exten => _X.,1,Dial(PJSIP/phoneXXX)

[hikari]

exten => _X.,1,Dial(PJSIP/${EXTEN}@HIKARI-DENWA)

参考にさせて頂いた記事

ほぼ丸写しで申し訳ないぐらいですが・・・
- NTT光ネクストのひかり電話へAsteriskを直接接続する - @kmorimoto さん
- 利用者:Pin ptrさん - VoIp-Info.jp

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?