利用者:MR G

提供: VoIP-Info.jp
2008年6月22日 (日) 00:09時点におけるMR G (トーク | 投稿記録)による版 (OCN)
移動先: 案内検索

Astlinuxネタの一部を引越しさせたYO!!

目次

ミスプリ用紙の裏

chan_sccp

  1. NAT越えの発着信が可能。(PBX→グローバルIP 電話機→ローカルIPの組み合わせで運用chu!)
  2. chan_sccpにUAの機能はついてない。従ってCallManagerにはぶら下がらない。
  3. 本家(?)のML宛に、Line button patchが投稿されることがある。
  4. 使ってる人が少ない。
  5. sccp.confの記述方法が変(コンテキスト毎に分けられていない)

chan_sccpは、個人的見解としては「あまりいけてない」
とはいえ、chan_skinnyよりはマシな気が。
SCCP(Skinny)を使うなら、CP-7911のようなラインキー無しの電話機を使ったほうが楽で宜しい。
(但し利用者の環境に依存する)

Skinnyファームウェアを使うよりも、ノウハウの豊富なSIPファームウェアのほうがオススメ。
でも日本語ドキュメントは、ほぼ皆無

SIPに対応していない電話機(CP-7931とかWiFiなCisco電話機とか)を動かすなら、chan_sccp必須ですヨ!奥さん!

Cisco CallManager Express

Quintumと同様、Regist無しでAsteriskにぶら下がるやりかたと、
Regist有りでAsteriskにぶら下がるやりかたの二種類が確認されている。
このあたりはキッチリ打ち合わせしないと痛い目見る可能性極めて大なり。(ダイヤルプラン的な意味で)

ITSPとパケットフィルタリング

ぼちぼちSPIT(Spam over internet telephony)対策も練らんとね。と思いつつ、
まずはSIPポートを開く対象をホワイトリスト化しておこう。
G-LEXおよびOCNと繋ぐためのパケットフィルタリングルールでも創っておこう。
まずレジスト先ホストをリスト化しておく。
whoisからIPアドレス範囲調べて、ポートを開けても良さそうな気もするが、クライアント向けIPアドレスを含めてしまうのは宜しくない。
かと言ってIPアドレス一個だけ決め打ちしていると、サーバー側IPが変わったときに痛い目に遭う。

パケットフィルタリングに対する4つの方針

閉鎖的 ~UDP/5060開放先IPを決め打ち~

特定のIPに限ってUDP/5060を開放する。

利点
基本的にはITSP経由での通信となるので、セキュリティホールを突付かれ難くなる。
弱点
ITSPのIPが変わった場合、通信できなくなるのでトラブルに見舞われやすい。(と思う)

開放 ~UDP/5060はサブネットで区切る~

WhoisゲートウェイからITSPが使用しているIPアドレスの範囲を調査し、その範囲内に限ってUDP/5060での通信を許可する。

利点
基本的にはITSP経由での通信となるので、セキュリティホールを突付かれ難くなる。
弱点
ITSPのIPが変わった場合、通信できなくなる可能性が高い
IPを一個だけ開けるよりかはトラブルになり難い。

けっこう開放 ~UDP/5060ばっちこい~

利点
ITSP側でIPアドレス変えても問題なくSIPでの通信が可能
弱点
某国からUDP5060宛の攻撃がやって来るかもしれない。SIP周りのセキュリティホールに注意すること

走召開放 ~パケットなんでもばっちこい~

インターネットからのパケットは全てサーバーに流すようにする。パケットフィルタリングを行わない。

利点
パケットフィルタリングに悩まないで済む。
弱点
サイバーノーガード戦法を取らざるを得ない。

OCN

210.227.109.0/24っぽいが、voip11.ocn.ne.jp以降の振られ方が謎。
voip-ca3400まで調べたところで挫折。

voip1.ocn.ne.jp(3350~3359,3385)
210.227.109.197
voip2.ocn.ne.jp
210.227.109.203
voip3.ocn.ne.jp(3340~3349,3386,3680)
210.227.109.206
voip4.ocn.ne.jp(3320~3329,3387,3670~3679)
210.227.109.232
voip5.ocn.ne.jp(3310~3319,3395,3396)
210.227.109.215
voip6.ocn.ne.jp(3300~3309,3388,3389,3390,3391)
210.227.109.217
voip7.ocn.ne.jp(3330~3339,3392)
210.227.109.219
voip8.ocn.ne.jp(3397,3398,3399)
210.227.109.245
voip9.ocn.ne.jp(3363,3364,3371~3376,3378,3379)
210.227.109.247
voip10.ocn.ne.jp
210.227.109.249
voip11.ocn.ne.jp
210.227.109.119
voip12.ocn.ne.jp
210.164.27.197
voip13.ocn.ne.jp(3660~3669,3690~3699)
211.123.198.180
voip14.ocn.ne.jp(3640~3649,3650~3659)
211.123.198.181

OCNの例外

3360~3362,3365~3370,3377,3380,3393,3394,3400は voip-caXXXX.ocn.ne.jpというホスト名では無い模様
nslookupに引っかからない

OCNとRTPパケット

OCNは、SIPサーバー(レジストしたりInviteしたり)とRTP用サーバー(通話時に通信するIP)が別物になっているんで、
RTP用のパケットフィルタ設定が必要となる。

RTPおしゃべり相手履歴
  • 60.37.5.97

G-LEX

202.210.173.128/25で括られている模様(ソースはwhois)

iax002.g-lex.net
202.210.173.169
sip002.g-lex.net(sip001.g-lex.net)
202.210.173.154

しかし、以前は222.で始まるIPアドレスだったよーな気がした。
Cisco ACLで書いてみたら、こんな按配。

remark SIP(Invite to G-LEX)
permit udp host 192.168.0.1 gt 1023 202.210.173.128 0.0.0.127 eq 5060

注目しているURL

AstLinux小ネタ

Building a compact Asterisk server with AstLinux
Astlinuxの小ネタ多数。但し英語

  • コンパイル済みのAstlinuxをインストールする
  • crontabを設定する
  • 10Base-Tでリンクさせる
  • 俺様ば~ぢょんのAstlinuxを創る

Standalone Cisco 7941/7961 without a local PBX

CP-7941/7961を単独で動かす法

79XX系電話機とAsterisk

Asterisk phone cisco 79xx

ファームウェア

http://www.xs4all.nl/~graver1/cisco/7905/ 7905のファームウェア
ftp://ftp.cisco.com/pub/voice/ip-phone/sip-7960/ 7960のSIPファームウェア
CP-7960GとCP-7961Gを混同していた時期もありました。

Cisco 7905/7912

Cisco VoIP_INFO 7905/7912の設定

chan sccp

SCCPドライバの解説
FAQ

Cisco 79XX カスタマイズ

着メロとか壁紙とかのカスタマイズ(日本語)

短縮ダイヤル

Configuring Speed Dial
ラインキー用、ディレクトリボタン用(電話機単体用、企業共有用)短縮ダイヤル設定解説書。
SIPファームとSCCPファームで機能が別れている(らしい)

いぢくり中

Cisco IP Phone

CiscoIP Phone7900シリーズ

マルチライン動かないぞガッデム
SIPファームウェア入れたら、壁紙サイズとか日本語表示用ファイルが変わってた。
とか散々な目に遭ってしまった。

着信音ネタ(音源ファイルのつくりかた)

sox使え。とあるけど、windowsで作れるかやってみたいところ。
そもそもsoxって何。
astlinuxでの保留音作成と同じ流れでなら作れるかな?
それにしても上限が2秒というのは厳しいなぁ。以下、着信音の仕様

8000 Hz サンプリングレート
8 bits per sample
ulaw compression
240 - 16080 samples long (0.03 秒~2.01 秒)

着信音ネタ(鳴り分け)

Asterisk側で着信音を鳴り分けできるらしい。
Asterisk側にて、ダイヤルする前に"ALERT_INFO"をSIP inviteに引っ付けて電話機に送り込むと、指定した着信音が鳴るらしい
ただし、

Note that this only seems to work for the internal ringtones and not for any custom ringtones.

↑このように内線着信で、なおかつカスタマイズした着信音だと使えない(らしい)
本当に動くんだろうかと。(例によって未検証)

Asterisk version <1
 exten => 3010,1,SetVar(__ALERT_INFO=<Bellcore-dr1>) 

Assterisk 1.0 and 1.2
 exten => 3010,1,SetVar(_ALERT_INFO=<Bellcore-dr1>)

Asterisk 1.4
 exten => 3010,1,SIPAddHeader(Alert-Info: <Bellcore-dr1>)

Cisco 7970G(SIPファームウェア)

LOGげっちゅ

最近の、CiscoのIP電話はHTTPを喋るので、http://192.168.0.66 (←電話機のIPアドレス)
とやると、設定内容やらDEBUG logやらが表示されるので便利
LOGから「Unknown」とか「Error」あたりで調べると、コンフィグの書き間違いを探すことができる。

XML Parser Warning: Unknown element 'uid' in element '/device/networkLocaleInfo' (line=67)

この時ばかりは「とりあえず、テキストファイルで出力してしまえ」というInternet Explorerを使ったほうが良い
標準設定なFirefoxの場合「得体の知れないファイルだけど、どうよ?」と 聞いてくるのでチョット面倒

パワーセーブ

Cisco IP Phone7970は液晶ディスプレイなので、夜は消灯しておいたほうが地球に優しい。
地球に優しい設定は、例によってSEP<MACアドレス>中に記述する必要がある。
http://www.redwatervoip.com/cisco/7970pso.txt とか
http://www.trixbox.org/forums/vendor-specific-unmoderated/linksys-cisco/7970g-power-save-configuration
が参考になるかもしれない。
ちなみに、CallManager Expressで(地球に優しい機能を)設定する場合は、

Router> enable
Router# telephony-service
Router# configure terminal
Router(config)# telephony-service
Router(config)# service phone displayOnTime 09:00  ←AM 9:00点灯
Router(config)# service phone displayOnDuration 12:00 ←12時間経ったら(PM 9:00になったら)消灯

結局のところ、SEP<MACアドレス>.cnf.xmlファイルに上記設定が書き込まれる訳ですな。

Cisco 7961G(SIPファームウェア)

ぶち込みかた

  1. 7960/7940のファームウェア(SIP用)を解凍し、TFTPサーバーに置いておく。
  2. (DHCP Optionが指定可能な)DHCPサーバーを立てておく。
  3. DHCPサーバーの設定で、TFTPサーバーのIPを指定しておく。
  4. #キーを押しながら電源(PoEならUTPケーブル)を挿す。(着信ランプが点滅するまで#を押し続けること)
  5. 着信ランプが点滅しはじめたら、123456789*0#の順に押す。(取り消しは、他のキー二度押し)
  6. ファームウェアが真っ白になり、電話機再起動
  7. 電話機再起動後、ファームウェアをTFTPサーバーから引っ張ってくる。

設定ファイル(SIP用)

Asterisk phone cisco 79x1 xml configuration files for SIP
SIP用cnfファイルジェネレータ←動作未検証

ソフトキー設定

SEP<MAC Address>.cnf.xml中の
<softKeyFile>SK50719900-3bee-4594-bc3f-6400e1a33bf0.xml</softKeyFile>
という箇所が、ソフトキーのテンプレファイル読み込み設定らしく、
電話機が起動したら、当該ファイルをTFTPサーバーから読み込みに行く。
しかし中身はどうなっているんだろうか?(↑のxmlファイル名でぐぐると大量に出てくる)
ソフトキー設定の書式が間違っていると、Unprovisionedと表示され、
延々と設定ファイルを読み込むようになる(restartコマンドを繰り返す)
[元ネタ]
と言うかですな。SK50719900-3bee-4594-bc3f-6400e1a33bf0.xmlでぐぐると大量に出てくるあたり、
元ネタが一つしか無いんじゃないかと思ったりする訳で。

ファームウェアバージョン指定

SEP<MAC Address>.cnf.xml中の
<loadInformation>SIP70.8-0-0SR1S</loadInformation>
という箇所がファームウェアに関する設定となり、上記バージョンのファームウェアを
TFTPサーバーから引っ張ってくる
(上記の記述内容では)SIP70.8-0-0SR1S.loadsというファイルをTFTPサーバーから引っ張ってくる

AutoAnswer

AutoAnswer機能を利用したスクリプト作成中
プログラム力の無さに絶望した。

AstLinux

Microclient JRにAstLinux入れてみた。

EXTIF

#EXTIF=eth0

/stat/etc/rc.conf内の、EXTIFをコメントアウト解除すると、PBXオンリーモードになり、
HTTPの設定とかTFTPサーバーの設定が効かなくなる。

INTIF

#INTIF=eth0

/stat/etc/rc.conf内の、INTIFをコメントアウト解除すると、ゲートウェイとして使えるモードになるが、

EXTGW="10.0.0.1"
DNS="192.168.0.1"

デフォルトゲートウェイやDNSの設定が効かなくなる。(rc.confの設定が無視される)
rc.confの設定を見直すのが正攻法ではあるものの、小細工も結構効いたりする。

DNS

INTIF=eth0を有効にしていると、/etc/resolv.conf

Forneus init.d # cat /etc/resolv.conf
search hoge.
nameserver 127.0.0.1

という具合に、外部DNSを参照してくれない。
rc.conf内のDNSの項目が無視される。 /etc/init.d/dnsmasqを開くと

if [ "$LOCALDNS" ]
then
RCONF="/tmp/etc/resolv-up.conf"
echo "search $DOMAIN
nameserver 127.0.0.1" > /tmp/etc/resolv.conf
else
RCONF="/tmp/etc/resolv.conf"
fi

とあるので、

nameserver 192.168.0.1" > /tmp/etc/resolv.conf

と小細工することで任意のDNSサーバーを参照することが出来る。

デフォルトゲートウェイ

vi /etc/init.d/network

とやると、/stat/etc/rc.conf内のネットワークの挙動が(ちょっと)わかる
デフォルトルートは

route add -net default gw "$EXTGW" dev "$EXTIF"

と設定されているようだ。

余りスペースを活用する

Astlinux_空き容量有効活用に引越ししますた。

資源(あいたスペース)の有効活用

標準の保留音では「Asteriskでござる」と言わんばかりであり、ちょっち個性に欠けるので、
/mnt/hda2/に保留音をぶちこむ。みっくみくにしてやんYO!!
Astlinuxで使える保留音のファイルフォーマットはMP3ではなく、ulawファイルなので注意が必要である。
/var/lib/asterisk/moh/default以下には収まりきれないので、下記の方法で解決する

リンク張る

設定要らずで済ますなら、lnコマンドを使う。ファイルが少ないなら問題ないだろう。

Forneus # ln -s /mnt/hda2/MoH/clouds.ulaw /var/lib/asterisk/moh/default/
設定変更

/stat/etc/asterisk/musiconhold.confを直接編集しても良い。

Forneus asterisk # vi /stat/etc/asterisk/musiconhold.conf
[default]
mode=files
;directory=/var/lib/asterisk/moh/default
directory=/mnt/hda2/MoH

random=yes      ; Play the files in a random order

tftpd

Cisco電話機を動かす前にtftpサーバーを動かす必要がある。
Cisco電話機は、tftpサーバーから設定ファイル、壁紙、着信音などを引っ張ってくるからである。

Forneus # vi /stat/etc/rc.conf

(略)

##Configure TFTPD support
##Works the same as FTPD above.
TFTPD=inetd  ←コメントはずした
 
##TFTP Server options (flags to pass to TFTP)
##This only works in standalone TFTP server mode
#TFTPDOPTIONS="-l -s /tftpboot"
TFTPDOPTIONS="-l -s /mnt/tftp"   ←付け足しても無視される模様

TFTPD=inetdにすると、TFTPDOPTIONSが無視されてしまうようだ。
TFTPD=tftpdにすると、tftpd自体が動かない模様。
tftpの設定も小細工が可能である。

/vi/etc/init.d/inet
if [ "$TFTPD" -a "$TFTPD" = "inetd" ]
then
if [ -d /mnt/kd/tftpboot ]
then
ln -s /mnt/kd/tftpboot /tmp/tftpboot
else
mkdir /tmp/tftpboot
fi
echo "tftp    dgram   udp     wait    root    /usr/sbin/tftpd         tftpd -s 
/tmp/tftpboot" >> /tmp/etc/inetd.conf   ←ここの行を小細工(Before)
fi
}
fi
echo "tftp    dgram   udp     wait    root    /usr/sbin/tftpd         tftpd -s 
/mnt/hda2/tftp/" >> /tmp/etc/inetd.conf   ←ここの行を小細工(After)
fi
}

ファイルを変更したら、再起動をかける。
とりあえず動いたらしい

Forneus log # ps |grep tftp
 1226 root        272 S   tftpd -s /mnt/hda2/tftp/
 1364 root        296 S

Astlinuxの小ネタ

起動が超遅い

DNSの正引き逆引きが出来てない可能性大。

謎のポートの2000番

chan_sccpが2000番を絶賛使用中

2GB以上のCFに入らない

DDforWindowsでダメならphysdiskwrite使ってみる。

BOOTしない

CFカードに孔明の罠が仕込まれていることがあり、ファイルの一部が破損していることがある。
configもろもろのバックアップ(CF丸ごとでも良い)を取っておくこと。
ファイルの一部が破損することがあるので、
md5sumにてファイルの同一性を確認すべし。(ファイルの一部が壊れることもある)
特にTranscend製のカード使ったら頻発した。(4枚中3枚で上記障害が発生)