以下記事の内容をFreePBXでやったという話。
configで気を付けるべき所は最終的に一緒だが、GUI故の落とし穴とか分かりづらさがあるので補足。
FreePBX自体はある程度GUIで設定出来るものの、それだけでは設定出来ない項目があるので、CLIもある程度触れないと厳しいのでそこは注意。
前提となる環境
ハードとかソフトとか
RasberryPi 5 8GB
Raspberry Pi OS Lite 12.11
FreePBX 17.0.19.28
Asterisk 22.2.0
NTT東日本 フレッツ光クロス
普通のDebianとかUbuntuでもFreePBXが動けば多分どれも一緒。
クロスで同じ事が出来るのか契約前に心配だったが、蓋を開けたら全く同じ仕様のようで。NVR500もただのVoIPアダプタとしてなら問題なく使える。
ネットワーク構成
こんな感じでRaspiとルーター(RTX1300)と並列に並べて、
・AsteriskでONU側からひかり電話のサーバーにRegistしに行って
・LAN側のsipクライアントからAsteriskにRegistして使う
という構成になる。
このとき、ONU側でRaspiはipv4のみ、ルーターはipv6のみ割り当てる。そうしないと相互にIPアドレスを奪い合って不安定になる。PPPoEやMAP-E等のトンネルのipv4アドレスは、先のdhcpで配られるipv4アドレスとは別物なので、ルーターに設定があっても問題にならない。
普通のルーターだとWAN側は1ポートしかないので、その場合は間にHUBを入れる必要がある。今回はルーターがRTX1300なので、ONU側を2ポートにして済ませた。
RaspiのLAN側は内蔵無線LANでも設定出来たが、再起動時に再接続されない事があったので、大人しく有線LANを増やした。モニタレス運用で再起動したらネットワークから切断されてる(=sshも入れない)のは致命的なので…
先の記事のDHCPで取得するパラメーターは何らかの方法で入手する。dhcpクライアントで受け取れるようにするか、最悪YAMAHA NVR500等のVoIPルーターに、ひかり電話の設定をすれば確認可能。
経路設定
DHCPで取得したip-sip-serversへのアクセスがeth0を向くようにする必要がある。普通は自動設定で問題ないはず。
DNS解決
ntt-east.ne.jp >> 118.x.x.x (DHCPで取得したip-sip-servers) で解決出来るようにDNSを設定する必要がある。
hostsを使う場合は以下が必要とのこと。
apt install libunbound-dev
詳細は先のリンク先の記事に書いてあるのと同様なので省略。
うちはローカルにDNSサーバーを立てていたので、そこにレコードを登録して対応した。
ひかり電話レジストの設定
FreePBXの管理画面を出したら、[接続]-[トランク]でトランクの設定画面に移る。
[トランクを追加]-[SIP(chan_pjsip)トランクを追加]と進む。
トランク名: 好きな名前を付ける
アウトバウンドCID: 03xxxxxxxx (DHCPで取得したntt.number)
タブを切り替えて[pjsip設定]に進む。
SIP Server: 118.x.x.x (DHCPで取得したip-sip-servers)
タブを切り替えて[高度な設定]に進む。
Contact User: 03xxxxxxxx (DHCPで取得したntt.number)
From Domain: ntt-east.ne.jp(DHCPで取得したntt.domain)
Client URI: sip:03xxxxxxxx@ntt-east.ne.jp (DHCPで取得したntt.number, ntt.domain)
Server URI: sip:ntt-east.ne.jp (DHCPで取得したntt.domain)
AOR Contact: sip:118.x.x.x (DHCPで取得したip-sip-servers)
Direct Media, Rewrite Contact, RTP Symmetric: いずれも[いいえ]に
タブを切り替えて[コーデック]に進む。
ulaw以外のチェックを外す。
これだけでは設定値が不足(disable_rportが未設定)なので、[アドミン]-[Config Edit]で手動でコンフィグを設定する。
この画面はどういうことかというと、左側のツリー上部のフォルダはユーザーが触って設定をカスタマイズするためのファイル。
ツリー下部のフォルダはFreePBXが管理しているファイルで、GUI上で設定を保存すると、都度その内容が反映される。こっちは画面上では読み取り専用になっていて触れない。SSH等でログインして触ることは出来るが、設定保存の度に内容が上書きされるので触っても無意味。
configを順次includeしていくようになっているので、読み込まれる順番が気になる場合はファイルを順に追っていこう。
自分はpjsip_custom_post.confに
[system]
type=system ; Must be of type system (default: "")
disable_rport=yes ; Disable the use of "rport" in outgoing requests.
と入力した。
上手くいけばこれでレジスト出来ているので、[レポート]-[Asterisk情報]のところで接続状況が見れる。
めでたしめでたし。