IP-Phone SMART SMARTalk (Fusion)をAsteriskに収容
楽天モバイル(Fusion)のIP-Phone SMART SMARTalkをAsteriskに収容するとき、ちょっとつまずいたところがあったのでメモ。
設定はいろんなサイトからパクってきたのを、こちらの環境に合うようちょっと変えてます。
環境:
Ubuntu Server 20.04 5.4.0-89-generic
Asterisk 16.2.1
とりあえずインスコします
$ sudo apt install asteriskpjsip.conf と extensions.conf に書き込んで設定するらしいです
内線2つ(6000,7000)を設定しました。5XXXXXXXは050よりあとの番号です。
/etc/asterisk/pjsip.conf
[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0
[fusion]
type = registration
transport = transport-udp
outbound_auth = fusion
server_uri = sip:smart.0038.net:5060
client_uri = sip:[email protected]:5060
retry_interval = 60
auth_rejection_permanent = no
[fusion]
type = auth
auth_type = userpass
username = 5XXXXXXX
password = XXXXXXXX
[fusion]
type = endpoint
transport = transport-udp
context = default
outbound_auth = fusion
allow = !all,g722,ulaw
aors = fusion
[fusion]
type = identify
match = 61.213.230.153
endpoint = fusion
[fusion]
type = aor
contact = sip:[email protected]
qualify_frequency = 5
[6000]
type = endpoint
context = default
disallow = all
allow = ulaw
auth = 6000
aors = 6000
rewrite_contact = yes
[6000]
type = auth
auth_type = userpass
password = pass
username = 6000
[6000]
type = aor
max_contacts = 10
[7000]
type = endpoint
context = default
disallow = all
allow = ulaw
auth = 7000
aors = 7000
rewrite_contact = yes
[7000]
type = auth
auth_type = userpass
password = pass
username = 7000
[7000]
type = aor
max_contacts = 10こちらの環境だとstartさせた直後は発信も着信もできるのですが、しばらくすると着信だけできなくなる現象が発生しました。
UDPなのでNATでおかしくなってるのですかね…? 認証の試行間隔 qualify_frequency を5ぐらいにしたら解決しました。
さらに、一日ほど経過したところで繋がらなくなったので見てみると認証状態がRejectedになってました。デフォルトだとどうやら一度Rejectされるとそのままで再接続はされないらしいです。それを回避するために auth_rejection_permanent = no を指定しました。
次 extensions.confを設定します。こっちに発信や着信の処理を書くみたいです。
/etc/asterisk/extensions.conf
[general]
static=yes
writeprotect=no
[globals]
FUSIONNUMBER=5XXXXXXX
[default]
exten => ${FUSIONNUMBER},1, Goto(chakushin,s,1)
exten = 100,1,Answer()
same = n,Wait(1)
same = n,Playback(hello-world)
same = n,Hangup()
exten => 6000,1,Dial(PJSIP/6000,30,r)
same = n,Hangup()
exten => 7000,1,Dial(PJSIP/7000,30,r)
same = n,Hangup()
exten => _9.,1,NoOp
same => n,Set(CALLERID(num)=${FUSIONNUMBER})
same => n,Set(CALLERID(name)=${FUSIONNUMBER})
same => n,Dial(PJSIP/${EXTEN:1}@fusion)
[chakushin]
exten => s,1,Set(FROMNUM=${CALLERID(number)})
exten => s,n,Set(CALLERID(name)=${FROMNUM})
exten => s,n,Dial(PJSIP/6000&PJSIP/7000,30)9をつけて発信すると外線に繋がります。
また、100番にかけるとテスト用の音声が流れます。
chakushinの最終行、このように指定すると外線からの着信が6000,7000にかかってきます。
systemctl restartして、認証できてるか見てみましょう
$ sudo asterisk -rvvvvv
*CLI> pjsip show registration fusionstatusがRegisteredになっていたら成功です。
このAsteriskサーバーを外に公開する場合、5060/UDPをNATします。
またその時は絶対fali2banを導入してください。めちゃめちゃ攻撃されます。(ちょっと放置していたら60万回ほどアタックされてました。)
$ sudo apt install fail2ban/etc/fail2ban/jail.d/defaults-debian.conf
[asterisk]
enabled = trueこれを追記するだけです。bantimeなどはお好みで







最近のコメント