🦔

asterisk + tailscale でかんたん拠点間通信

2023/02/11に公開

sip で簡単に内線が構築できるasteriskですが、iax.confをちゃんと設定すれば拠点間内線を構築することもできます。

ただし片方がインターネット経由で見えている必要があり、そのためのVPNの設定が非常に難しかったりします。

これを簡単にVPNを構築できるtailscaleを用いることで、簡単に実装することができたのでこちらに手順を掲載します。

asteriskのインストール

こちらに沿ってインストールしてください。

https://zenn.dev/yoheikusano/articles/88e7d075487b93

tailscaleのインストール

基本的にはasteriskを構築したLinuxサーバー上に構築します。
下記を参照されてください。

https://tailscale.com/download/linux

コマンドは2行です。簡単!

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

上記コマンド後、Googleなど各種IDによるサインインが発生しますので、そちらに沿って進められてください。

tailscaleのIPアドレスの確認

下記にログインし、マシンごとのIPアドレスを確認してください。
次のiax.confの作成に必要となります。

https://login.tailscale.com/admin

iax.conf

2拠点ごとのiax.confextensions.confを作成していきます。
該当箇所のみ記述しますので必要に応じて各自のconfファイルに追記してください。

拠点A側のconfファイル

iax.conf
[forB]
type=friend
username=【適当なユーザ名】
secret=【適当なパスワード】
host=【相手のIPアドレス】
disallow=all
allow=ulaw
context=default
extensions.conf
exten=> _22.,1,Set(CALLERID(num)=21${CALLERID(num)})
	
	same=>n,Dial(IAX2/【拠点B側のユーザ名】:【拠点B側のパスワード】@forB/${EXTEN:2})

拠点B側のconfファイル

iax.conf
[forA]
type=friend
username=【適当なユーザ名】
secret=【適当なパスワード】
host=【相手のIPアドレス】
disallow=all
allow=ulaw
context=default
extensions.conf
exten=> _21.,1,Set(CALLERID(num)=22${CALLERID(num)})
	
	same=>n,Dial(IAX2/【拠点A側のユーザ名】:【拠点A側のパスワード】@forA/${EXTEN:2})

繋がっているかの確認

こちらは実際にぶら下げて通話してみると良いと思います。
下記のようなLogが確認できました。
iax2 show peers iax2 show registryなどで確認もできるようですが、うまくレジストできているのかどうかまでは実際に確認できませんでした。

最後に

こちらにはasterisk側の設定のみ掲載いていますが、実際はufwによるファイアウォールや、fail2banによる攻撃対策が必要だと思います。

asteriskは本当に自由度が高くて面白いですが、ネットワークはつながらない要素がとても多いです。
使う側のリテラシーも様々ですので、使う際はできるだけ信頼のおける機器で行うようにした方が良いと思います。

Discussion