テクノロジーガイド

Asterisk を初めての PBX としてインストールする方法

3 min read PBX 更新されました 28 Sep 2025
Asteriskで初めてのPBXを構築する手順
Asteriskで初めてのPBXを構築する手順

概要

Asterisk: オープンソースの電話交換ソフトウェア。1行定義: SIP/RTP を用いて音声通話を実現するソフトPBXです。用途は小規模オフィスの内線から大規模ゲートウェイまで幅広く使えます。

重要: 本手順はソースからのビルドを想定しています。ディストリビューションのパッケージ版やコンテナ化された配布(例: Docker イメージ)を使う代替方法もあります。

主要な用語(1行定義)

  • SIP: セッション初期化プロトコル。音声通話の呼制御に使います。
  • RTP: 実際の音声ストリームを運ぶプロトコル。
  • ダイヤルプラン: Asterisk 内で発信/着信をどう処理するかを書くルールセット。

前提条件

  • カーネル: 2.6 以上(ヘッダーファイルが必要)。
  • ビルドツール: gcc や make 等のコンパイラ環境。
  • ライブラリ: termcap 相当、OpenSSL 等。追加モジュール(asterisk-addons)を使う場合は MySQL のヘッダ/クライアントが必要。
  • ネットワーク: 公開 SIP トランクを使う場合は固定グローバルIPまたは適切な NAT 設定。

注意: 使用する Linux ディストリビューションによりパッケージ名が異なります。Debian/Ubuntu 系なら build-essential、libssl-dev、libncurses5-dev、libmysqlclient-dev 等が必要です。RHEL/CentOS 系は対応する -devel パッケージをインストールしてください。

ダウンロードするファイル(例)

  1. Zaptel
  2. libpri
  3. asterisk
  4. asterisk-sounds
  5. asterisk-addons

手順では /usr/src/ にすべての tar.gz を置いた前提で進めます。

インストール手順(ソースから)

以下は元の手順をそのまま残します。ファイル名は例です。実際のバージョンは最新のものを使ってください。

  1. tar -xzf zaptel-1.4.12.1.tar.gz
  2. tar -xzf libpri-1.4.9.tar.gz
  3. tar -xzf asterisk-1.4.20.tar.gz
  4. tar -xzf asterisk-sounds-1.2.1.tar.gz
  5. tar -xzf asterisk-addons-1.4.7.tar.gz
  6. cd zaptel-1.4.12.1
  7. ./configure
  8. make
  9. make install
  10. make config
  11. service zaptel start
  12. cd ..
  13. cd libpri-1.4.9
  14. make
  15. make install
  16. cd ..
  17. cd asterisk-1.4.20
  18. ./configure
  19. make
  20. make install
  21. make samples
  22. make config
  23. cd ..
  24. cd asterisk-sounds
  25. make install
  26. cd ..
  27. cd asterisk-addons-1.4.7
  28. ./configure
  29. make
  30. make install
  31. service asterisk start

注記: 上記の手順が成功すれば Asterisk サーバがインストールされ、起動されます。

最初の SIP 内線を作る

/etc/asterisk/sip.conf に以下を追加してください。テンプレートと内線定義を使っています。

[common](!) ; this is template.
type=friend
context=internal
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

[1000](common)
username=1000
secret=1000

[1001](common)
username=1001
secret=1001

[1002](common)
username=1002
secret=1002

[1003](common)
username=1003
secret=1003

[1004](common)
username=1004
secret=1004

上記で 1000〜1004 の5つの内線を作成しました。X-Lite、Cisco SIP 電話、ATA など任意の SIP クライアントを登録できます。接続できない場合はファイアウォールや NAT 設定を確認してください。

重要: 初期セットアップ時は iptables/ufw 等を一時的に緩め、動作確認後に必要なポート(5060 UDP/TCP、RTP 範囲 UDP)だけ開放する運用に切り替えましょう。

最初のダイヤルプランを作る

/etc/asterisk/extension.conf を開き、内線同士が通話できるように次を追加します。

[internal]
exten=> _XXXX,1,Dial(SIP/${EXTEN})

この設定で、4桁の内線番号に対して SIP 内線同士の通話が可能になります。

最初の SIP トランクを作る(発着信)

外線を発着信するには SIP トランク提供者(プロバイダ)が必要です。プロバイダの IP やドメインを host に設定し、パブリックIP または適切な NAT 設定を用意します。

/etc/asterisk/sip.conf に次を追記します( を実際のプロバイダIPやドメインに置換してください)。

[trunk]
type=friend
context=internal
host=
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

更新後の sip.conf は次のようになります(抜粋):

[common](!) ; this is template.
type=friend
context=internal
host=dynamic
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

[1000](common)
username=1000
secret=1000

[1001](common)
username=1001
secret=1001

[1002](common)
username=1002
secret=1002

[1003](common)
username=1003
secret=1003

[1004](common)
username=1004
secret=1004

[trunk]
type=friend
context=internal
host=
disallow=all
allow=ulaw
allow=alaw
allow=g723
allow=g729
dtmfmode=rfc2833

/ etc / asterisk / extension.conf にアウトバウンドルールを追加します。

exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

最終的に extension.conf は次のようになります。

[internal]
exten=> _XXXX,1,Dial(SIP/${EXTEN})
exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

これで外線発信(指定したパターンにマッチする番号)を SIP トランク経由で行えます。

テストケースと受け入れ基準

受け入れ基準

  • Asterisk サービスが正常に起動する。
  • 内線 1000 から 1001 に発信して声が届く。
  • プロバイダ経由での発信・着信が成功する。
  • RTP ストリームに遅延・大きなパケット損失がなく通話品質が確保される。

簡単なテスト手順

  1. sip show peers を実行して内線が登録されているか確認する。
  2. core show channels で通話中のチャネルを確認する。
  3. 外線へ発信し、着信側で音声が聞こえるか確認する。

運用チェックリスト(役割別)

管理者

  • ソフトウェアバージョンとセキュリティパッチを定期適用
  • バックアップ: /etc/asterisk と重要ログの定期バックアップ ネットワーク担当
  • NAT とポートフォワーディングの正当性チェック
  • RTP ポートレンジの開放と QoS 設定 セキュリティ担当
  • SIP 認証情報の複雑化と定期変更
  • fail2ban や SIP ブロックルールの導入

セキュリティ強化のヒント

  • 実運用では UDP 5060 をそのまま公開しない。TLS + SRTP を使って信号とメディアを暗号化する(対応クライアント/プロバイダが必要)。
  • 管理用インタフェース(Web GUI 等)がある場合は管理ポートを限定IPからのみアクセス可能にする。
  • 強力なパスワード、アカウントロックアウト、failed login 対応ツールを導入する。

トラブルシューティング

  • 登録できない: asterisk -rvvv でコンソールを立ち上げ、sip debug を有効にしてシグナリングを確認する。
  • 音声が聞こえない(片方向のみ): RTP のポート開放、NAT 設定、symmetric RTP、外部IP設定(externip/externaddr)を確認。
  • コーデックが合わない: allow= の並びを見直し、プロバイダがサポートするコーデックを有効にする。

代替アプローチ

  • パッケージ管理されたディストリビューション版を使う(apt/yum からのインストール)。
  • Docker コンテナ化された Asterisk イメージを検討する(隔離・移植性向上)。
  • 高可用性や大規模構成は Kamailio/OpenSIPS をフロントに置く構成を検討する。

小さな設計指針(ヒューリスティック)

  • 小規模(〜50 内線): 単一 Asterisk サーバ + シンプルな SIP トランク。
  • 中規模(50〜500 内線): レジストラ/ロードバランサー分離、冗長化の検討。
  • 大規模: セッションプロキシ(Kamailio)+ Asterisk ワーカーの分離でスケール。

短い運用 SOP(概要)

  1. 新設定はテスト環境で検証
  2. 設定変更前に現行構成をバックアップ
  3. 変更反映後は asterisk -rx “core reload” で再読み込み
  4. 影響範囲を確認(内線登録、外線発信、着信)
  5. 問題が出た場合は直前バックアップにロールバック

簡易フローチャート

次の簡単な流れで導入判断ができます。

flowchart TD
  A[要件確認] --> B{内線数 <= 50}
  B -- はい --> C[シングル Asterisk の導入]
  B -- いいえ --> D[フロントに Kamailio を検討]
  D --> E[冗長化とスケール設計]
  C --> F[プロバイダ選定とテスト]
  E --> F

参考テンプレート(運用メモ)

  • バックアップ: /usr/src/asterisk-config-backup-YYYYMMDD.tar.gz
  • RTP ポート範囲: 10000-20000 UDP(例)
  • ログローテーション: /etc/logrotate.d/asterisk の設定確認

まとめ

Asterisk は強力で柔軟な PBX プラットフォームです。ソースからのビルド手順、最初の SIP 内線・ダイヤルプラン・SIP トランク設定、基本的なテストと受け入れ基準、運用上のチェックリスト、セキュリティ強化案、トラブルシューティングを押さえれば、小規模〜中規模のオフィス PBX を短期間で立ち上げられます。運用ではセキュリティとバックアップを最優先にしてください。

注意: ご質問があれば Gventure までお問い合わせください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定