V6プラスでIP電話の導入
はじめに
2017年12月18日、めでたく結婚しました。 それから約1年がたってWimaxの更新タイミングが来たので、 賃貸ながら光ファイバーを引いてみました。 せっかくなのでIPv6にチャレンジ + IP電話も導入しました。
システム構成
画像をクリックすると高解像度の図が開きます。 黄色のデバイスは携帯電話なので、自宅外から4Gとか他のwifiに接続する場合があります。 私の私物携帯のAEON Mobileの4GはなぜかDual Stackでした。 しかし、嫁の携帯auの4G、嫁の実家のwifi、私の会社携帯のauの4G等はIPv4のみのサポートとなります。 このため、自宅外からAsteriskサーバへの接続をしたいなら、MAP-Eのポート開放が必要です。 しかし、WN-AX1167GR2が思いのほか低機能で、V6プラスでの接続時にはポート開放が出来なくなってしまいます。 Raspbianをルータにするというのも不安があるので、結局、IPv4空間から直接Asteriskサーバに接続することはできません。 あと、プロバイダはenひかりを使っているのですが、電話で問い合わせしたところ、V6プラスとPPPoEの併用は500円/月のオプション契約になるそうです。 500円/月あったらVPS借りれちゃうんで、これもない選択肢です。
以上をまとめると、
- 自宅内のAsteriskサーバへのIPv4空間からの接続は不可能
- 携帯電話は自宅外からはIPv4のみ
- 携帯電話で自宅外からIP電話を発着信したい
という一見すると不可能な話になっています。これを実現する方法について説明します。
着信はLinphone SIP Serverに転送
この図のように、携帯電話はLinphoneのFree SIP Serverのアカウントを取得し、常時接続しておきます。 また、Asteriskサーバ用にもLinphoneのFree SIP Serverのアカウントを取得します。 IP電話に外線の着信があった場合は、携帯電話はLinphoneのFree SIP Serverのアカウントに対して転送することで、 IPv4空間でも着信が受けられます。 区別のため、内線番号200番台を自宅ネットワーク内からのAsterisk直結用、内線番号300番台をLinphoneのFree SIP Server経由用としています。
発信は 050 Free 直結
発信の方は単純に、050 Freeに直結してしまいます。 といっても、つなぎっぱなしだとAsteriskサーバの着信が不安定になるので、 携帯電話のLinphone Clientの設定で、050 Freeの接続設定を「プッシュ通知 オフ」にしておきます。 また、発信の際には050 Freeを選択するため、Linphone Clientの設定で、050 Freeの接続設定を「既定のアカウント オン」にしておきます。
Asteriskの設定
Asteriskの sip.conf と extensions.conf の具体例を示します。 量が多いのでTXTファイルにリンクしました。
Linphone Clientの設定
各携帯電話のLinphone Clientは以下のように設定しました。
brastel 050 free への接続
設定項目 | 設定値 |
---|---|
More options | オン |
アカウントを有効にする | オン |
既定のアカウント | オン |
プッシュ通知 | オフ |
ユーザ名 | (UserName) |
表示名 | 空欄 |
ユーザID | 空欄 |
パスワード | (Password) |
ドメイン | softphone.spc.brastel.ne.jp |
Proxy | 空欄 |
Transport | UDP |
Stunサーバ | stun.linphone.org |
ICE | オフ |
Outbound Proxy | オン |
AVPF | オフ |
Expire | 3600 |
Country code prefix | 81 |
Substitute + in phone numbers | オフ |
Linphone の Free SIP Server への接続
設定項目 | 設定値 |
---|---|
More options | オン |
アカウントを有効にする | オン |
既定のアカウント | オフ |
プッシュ通知 | オン |
ユーザ名 | (UserName) |
表示名 | 空欄 |
ユーザID | 空欄 |
パスワード | (Password) |
ドメイン | sip.linphone.org |
Proxy | 空欄 |
Transport | TLS |
Stunサーバ | stun.linphone.org |
ICE | オン |
Outbound Proxy | オフ |
AVPF | オン |
Expire | 31536000 |
Country code prefix | 空欄 |
Substitute + in phone numbers | オフ |
オーディオ
設定項目 | 設定値 |
---|---|
CODECS | GSMのみオン |
Codec bitrate limit | 36 kbits/s |
Enable Voice Processing | オン |
Enable Bass Boost | オフ |
おわりに
意外なことに、このような転送をしても発信元の電話番号はちゃんとLinphone Client上に表示されました。 また、iPhoneでLinphone Clientを使ってAsteriskサーバに直結していた際は、バックグラウンドでの着信が出来ませんでした。 しかし、LinphoneのFree SIP Serverにつないでいる場合は、バックグラウンドでの着信が可能です。
実のところ、設定については私もわかっていないところが多くあります。 必ずしも最適設定にはなっていないと思うので、「本当はこう設定する方が正しいんだよ」というのがありましたら、 ぜひ教えていただきたいです。