概要
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 パッケージをインストールしてください。
ダウンロードするファイル(例)
- Zaptel
- libpri
- asterisk
- asterisk-sounds
- asterisk-addons
手順では /usr/src/ にすべての tar.gz を置いた前提で進めます。
インストール手順(ソースから)
以下は元の手順をそのまま残します。ファイル名は例です。実際のバージョンは最新のものを使ってください。
- tar -xzf zaptel-1.4.12.1.tar.gz
- tar -xzf libpri-1.4.9.tar.gz
- tar -xzf asterisk-1.4.20.tar.gz
- tar -xzf asterisk-sounds-1.2.1.tar.gz
- tar -xzf asterisk-addons-1.4.7.tar.gz
- cd zaptel-1.4.12.1
- ./configure
- make
- make install
- make config
- service zaptel start
- cd ..
- cd libpri-1.4.9
- make
- make install
- cd ..
- cd asterisk-1.4.20
- ./configure
- make
- make install
- make samples
- make config
- cd ..
- cd asterisk-sounds
- make install
- cd ..
- cd asterisk-addons-1.4.7
- ./configure
- make
- make install
- 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 に次を追記します(
[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 ストリームに遅延・大きなパケット損失がなく通話品質が確保される。
簡単なテスト手順
- sip show peers を実行して内線が登録されているか確認する。
- core show channels で通話中のチャネルを確認する。
- 外線へ発信し、着信側で音声が聞こえるか確認する。
運用チェックリスト(役割別)
管理者
- ソフトウェアバージョンとセキュリティパッチを定期適用
- バックアップ: /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(概要)
- 新設定はテスト環境で検証
- 設定変更前に現行構成をバックアップ
- 変更反映後は asterisk -rx “core reload” で再読み込み
- 影響範囲を確認(内線登録、外線発信、着信)
- 問題が出た場合は直前バックアップにロールバック
簡易フローチャート
次の簡単な流れで導入判断ができます。
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 までお問い合わせください。