--
--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:

27
2013

古いCiscoルータをVoIPゲートウェイにするための設定

CATEGORYPC
久しぶりのコンピュータ関係の話題。職場で偉い人から Cisco 2801IP PHONE 7940 を渡され、「こんなのがあるんだが使い方が判らない、これでIP電話を作ってくれ」と言われてここしばらく途方にくれつついろいろ調べることに。
最終的に、Cisco 2801 はVoIPゲートウェイとして再利用することにしたので、その設定とかをメモっとく。


まず渡された Cisco 2801 はこんな感じの状態。
Cisco詳しくないんだけど、同じ機種でも入ってるソフトとか構成とか違うんだよね?
調べたところ、こいつはどうやらIP-PBX用の構成になっている統合型ルータで、Cisco CallManager Express (CME) 3.2 というIP-PBXソフトウェアが搭載されている、ということが判った。

そもそもIP電話ってどんな構成だっけ?Ciscoのこれってどうやって使うの?っていうか資料何処?というところから格闘すること数日、そこで判ったのは
・・・これはだいぶ古いものらしく、このバージョンのCMEはSIP電話機を繋げない、SCCPというCisco独自プロトコルの電話機にしか対応してないorz
CMEがSIP電話機に対応したのは、よりによって次のバージョン3.3から、らしい(--;

IOSはバージョンアップは可能なものの有償(結構お高い)らしい。
手元のルータはどうも余ってたのが回ってきたのか、寄付かなんかで貰ったもの?らしく、そういうのは期待できない。
SCCP対応電話機(これもたぶん貰い物)は手元に一台しかないっぽく、それで組んで今更独自規格の電話機を買い足すというのも馬鹿らしい。
ということで、Cisco 2801 をIP-PBXとして使うのは諦め、適当なマシンにOSSの Asterisk を入れてIP-PBX環境を構築することにした。
そして、それだけではPSTN(アナログ電話網)と繋ぐための口(FXOポート)がないので、Cisco 2801 をVoIPゲートウェイとして再利用することにした。
っというここまでが前振り。


で、実際にどんな設定をしたかというのが下記。
なお、Fast EthernetとかSSHとか普通の設定についてはいろんなとこで解説されてるので割愛。
VoIPゲートウェイの機能に関係する部分だけ。

外線発信用のダイアルピア設定

dial-peer voice 1 pots
preference 1
destination-pattern .T
port 0/1/1
forward-digits all
外線に発信するための設定。さんざん悩んだものの、どうもこれだけで繋がるらしい。
dial-peer voice 1 pots でまず適当な番号のアナログ回線 (POTS) 用のダイアルピア(電話の発信ルール?)を定義する。

destination-pattern では、このダイアルピアを適用する番号を指定。.T というのは、全ての番号に対してこのダイアルピアを使用する、という意味。
このダイアルピアは外線用なので、IP電話網への内線に対しては使用して欲しくないわけだが、今回はそれは別途より番号を限定したダイアルピアを定義することで回避している。
(複数のダイアルピアと一致する場合、より詳細に一致する方が使用される。)
0発信したときだけ、みたいな設定をすることもできる。詳しい設定は後述の参考ページを参照で。

port 0/1/1 は、このダイアルピアで発信する先のポート番号。potsを指定した場合、FXOのポート番号を指定する。

forward-digits all は、FXOポートに対して、渡された全ての電話番号をそのまま転送する、という設定。
今回は特に何もルールが無いのでこれを設定してるが、外線のときは一旦*を押してから~みたいなルールがある場合に先頭1文字は取り除く、とかそんな設定も出来るみたい。

preference 1 は、ダイアルピアの優先度の設定・・・のはず。
同じ destination-pattern の回線がある場合に、優先度の高い方から使われる、らしい。
なので、バックアップ回線とか2回線目とかを定義するときはたぶんこれを使うことになるはず・・・と伝聞調なのは、設定は調べたものの、今のところ手元に1回線しかないので試せてないから(汗
たぶんそういう理解であってると思うよ、うん。

外線着信用のFXOポート設定

voice-port 0/1/1
connection plar opx 5000
次いで外線が着信したときの設定。
基本的にFXOポートに着信すると、その番号がIP電話網内でダイアルされたのと同じ動き(その番号の電話機が鳴る)になるんだけど、外線の時は代表の電話が鳴ってほしいし、そもそも内線番号は渡されない。
なので connection plar opx 5000 として、この外線が着信したら自動的に内線番号5000の電話機に繋がるよう設定している。
opx というオプションを付けないと、一見繋がるものの、受話器を取らなくても発信側に着信の応答がされてしまうので注意。

(でも個人的に、そういうのはVoIPゲートウェイ側ではなく、IP-PBX側・・・つまりAsteriskで管理すべきだと思う。本当はもっとうまいやり方があるのかも・・・。)

内線網(Asteriskサーバー)へのダイアルピア設定

dial-peer voice 5 voip
destination-pattern 5...
session protocol sipv2
session target ipv4:10.1.1.8
dtmf-relay rtp-nte
codec g711ulaw
最後に、VoIPゲートウェイからAsteriskサーバーへの接続設定。幸いなことに、このバージョンのIOSでもサーバー同士の接続にはSIPが使えたので、それを用いた。
この辺は日本語で詳しく解説しているページがあったので、そちらを丸々参考にさせて頂いた。感謝。
上では、5から始まる4桁の番号の場合、内線としてAsteriskサーバーへ転送している。
前述のFXOポートの設定と合わせて、外線が着信するとAsterisk側に繋がっている5000番の電話機に着信する。


Asterisk 側の設定も一応書いとく。AsteriskとしてはAll-in-oneのAsterisk NOW 2.0.2を使ってるので、設定はGUI(FreePBX)で行った。なのでさっきのリンク先に書かれてる記述とはちょっと異なる。
まず、Trunkの作成で、VoIPゲートウェイへの接続設定を作成。Outgoing SettingsのPEER Detailsをこんな感じにする。
host=10.1.1.1
type=friend
disallow=all
allow=ulaw&alaw
nat=no
canreinvite=yes
qualify=yes
insecure=port,invite
次いで、上記Trunkを使うOutbound Routeを作成。
Match pattern に 0. として0から始まる外線番号だったらこのトランクを利用するようにと設定した。
後は Intra-Company をチェックしてみたりとかで、とりあえず Cisco→Asterisk も Asterisk→Cisco も通話できる感じになった。


設定については以上。こうしてみると大した量じゃないんだけど、これを調べるのには凄い苦労したorz
以下、何個かまだ紹介してない参考になったページをリストアップしとく。
普通は素直にAsteriskならAsteriskとその周辺機器、CiscoならCiscoとその周辺機器って感じでもっと楽に組めるのだろうが、この辺の機材が余ってるとかあえて修羅の道に行きたい人の参考までに。。。


2013/2/28追記。
ふうテストも全部OKだったしこれで終わりだ、と自信満々に設置しようとしたら、なんか着信の動作がおかしい(発信すると即通話中の表示、中止しても鳴り止まない)という初歩的な不具合に遭遇。上は発信・着信は出来るけどなんか間違いがある・・・っぽい?orz 解決したら後日訂正。

2013/3/1追記。
とりあえず connection plarconnection plar opx に変えることで問題解決。opx は Off Premises Extension の略で、詳しいことは判らないけど、これが無いと転送した時点で発信側に回線が確立されたものと応答してしまうらしい。常時回線みたいなとこで使う設定? 詳しくはこの辺(英語)を参照。
ただ、たまに受話器を取っただけで着信にならず、着信ボタンを押さなければいけないことがある(?)。でもそれはなんとなくうちの構成が変(FAXの後にVoIPゲートウェイで両方鳴る)なせいか、古い電話機の問題な気もするし、運用にさほど支障があるわけでも無いので、まぁいっかということに・・・。

あと、直接関係ないので上には追記しなかったが、cptone IN という国別のダイヤル情報?みたいなのも一応設定した。といっても、スリランカ無いのでインドってしたんだけど・・・いいのか?

2013/3/11追記。
しばらく運用してると、また別の問題が。
どうも、アナログ電話を着信→転送→取られないまま発信者が切る、とかするとなんかずっと転送コールが鳴ったままになる様子。
IP電話同士の内線だとOK(ちゃんと鳴り止む)なので、VoIPゲートウェイ絡みの何かしらの問題だと思われるが・・・むーアナログ電話はややこしい(--;
スポンサーサイト

Tag: Cisco ルータ VoIP

2 Comments

矢向  

No title

トラックバックありがとうございます。
ただ、、面白いことに基本的に個人投資家的なブログを書いたりw

2013/03/11 (Mon) 00:52 | EDIT | REPLY |   

honeplus  

No title

こちらこそコメントありがとうございます。参考にさせて頂きました。
自分もあれ?技術系blog・・・じゃないっぽい?とか思いつつ見ていましたw

2013/03/11 (Mon) 15:21 | EDIT | REPLY |   

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。