FreePBXのFirewallで自分がロックアウトされる

FreePBXを初期設定中に結構な頻度で自分自身がBANされてしまうことがあります。
こうなるとWEBコンソールどころかSSHすらできないので詰みます。
その際はコンソール接続すればサーバーにアクセスできるのでFirewallを無効にすれば良いのですが、
信頼済みのネットワークにする方法ないのかな?と探したところ簡単にできるようでした。

fwconsole firewall trust x.x.x.x

X.X.X.XはIPアドレス

ぜひお試しください。

FreePBX 17のお手軽インストール

久々に技術的なことでもないですがFreePBXのインストールが
ものすごく楽になるスクリプトができていたのでご紹介しておきます。
ただし、debian12.X限定です。

なので、弊社でよく使うUbuntuやAlmaLinuxはいつも通り手作業です。

ちょうど社内のVoIPサーバを更新しようと思っていたので、
Conoha VPSに構築したdebian12でやってみました。

まずは、普通にVPSコンソールでdebina12をインストールし起動させます。

次に最新の状態に整えておきましょう。

apt -y update
apt -y upgrade

他にOSの初期設定としてお好みでホストネームの設定やTimezoneを変更します。
そして再起動を終えたら公式のGitからインストールスクリプトを取得します。

cd /tmp
wget https://raw.githubusercontent.com/FreePBX/sng_freepbx_debian_install/master/sng_freepbx_debian_install.sh
chmod +x sng_freepbx_debian_install.sh
./sng_freepbx_debian_install.sh

こんな感じで始まるので気長に待ちましょう。割と時間かかります。
待ってる間に必要なポートを開けたりDNS登録などしてても良いかもしれません。

root@host1:/tmp# ./sng_freepbx_debian_install.sh
2025-02-19 20:52:36 - Performing version check...
Perfect! You're already running the latest version.
2025-02-19 20:52:36 - Starting installation.
.
.
.

最終的に以下の文字が出たら終わりです。
(MACアドレスとIPアドレス部はマスクしてます)

NOTICE! You have 3 notifications! Please log into the UI to see them!
Current Network Configuration
+-----------+-------------------+------------------------------------+
| Interface | MAC Address | IP Addresses |
+-----------+-------------------+------------------------------------+
| eth0 | FA:00:00:00:00:00 | XXX.XXX.XXX.XXX |
| | | 2400                |
+-----------+-------------------+------------------------------------+

Please note most tasks should be handled through the GUI.
You can access the GUI by typing one of the above IPs in to your web browser.
For support please visit:
http://www.freepbx.org/support-and-professional-services

+---------------------------------------------------------------------+
| This machine is not activated. Activating your system ensures that |
| your machine is eligible for support and that it has the ability to |
| install Commercial Modules. |
| |
| If you already have a Deployment ID for this machine, simply run: |
| |
| fwconsole sysadmin activate deploymentid |
| |
| to assign that Deployment ID to this system. If this system is new, |
| please go to Activation (which is on the System Admin page in the |
| Web UI) and create a new Deployment there. |
+---------------------------------------------------------------------+

ただ、このままだとapacheのデフォルトページが残っていたりして気持ち悪いので消しておきましょう。
そしてOSごと再起動をおすすめします。

root@host1:~# rm /var/www/html/index.html
root@host1X:~# shutdown -r now

これでブラウザから設定したドメインかIPアドレスにアクセスすればFreePBXの画面がでるかと思いますが、
結構ダッシュボード上にエラーや警告が出るのでスクリプトで綺麗に完璧とはいかないようですが、
個別にそこだけ修正、変更すればよいのでまあまあ楽ですね!

ぜひお試しになってみてください!

当社ではFreePBXの構築サービスなんかもやっておりますのでお気軽にご相談ください。

FreePBX 17を試験してみた

久々のエンジニアBlog更新です。
当社ではFreePBXを利用した小規模オフィス向け内線電話を構築しております。
基本はFreePBX 16 + Ubuntu 22.04 LTSといった安定性とメンテナンス性を
重視した構成でご提案していますが社内電話ぐらいは遊びたいということで、
社内のFreePBXを最新のFreePBX 17とAsterisk 20でリプレイスしてみました。

なお、FreePBX 17は公式の説明にもございますが正式リリースではありません。
そのため、重要な電話サービスで導入することはおすすめできません。
(当社はメイン電話回線でやっちゃいましたが・・・)

結果としては今までとほぼ使い勝手は変わりませんってか違いはわからないです。
ただ、インストール時の構成はガラリと変わってます。
まず、PHP8.2に対応したことが一番大きいです。
今までのFreePBXではPHPが5.6とかであったのでセキュリティリスク的にも
問題がありましたがそこが改善されました。
そしてAsterisk 20のサポートです。
DBは今までのものでも利用可能ですが公式のWikiではMariaDB10.11を利用していました。
当社でもそれに沿ってMariaDB 10.11でインストールしています。

公式のインストールガイド?
https://sangomakb.atlassian.net/wiki/spaces/FP/pages/10682545/How+to+Install+FreePBX+17+on+Debian+12+with+Asterisk+20

インストール手順は上記ページでほぼ網羅されているので当Blogでは省略します。

ここではFreePBX 17で気になった点をご紹介したいと思います。

Trunkの設定

見た目は全く同じですがこの「Context」が曲者です。
弊社ではいくつかIP電話サービスを利用しており、ひかり電話も収容しています。
そのため、着信先を把握するためにContextを利用しています。

具体的には以前のBlogにも記載しましたが、着信時のSIPパケットを利用して着信した電話番号や
契約情報をInboundのDIDにセットして着信番号毎にRingGroupやアナウンスを設定しています。
そのため、いつも通りContextを設定すると着信しない!!!
しかもAsteriskがエラーで埋め尽くされたり謎の動きを。。。

どうやらこのContextにいれた文字はConfigに反映されないようです。
ためしに「from-AAAAAAAAA」としましたがgrepで何もヒットしません。。。

じゃ、contextじゃなくて何で設定されてるんだ??ということで調べました。
ファイルとしては、extensions_additional.confで定義されています。
[from-trunk-pjsip-XXXXX] ←XXXXXの部分はTrunkの設定名になってました。

ただ、これって実はFreePBX 16の頃からだったのかな??記憶がないし検証は
面倒なのでやめましたが新規にFreePBX16を導入する際に確認してみたいと思います。

なので、「extensions_custom.conf」に設定する際は上記の名前で設定してみてください。
当社ではそれで期待通り動作しています。

——————————————————————————————————————————–
オフィスの固定電話を従業員のスマホに着信させませんか?
また社員の私用スマホからの通話ではなく私用スマホを利用して会社の電話から発信させませんか?
これらのことが高価なPBXを購入したり特別なサービスを契約することなく安価に利用可能です。
FreePBXを活用したオフィスの固定電話見直しのご相談を受け付けております。
ご興味ございましたら以下のフォームからお気軽にお問い合わせください!
https://www.quick-solutions.jp/contact/

Asteriskでひかり電話と050利用時に着信先を区別したい

久々にAsteriskの設定を変える機会があったのでメモを残したいと思います。
弊社では外出が多いので社内電話システムをクラウドPBXにしており、
ひかり電話の03番号や050の受付回線に着信するとクラウドPBX経由で、
社内に設置のGRANDSTREAMの固定電話数台と社員のスマホに着信する
仕組みを採用しております。

クラウドPBXといっても零細企業の弊社では有料サービスを
借りる程ではないためVPS上にFreePBXをインストールし、
VPNで社内と接続することでオレオレクラウドPBXを運用してます。

で、今回の話題の鳴り分なのですが今までは業務上としては、
03宛に着信しても050に着信しても両方対応できていたのですが、
業務繁忙のため、番号毎に担当を設けることになりました。
そうすると問題になるのが通常のひかり電話だとHGWが着信番号を
通知してこないのでAsterisk側でそのままでは入電経路がわからない!

そこでちょっとAsteriskのConfigを追加してあげることで、
050宛に着信したのか、03宛に着信したのか区別することが可能になります。
あとはInboud roureでそれぞれ目的の内線やRingに向ければ解決です。

弊社はAsterisk 20でやってますが19とかでも同じだと思います。

1、ひかり電話のTrunkの設定でContextを設定する。
弊社では[from-NTThikari]と付けましたがなんでも構いません。

2、”extensions_custom.conf”に以下のように設定する
[from-NTThikari] ←ここは”1”で設定したContextと同じになるようにすること!
exten => _.,1,Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)},1)

3、Inbound RoutesのDIDにそのまま03XXXXXXXXのようにご自身の番号をセット

これで03宛に着信がくるとHGWから送られてくるSIP HeaderのTOにセットされている
電話番号を利用して鳴り分に利用することが可能です。

具体的にどこ参照してんのか?ということで弊社で取ったTcpdumpを
参考までに掲載しておきます。

——–
02:34:48.018975 tap_voip Out IP sipedemo.local.sip > 192.168.X.X.sip: SIP: SIP/2.0 200 OK
E`.y”.@.@…… ………e..SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.X.X:5060;rport=5060;received=192.168.X.X;branch=z9hG4bK291358527
Call-ID: 468619045@192.168.X.X
From: <sip:anonymous@anonymous.invalid>;tag=368508610
To: “03XXXXXXXX” <sip:03XXXXXXXX@192.168.X.X>;tag=9e43156e-5043-4f0d-80a0-8407da769d25
CSeq: 2 BYE
Server: FPBX-16.0.40.7(20.4.0)
Content-Length: 0
——–

なお、参考までに以下のようなHeaderの050番号の場合は、
”exten => _.,1,Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,To),@,2))},1)”とすることで
電話番号ではないですがアカウント名?的なユニークな情報をToとして取得することができるので、
電話番号ではないですがDIDにセットすることが可能です。

03:02:24.095581 eth0 In IP XXXXXXX > sip.domain.tld.sip: SIP: BYE sip:XXX.XXX.XXX.X:5060 SIP/2.0
E…Z…4.ENw….,……….BYE sip:XXX.XXX.XXX.X:5060 SIP/2.0
Via: SIP/2.0/UDP XXX.XXX.XXX.X:5060;branch=z9hG4bK69eb980a;rport
Max-Forwards: 70
From: “08012345678” <sip:08012345678@XXX.XXX.XXX.X:5060>;tag=as38f9f65c
To: <sip:99991230001@XXX.XXX.XXX.X:506>;tag=5bb93ac5-caa4-472f-834f-92e0349ca7fc

→”99991230001”が取り出せますね!

外出の多い中小企業の皆様や個人事業主の皆様
超安価なVPSベースのクラウドPBX利用してみませんか?
リモートワーク等で固定電話に出られない方にもおすすめです。
弊社ではメールベースでしたら無料でご相談をお受けしております。
構築もオープンソースを積極的に活用するため非常に低額で
ご利用頂けるかと思いますのでご検討ください!