- 2010-03-14 (日) 0:19
質問、意見、間違いの指摘はページ下部のコメント欄でお願いします。
- この記事を読むにあたって
- 必要なもの
- サーバの入手方法
- セキュリティパッチの適用
- とりあえず Ventrilo Server を起動してみる
- Ventrilo Server の設定をする
- 外部から接続を受け入れるための設定
- 起動中の Ventrilo Serverを操作
- Ventrilo から Ventrilo Server を操作
- チャンネルの作成・削除
- バン、キック
- Ventrilo Server にワンクリックで接続できるリンクの作成
- 知ってると便利な知識
- 付録
この記事を読むにあたって
Windows OS (32bit) でのVentrilo ver 2.1.4用のサーバ(Ventrilo Server ver 2.1.2)の建て方を書きます。
クライアントとサーバのバージョンが違うことに違和感を覚えるかもしれませんが C/S 方式(クライアント/サーバ方式)のプログラムではよくあることです。
クライアントの説明についてはWEB上に有益な情報が多数存在しているため、今更書く必要を感じないので解説していません。
なぜ最新版のver 3.0ではないのかというと、Ventrilo Serverはver 2.3.0以降は有料となってしまったからです。ライセンスは法人向けに接続数1000単位での販売となってしまったのでとても個人が買えるようなものでありません。試用版も公開されていますが最大同時接続人数が8人と制限され9人以上の接続には実質不可能となってしまいました。無償で利用できる最後のVentrilo Server であるver 2.1.2 が広く使用されています。セキュリティ上の問題やソフトウェアの質を考えると接続人数が8人を超えないのであればVentrilo Server ver 3.0 シリーズの最新版の利用をお勧めします。
Ventrilo Server ver 2.1.2を選ぶ利点、欠点
現状でVentriloを使う理由はメモリ使用量が少ないくらいしかありません。Ventrilo Server ver 2.1.2 を利用する上での最大の欠点はすでに開発の終わったソフトウェアだということです。Windows 7で不具合が出るなど今後リリースされるWindowsにも対応しません。将来的により危険性の高い脆弱性が発見されて、それに対する修正パッチが出ないまま放置される可能性があります。日本語への対応が充分でないことや音質も比較的悪い通信遅延も大きいです。
他の類似のVoIP ソフトウェアとしては、Mumble 1.2、TeamSpeak3、Skype という選択肢があります。Ventrilo 2.1.2 を使うよりは、これらの採用を考えた方が良いと思います。
サーバを自前で建てるデメリット
サーバの運用は、連続稼働による電気代や、メンテナンスの手間、サーバ稼動による通信帯域の圧迫、セキュリティ上の問題などなど非常に面倒です。
特に電気代は大きいです。仮にデスクトップPCをサーバにした場合、1日24時間稼働で30日続けたら、それだけで1000円超えます。(1時間あたり平均100W消費するとして、電気代が15円/kWhの場合)
Ventrilo Server ver 2.1.2のフリーサーバはいくつかありますし、Ventrilo Server ver 3.0のサーバは、15ユーザなら月に5USドルも払えば借りることがで きます。電気代や手間を考えたら自前で用意するよりは月500円程度で商用サーバを借りた方が良いと思います。商売でプロが運用しているのだから安心でき ますしね。
それでも、自分の自由になるサーバを自前で作りたいという場合はこの記事を読むと参考になるかもしれません。
Ventrilo Server Ver.3.0以降 有料サーバ
VentriloServers.biz (ClanwarzGamingServers.com)
LeetVoiceServers (LeetServers.com)
Ventrilo Server Ver.2.1.2 フリーサーバ
この記事の目的は、不足しているVentrilo Server ver 2.1.2のフリーサーバを建ててくれる人や、飽和気味のフリーサーバから自前の専用サーバに移る人の手助です。
サーバ管理者さんの負担や、低遅延性を考えて特定のサーバに一極集中するより分散した方が利用者のためですが、わかっていない方が多いらしく集中しちゃってますね。
「サーバをフリーで開放しても良いよ」と考えている人は、TOMBOY.ORGの管理人さんがフリーサーバリストを作っているので連絡を取ってみると良いかもしれません。
必要なもの
Windows PC
ハードウェア的にはノートPCなどの消費電力が低いものが良いかと思います。小型PCは熱が篭りやすいため排熱には充分気をつけてください。Ventrilo 専用に動かすのであれば、CPU の性能は低くてもかまいません。
セキュリティソフト
アンチウィルスソフト機能のみのものでなくちゃんとファイアウォール機能が付いたものが良いです。フリーソフトで揃えるならファイアウォールとアンチウィルスソフトを両方共インストールするようにしてください。
ある程度のPCスキル
基本的なファイルの圧縮・展開のスキル、ネットワークの基礎(IPアドレス、ホスト名、ポート、グローバルIPアドレス、プライベートIPアドレス、DNSなど)、コマンドラインでの操作、ルータの設定(ポート開放)などの知識が必要になります。
これらの単語を見て感覚的に意味がわからないようなら Ventrilo Server を建てようとする前にPCスキルの基礎を学びましょう。建てながら覚えても良いと思います。
それなりに良い回線
サーバの場合は下り速度(ダウンロード)だけでなく上り速度(アップロード)が重要です。
16人程度が同時接続するサーバを建てるなら上りの帯域が実測で1Mbps 程度が最低ラインかと思います。
プロバイダ公称の通信速度はほとんどが下りの理論値ですので通信速度計測サイトで上り速度を計測することをお勧めします。
「必要な帯域とか」で必要な通信速度を試算しています。
知らないことはググって自己解決できるスキル
まぁ、「こんな説明記事書いといてわからなければググれかよ」って思うかもしれませんが、これが大事です。
サーバの入手方法
公式では Ventrilo ver 2.1.4 用のサーバ ( Ventrilo Server ver 2.1.2 ) は公開を終了しているので貼っておきます。
ventrilo_srv-212-windows-i386.zip
zipファイルの展開すると下の7つのファイルがあると思います。
LICENSE | ソフトウァア使用条件とかが書いてあります |
ventrilo_srv.exe | サーバの本体です |
ventrilo_srv.htm | 説明書。これ読めばこんな記事読まなくても(ry |
ventrilo_srv.ini | 設定ファイルです。これで設定をやります。 |
ventrilo_srv.usr | ユーザを登録するファイル。基本的には使わない。 |
ventrilo_status.exe | 稼働中のventriloサーバの状態を取得するプログラム |
ventrilo_svc.exe | サーバをサービス稼働させるためのプログラム |
重要なファイルは赤字で書いておきました。
展開したファイルを1つのフォルダにまとめて適当な場所に置いてください。テスト段階ではどこにおいても良いですが、サーバを本格的に運用する段階になると動かすことが難しくなります。
置く場所の基準としては、
- フルパスが長くならない
- パスに日本語を含まない
- リムーバブル領域に置かない
あたりを考慮すれば良いと思います。
セキュリティパッチの適用
公式で公開が終了しているということはもちろん開発・サポートも終了されています。
ですから、Ventrilo Server ver 2.1.2にはいくつかのセキュリティ上の脆弱性が放置されたままです。
その一つが、NULL pointer dereferenceよるDoS攻撃です。要はリモートからサーバを攻撃して強制終了させる攻撃のことです。
パッチファイルを貼っておくので運用前に必ず当てるようにしましょう。
パッチファイル =>ventrilobotomyfix.zip
現状で配布されているセキュリティパッチはこれだけですが新たな脆弱性が発見されないとも限らないのでアンテナを立てておきましょう。
とりあえず Server を起動してみる
起動前に外部からの接続を遮断するようにventrilo_srv.iniの設定を変更しましょう。
外部からの接続が不能な環境なら別に設定しなくても良いです。
ventrilo_srv.ini の下の方にある
[Intf] # Examples:#
# Intf=192.168.0.30
# Intf=external.mydomain.com
# Intf=internal.mydomain.com
# Intf=127.0.0.1
この部分を
[Intf] # Examples:#
# Intf=192.168.0.30
# Intf=external.mydomain.com
# Intf=internal.mydomain.com
Intf=127.0.0.1
のように変更します。# はコメントアウトを意味していて、キーの先頭に付けるとキーの値が無効になります。ここでは無効になっていた値を有効にしたわけです。
初期設定ではどこからでもアクセス可能になっているところを 127.0.0.1 (自分のPC) のみアクセスを許可するという設定です。
ventrilo_srv.exe をダブルクリックして起動してみましょう。
これで必要最低限の状態でサーバが起動したことになります。
接続テストをしてみましょう。
次の用にVentrilo に設定してサーバに接続してみましょう。
ホスト名:localhost もしくは 127.0.0.1ポート名:3784 パスワード: デフォルトチャンネル:
localhost もしくは、 127.0.0.1 はそれを入力した人から見て自分の PC を意味しますから他人に教えても無意味です。
設定が面倒なら、下のリンクをクリックすることでも確認できます(Ventrilo がインストールされている必要があります。)
ventrilo://localhost:3784/servername=Server 1
このリンクの意味はこのあたりで説明しています。
接続してみると、先ほどの画面の下の方に、「MSG_CONN~」とメッセージが出ると思います。
これで接続できない場合はインストールされているセキュリティソフトの設定問題があるか3784番ポートが既に他のプログラムに使用されている可能性があります。この時点ではルータの設定は関係ありません。
Ventrilo Server の設定をする
サーバの設定を行う方法は3種類あります。
- ventrilo_srv.ini をメモ帳等のテキストエディタで書き換える
- 起動中の Ventrilo Serverを操作
- Ventrilo から Ventrilo Server を操作
2,3はプログラムを終了したら設定が消えてしまうので基本的な設定は ventrilo_srv.ini をメモ帳などで書き換えて行います。
ventrilo_srv.ini を変更後にサーバを再起動すると設定が反映されます。ventrilo_srv.ini を変更しても起動中のサーバに設定は反映されないので注意してください。
ventrilo_srv.ini はServer・Intf・Statusの3つのセクションで構成されています。
- Server – 一般的な設定
- Intf – 接続を受け入れるIPアドレスの設定
- Status – status requestを受け入れるIPアドレスの設定
INIファイルの構成
[セクション] キー=値 ・・・ キー=値 [セクション] キー=値 ・・・*基本的にキーは書き変えず右辺の値だけを書き換えます。
例:
[Server] Name=Server 1これを書き換える場合は、
[Server] Name=My Server上の場合は、キーはNameキー、値は”Server 1″や、”My Server”です。
ventrilo_srv.ini の詳細な設定項目はVentrilo Server 設定ファイル項目一覧を参照してください。
以下では基本的な部分について説明します。
Serverセクション
これだけは設定する
管理用パスワードである、 AdminPassword キーは最低限設定してください。
ventrilo_srv.ini をメモ帳で開くと先頭部分が下のようになっていると思います。
[Server] Name=Server 1Phonetic=Server 1
Comment=Hello
Port=3784
Auth=0
Duplicates=1
AdminPassword=
これを下のように変えます。
[Server] Name=Server 1Phonetic=Server 1
Comment=Hello
Port=3784
Auth=0
Duplicates=1
AdminPassword=01234567
この管理パスワードは特に重要なので安易に推測できるようなものは避けてください。
この例は設定してはいけないパスワードの一例です。
サーバ名とコメント
クライアントでサーバにログインすると、
サーバ名(コメント)
と、チャンネルリストの上部に表示されていると思います。
例えば初期設定では、ventrilo_srv.ini は以下のようになっているので
[Server] Name=Server 1 Phonetic=Server 1 Comment=Helloデフォルトのこの状態だと
Server 1 (Hello)
と表示されますが
[Server] Name=My ServerPhonetic=My Server
Comment=Enjoy your speaking.
のように変更すると
My Server (Enjoy your speaking.)
のように変更されます。
ログインパスワード
Password キーと、Auth キーの設定を変更します。
初期設定だと
[Server] Name=Server 1Phonetic=Server 1
Comment=Hello
Port=3784
Auth=0
Duplicates=1
AdminPassword=
Password=
これを
[Server] Name=Server 1Phonetic=Server 1
Comment=Hello
Port=3784
Auth=1
Duplicates=1
AdminPassword=
Password=MyPaSsWoRd
Auth キーは、サーバの認証方法を設定するキーです。
0 = 認証なし。誰でもサーバにアクセスできます。
1 = サーバアクセス時にパスワードが必要になります。Passwordキーで設定
2 = ユーザIDとパスワードが一致しないとアクセスできなくなります。
初期状態は、0の認証なし状態です、ログイン時にパスワードを求めるなら、1を設定します。
ログインパスワードは絶対に管理パスワードと同じものを設定しないでください。
Intf セクション
Intf セクションは、とりあえず起動してみるで変更しましたようにサーバで接続できる PC を IP アドレスで制限するときに使います。
接続制限にはパスワードを使うように Ventrilo は作られているのここでは特に設定する必要はないです。
Statusセクション
Ventrilo Server は、 status information requests (または status requests)を受け付けてサーバの情報を返す機能があります。
この status requests を受け付けるか否か、受け付けるなら受け付ける IP アドレスはどこか、などを設定するセクションです。
デフォルトではどこからも status requests を受け付けない設定になっています。
Statusセクションは慎重に
Ventrilo Server ver 2.1.2 に存在するセキュリティ上の脆弱性の1つはstatus information requests に関連するもので悪意あるユーザにより Ventrilo Server を強制終了させられてしまう可能性があります。ですので、仮にこの機能を使うとしても、設定は慎重にしましょう。
外部からの接続を受け付けるための設定
とりあえず起動してみるで、ventrilo_srv.ini を変更している場合は
[Intf] # Examples:#
# Intf=192.168.0.30
# Intf=external.mydomain.com
# Intf=internal.mydomain.com
# Intf=127.0.0.1
のように戻してください。
次に、外部(インターネット上)から接続ができるように、ファイアウォールとルータの設定をします。
ポート開放 方法
http://www.akakagemaru.info/port/
設定は上のページを参考にしてやりましょう。丸投げです。
ポート開放は機器やセキュリティソフトによって多種多様でそれだけでWEBサイトがひとつ立ち上がります。慣れている人なら2~3分程度で設定できることですが、初心者が一番つまずき安い場所です。
INIファイルで設定した port キーの値です。デフォルトなら TCP ポート 3784番です。status information requestsを受け付けない場合は、 UDP ポートの3784番は開放しないようにしてください。
ポート開放確認
ポート開放が終わったら下のページでポート開放ができているかを確認。このときホスト元IPアドレスもメモっておきます。
http://www.akakagemaru.info/port/tcpport.php
開放できていないようなら設定を見直してください。
接続テスト
ホスト名:上でメモったホスト元IPアドレス
ポート名:portの設定値、デフォルトは3784
パスワード:INIファイルにAuth=1と記述してあり、パスワード設定しているなら
デフォルトチャンネル:
の設定で接続してみてください。
一般に売られている家庭用ルータを使用している場合は、自分のIPアドレスに接続することが出来ない場合があります。
その場合は、誰か他の人に接続テストをしてみてもらってください。
corega社製のルータなどはルータ内からルータに割り当てられているグローバルIPアドレスを指定してアクセスすることが出来ますが、Buffalo社(旧メルコ社)製のものはだいたい駄目のようです。
192.168. ではじまるIPアドレスはルータ内でのみ有効なアドレス、127.0.0.1 、 localhost は自分のPC内でのみで有効なアドレスですので他人に教えても無意味です。
チャンネルの管理
チャンネルは、大きく分けて2種類ありルートレベルチャンネルと、その下に作成することができるサブチャンネルです。
ルートレベルチャンネルはサーバ管理者のみが作成することができます。
サブチャンネルは、ルートレベルチャンネルの管理者とサーバの管理者が作成できます。
具体的なチャンネルの作成方法は容易なので割愛します。
ventrilo_srv.ini の設定
ventrilo_srv.ini で、チャンネル関連の設定項目は、
Server セクションの ChanWidth キー、 ChanDepth キー、 ChanClients キーの3つです。
ChanWidth キーは、いくつサブチャンネルを作成できるかです。デフォルトは無制限です。
ChanDepth キーは、サブチャンネルのサブチャンネルをいくつまでネストできるかの設定です。1を設定するとルートチャンネルのみ作成可能となります。デフォルトは8個までです。
ChanClients キーは、そのチャンネルのサブチャンネルにいる人数を数えないでチャンネル1つあたりの何人まで入れるかです。デフォルトは無制限です。
チャンネル設定の保存先
チャンネル設定は、ventrilo_srv.exe と同じフォルダに ventrilo_srv.chn に保存されます。
パスワードの生データ(暗号化されていない状態)が保存されているので取り扱いに注意しましょう。
バン、キック
管理者になると、Ventrilo からバン(永久追放)とキック(一時追放)ができます。
バンとキックは両方ともサーバからユーザを追い出す点では同じですがバンの場合は追い出したユーザの IP アドレスを保存し次回からのアクセスを拒否します。
バンとキックは GUI の操作で出来ますがバンした人のリストの閲覧やバン解除はなどはコマンド入力になります。
コマンドを入力する場所はVentrilo から Ventrilo Server を操作、起動中のVentrilo Server を操作を参照してください。
バンした人のリストの閲覧はbanlist、一度バンした人をリストから削除して再び入れるようにするにはbandel、すべてのユーザをサーバからキックするにはkickallコマンドを使います。
起動中のVentrilo Server を操作
サーバを普通に起動している状態なら(ventrilo_srv.exe をダブルクリックして起動)なら下のような画面が出ているはずです。
この状態で画面の一番下にVentriloのコマンドを打ち込むことでサーバを操作することができます。
ただし、Windows サービスとしてサーバを稼働させているときはこの画面が出てこないのでVentrilo を使って Ventrilo Server を操作する必要が出てきます。
Ventrilo から Ventrilo Server を操作
Ventrilo からも起動中の Ventrilo Server の操作ができます。
まずは、サーバのサーバ管理にログインしましょうう。
下の図のように、クライアント上のメニューで管理者になってください。
ログインして管理者になれたら、チャットウィンドウを表示します。
ここで入力するパスワードは、ventrilo_srv.ini の AdminPassword の値です。
上記のようにチャットウィンドウで、
/rcon コマンド
と打ち込めば、Ventriloのコマンドを使ってクライアントソフトから Ventrilo Server を操作することができます。
ここでは、name コマンドを使ってサーバ名を表示させています。
Ventrilo Server にワンクリックで接続できるリンクの作成
Ventrilo を入れているPC向けにサーバに簡単にアクセスできるリンクを作ることができます。
書式は
ventrilo://HOST名:ポート番号/servername=サーバ名
です。
servername は、Ventrilo の接続先エディタに登録されるサーバ名です。
他にもオプションで
serverpassword サーバパスワードが必要な場合のパスワード
channelname サーバにアクセスしたときに入るチャンネル
channelpassword そのチャンネルにパスワードがあるならパスワード
みたいなのを指定できます。
例えばこんなのですね。
ventrilo://testserver.com:3784/servername=hoge&serverpassword=password&channelname=1ch
注意点として、
- Ventrilo のクライアントがインストールされていること
- Ventrilo のクライアントが起動していないこと
- Ventrilo のクライアントに最低1人以上のユーザを設定してある
このあたりが満たされていないとエラーになります。
Windows サービスとして登録
一通り設定が終わり、「稼働させても大丈夫じゃね?」と思えるようになったらWindowsサービスとして Ventrilo Server を登録します。
Windowsサービスとして登録すればログオフ状態でも稼働したままになる・PC起動時にVentrilo Server の起動・Ventrilo Server が異常終了しても自動的に再起動・バックグラウンドで動作などのメリットがあります。
サーバPC では低権限(管理者権限でない)ユーザでサーバを稼働させるのが一般的です。たまに管理者権限が欲しい操作をするときにログオフしてもサーバを稼働させたままにできるのでサービス稼働は重要です。
サービスとして登録する前に Ventrilo Server を置く場所を決めてください。サービス登録後は移動できません。
コマンドプロンプトを起動して Ventrilo Server を設置したフォルダに移動して
>ventrilo_svc -i
>net start ventrilo
と入力します。(Windows の管理者権限で行ってください。)サービスとして登録したら Ventrilo Server プログラムを手動で削除したりしないでください。
これで特にエラーがでなければVentrilo Server がWindows サービスとして登録され Ventrilo Server が起動します。サービスとして起動させた場合は ventrilo_srv を直接起動させたときのようにウィンドウはでません。
ウィンドウに表示されていた情報は、すべて ventrilo_srv.log に保存されるのでそちらで確認してください。
Windows サービスの開始と終了
サービスとして起動させていると Ventrilo Server のウィンドウが出ていないため Server の開始や終了を行う操作は若干面倒でサーバーの開始と終了にはコマンドプロンプトを使用してコマンドを打たなければなりません。サービスとして登録されているプログラムは通常はPC起動と同時に起動しているので手動で開始する必要はありません。
コマンドプロンプトで、
>net start ventrilo
と入力すればVentrilo サービスが開始します。
>net stop ventrilo
と入力すればVentrilo サービスが終了します。
設定ファイルを変更するときは、
- Ventriloサービスを終了
- 設定変更
- Ventriloサービス開始
の手順を踏みます。
コマンド入力が嫌なら。
ファイル名を指定して実行に “services.msc” と打って起動するツールから Ventrilo を探して設定すれば GUI で簡単に設定できます。
Windows サービスの登録を解除
登録したときと同様にコマンドプロンプトを起動して、Ventrilo Server を設置したフォルダに移動して以下のコマンドを入力します。
>net stop ventrilo
>ventrilo_svc -u
これで、登録が解除されます。
これ以降は Ventrilo Server を削除しても大丈夫です。
DDNSの利用
DDNSについては、このあたりを見て理解してください(ぁ
http://panasonic.biz/security/ddns/what.html
DNSは、HOST と IP アドレスを結びつけるデータベースのようなものです。IPアドレスが一定なら(仮に192.*.*.*があなたのPCだと確定していれば)単純にHOST名=>192.*.*.*と関連付ければすべて丸く収まります。
しかしながら個人で利用しているインターネット回線で自分のIPアドレスは一定でないことが多いです。私のプロバイダは比較的安定していて数か月IPアドレスは変わりませんが不安定なものだと一回インターネットに接続するたびにIPアドレスが変わります。IP アドレスはインターネット上での住所のようなものですから、これが一定しないと相手に接続してもらうサーバの運用は難しいです。IP アドレスが変わるたびにユーザに「今度は~に変わりました」とか伝えるのは面倒ですしね。
そこで、出てくるのが DynamicDNS なわけです。DDNS は IP アドレスが変わるたびにHOST 名=> IP アドレスの対応を更新してくれます。してくれるといっても専用のソフトを使って更新するわけですが・・・。
ちなみにプロバイダに頼めば IP アドレスを固定することはできますが IP アドレス固定のサービスは非常に高額です。月額で安くても回線使用料とは別に5000円程度で高いものだと数万です。
私はDynDNS.comを利用しています。
使っているのが corega 社製のルータなので、DynDNS の ID をルータに登録すればIP アドレスが変わるたびに自動更新してくれます。
corega社の説明。
http://corega.jp/product/navi/corede-net/
http://corega.jp/product/navi/ddns/
corega社のルータ使っていなくても専用のツールをインストールすることで更新は可能です。
http://www.dyndns.com/support/
DynDNS について日本語の説明がほしければ次のページが参考になります。
http://y-kit.jp/saba/xp/dyndns.htm
他にも日本のDDNSページもいくつかあるので探してみると良いかもしれませんね。
ただ、日本のDDNSサービスは不安定なものが多いので個人的にはDynDNSあたりをおすすめします。
Server PC の自動起動
サーバ管理者がいるときだけ手動で電源を入れるなら良いのですが、いない時も使いたいといった場合にはPCを自動起動させるように設定します。
24時間稼働させておいても良いのですが、電気代があれですしね。。。
UPSを使う
PCの自動起動を行う一般的な方法は、UPS の使用です。高機能なUPSの中には設定した時刻に自動で電源を入るような機能のものがあります。しかしながら、個人サーバで UPS まで導入するのはコストがあれですし指定時刻で起動できるような高性能な奴は高いです。
BIOS の自動起動設定を使用する
PC の中には、というか BIOS の機能ですが自動起動に対応しているものがあります。BIOS に、タイマよる起動機能が搭載されていれば、定時に自動起動が余分な機器を使うことなく可能なようです。これは搭載されている BIOS によってさまざまらしいので以下のページを見てください。
http://www.atmarkit.co.jp/fwin2k/win2ktips/743autopon/autopon.html
BIOSの停電時の動作を利用する
Restore AC/Power Loss・AC PWR Loss Restart といった項目がBIOS あればこの方法が使えます。これらの項目は停電後に電力が通じた時の動作にPCを起動するかどうかを設定する項目です。電力が通じた後にPCを起動するように設定してプログラムタイマーを使って一定時間に電力が通じるように設定しておけば一定時刻にPCが起動するように設定できます。プログラムタイマーっていうのはあれですね。電源コンセントにさしておいてタイマー機能の付いていない家電とかを一定の時間に起動させる奴です。
私の場合はREVEX のデジタルプログラムタイマー PT60D をつかってます。PT60D ならデジタルで誤差が少ないですし曜日別の設定とか平日・土日で分けたり設定できたりとなかなか便利です。
Server PC の自動終了
自動起動と比べて自働終了は非常に簡単です。Vector あたりからソフト拾って設定したら終わりです。
http://www.vector.co.jp/vpack/filearea/win/util/restart/timer/
専用のソフトを使いたくないという場合はタスクというWindows 標準の機能を使っても実現することが可能です。
http://www.kisc.meiji.ac.jp/~pz03013/report/soft/shutdown.html
http://d.hatena.ne.jp/Kishi/20071114
既知の脆弱性と対応方法
NULL pointer dereferenceエラーによるDoS攻撃
https://www.netsecurity.ne.jp/6_12016.html
Ventriloは、細工されたパケットを処理する際のNULL pointer dereferenceエラーが原因でDoS攻撃を受けるセキュリティホールが存在する。この問題が悪用されると、リモートの攻撃者にサーバをクラッシュされる可能性がある。 [更新]2008/08/18 登録
危険度:低
影響を受けるバージョン:3.0.2、3.0.0
影響を受ける環境:UNIX、Linux、Windows
対応方法:
影響を受けるバージョンとして、3.0.2 と 3.0.0 が上がっていますが実際はver 3.0.2以下(ver 2.1.2も含む)のすべてのバージョンが対象が対象となります。汎用パッチ(ventrilobotomyfix.zip)の適用で解決します。この脆弱性を利用してデータが盗まれたりはしないので危険度は低となっていますが細工されたパケット1つでも受け取ったら Ventrilo Server が即ダウンします。
status information requestsを悪用したDoS攻撃
https://www.netsecurity.ne.jp/6_4076.html
VoIPソフトウェアであるVentriloは、細工されたステータスパケットによってセキュリティホールが存在する。この問題が悪用されると、リモートの攻撃者にDoS攻撃を受ける可能性がある。2005/08/26 登録
危険度:低
影響を受けるバージョン:2.1.2~2.3.0
影響を受ける環境:UNIX、Linux、Windows
対応方法:
ステータスパケットというのは status information requestsのことです。Ventrilo Serverは status requestsを受け付けてサーバの情報を返す機能があります。
初期設定では status requests をすべて拒否する設定になっているので問題はないかと思います。気になるようなら status requestsを受け取るポートを閉鎖すればサーバに status requests自体が届かなくなるので安全です。status requests を受け付けるポートは、UDPのインバウンドポートでポート番号は一般の接続を受け付けるポート番号(ventrilo_srv.ini の Serverセクションのportの値)と同じです。
もっとも影響を色濃く受けるのが ver 2.3.0らしく ver 2.1.2ではさほど問題にはならないようですが根本的な解決作はないので心配ならver 3.0.3以降を使うしかないようです。
Ventriloコマンド一覧
以下の記述は Ventrilo Server 付属のドキュメント “ventrilo_srv.htm” の “Console/RCON commands” を日本語に意訳したものです。
auth < 0 | 1 | 2 >
認証方法を動的に変更します。
banadd <ip[/bits]> <reason>
IPアドレスやサブネットアドレスとバンした理由をつけてユーザを蹴ります。
bandel <ip[/bits]>
バンリストから削除を行います。
banlist
バンされたのIPと理由の一覧が表示されます。
clientkick <uid>
UID(User conection ID number)を使用してユーザを蹴ります。
clientstatus <uid>
UIDを利用してユーザの情報を表示します。
comment <text>
サーバーコメントを動的に変更します。
diag < 0 | 1 >
診断モードを動的に変更します。
filtertts < 0 | 1 >
TTS バインドのフィルタリングを有効にするかどうかを設定します。
filterwave < 0 | 1 >
Wave ファイルバインドのフィルタリングを有効にするかどうかを設定します。
help
使用可能なコンソールコマンドの一覧が表示されます。
kickall
サーバにいるすべてのユーザを切断します。
loggrep <lines> <search text>
ログファイルを検索します
maxclients <#>
動的に最大接続者数を変更します。
monitor < 0 | 1 >
This option is only valid when requested from a remote client using the “/rcon” option in the chat window. It instructs the server to send all status and log messages to the client that typed this command. The monitor command is turned on by setting the value to 1, and turned off by a value of 0. Prior to version 1.03 the monitor command was a toggle.
name
サーバ名とコメントを表示します。
password <newpassword>
サーバへのログインパスワードを変更します。
pingrate <1..10>
サーバがクライアントにping を行う間隔を設定します。秒単位です。
pingtrace < -2 | -1 | 0 | 1..n >
Introduced with version 1.07, allows for tracing the ping results as they are reported back from the clients. This option is only valid when issued by remote clients and does not work from the server’s console window.
-2 = Display the ping results for those clients that are in the same channel.
-1 = Display the ping results for all clients.
0 = Ping tracing disabled.
1..n = Display the ping results for a specific client (specifies the UID)
quit
サーバを強制終了させます。Windows サービスとして登録してあれば自動で再起動されます。
serverstatus
サーバの状態を表示します。
status
接続しているすべてのユーザのユーザ ID・チャンネル ID・ログイン名とIPアドレスの一覧を表示します。
timestamp < 0 | 1 >
バージョン 1.07で導入された機能でコンソールとリモートコンソール サーバメッセージ上でタイムスタンプを有効にするか無効にするかを設定します。
tts <text>
このオプションは Text-To-Speech メッセージをサーバにログインしたすべてのユーザに送ります。
version
サーバのバージョンを表示します。
Ventrilo 設定ファイル項目一覧
以下の記述は、Ventrilo Server 付属のドキュメント “ventrilo_srv.htm” の “INI File settings” を日本語に意訳したものです。
[Server]
Name=Server 1
サーバの名前です。
Phonetic=
サーバの読み方です。設定しておけばクライアント接続時に読み上げてくれます。
Comment=
サーバ名の右に表示されるコメントです。入力は任意
Port=3784
ポート番号です。特に変える必要はありません。
Auth=0
認証方法を設定します。
0 = 認証なし。誰でもサーバにアクセスできます。
1 = サーバアクセス時にパスワードが必要になります。Passwordで設定
2 = ユーザIDとパスワードが一致しないとアクセスできなくなります。
Duplicates=1
ログイン名の重複を許すかを設定します。
0 = 重複を許可しない。
1 = 重複を許可する。
AdminPassword=
管理パスワードを設定します。
Password=
サーバへのアクセス時のパスワードを設定します。Authの値を1に設定している場合に必要。
MaxClients=32
接続可能な最大ユーザ数を決定します。
SendBuffer=0
RecvBuffer=0
Diag=0
診断モードをONにするかを決定します。
0 = 診断モードOFF
1 = 診断モードON
LogonTimeout=5
CloseStd=1
FilterWave=0
FilterTTS=0
TimeStamp=0
PingRate=10
ExtraBuffer=0
ChanWidth=0
サブチャンネルをいくつまで作成できるかを決定します。0を設定すると、デフォルトの8が適用されます。
ChanDepth=0
サブチャンネルをいくつまでネストできるかを決定します。0を設定すると、デフォルトの8が適用されます。
ChanClients=0
1チャンネルあたりの接続可能ユーザを決定します。0を設定すると無制限になります。
DisableMaxClients=1
リモートから最大接続数を変更できるか決定します。
0 = 変更可能
1 = 変更不可
DisableQuit=1
リモートからサーバの終了コマンド(quit)を受け付けるかを決定します。
0 = 受け付ける
1 = 受け付けない
VoiceCodec=0
VoiceFormat=1
コマンドラインに
ventrilo_srv -?
と打つと一覧が出るのでそれを参考に設定。
私の環境で、出力された一覧
Codec | Format | |
0 | 0 | GSM 6.10 (8000 Hz, 16 bit) 1625 bytes/sec |
0 | 1 | GSM 6.10 (11025 Hz, 16 bit) 2210 bytes/sec |
0 | 2 | GSM 6.10 (22050 Hz, 16 bit) 4420 bytes/sec |
0 | 3 | GSM 6.10 (44100 Hz, 16 bit) 8905 bytes/sec |
1 | 0 | DSP Group TrueSpeech (8000 Hz, 16 bit) 1056 bytes/sec |
2 | 0 | Lernout & Hauspie (8000 Hz, 16 bit) 600 bytes/sec |
SilentLobby=0
ロビー(ルートチャンネル)でのチャットの可否を決定します。
0= チャット可能
1= チャット不可能
必要な帯域とか
ventriloの初期設定ならユーザの声の情報は1秒当たり 2210 byteです。つまりは約2KB/s で伝達されます。
下りに必要な回線速度
下りに必要な回線速度はユーザが喋っている声が大部分で1ユーザあたり2KB程度であるため最悪の場合でもユーザ人数 * 2KB/s 程度です。
上りに必要な回線速度
上り速度は計算が若干複雑になります。
仮に1ユーザが喋ったとしてそれを何人の人が聞いているか(同じチャンネルに何人の人がいるか)で必要な通信帯域が変わります。
例えば8人が同じチャンネルにいるとしてその中で一人のユーザが喋ればサーバはその声を受信し他の7人に声を送信しなければならないので
2KB/s * 7 人で14KB/s
仮に8人全員喋ってしまったら
14KB/s * 8人 で112KB/s
ですね。まぁ8人全員がしゃべっていると会話にならないので普通はそんな状況はあり得ません。
8人程度ならまだかわいいですが、16人が同じチャンネルにいたら1人の発言を15人が聞いていてると考え、それが16人分で、
15人 * 2KB/s * 16人 = 480KB/s
となります。
人数が2倍なので必要な通信帯域も112KB/s の2倍かと思うかもしれませんが、実際は4倍になっちゃってますね。
まぁ、実質的に16人が全員しゃべるなんてことはあり得ないのであくまで最悪の数値です。
実際は8人なら3人が平均的に喋っていると考えて
2 KB/s * 7人 * 3人 = 42KB/s
とかで考えてよいと思います。
16人程度が同時接続されるサーバ
現実的に16人程度が同時接続されるサーバを考えてみると
8人部屋2部屋として
42KB/s * 2部屋 で 84KB/s
84KB/s = 0.084 MB/s ≒ 0.672Mbps
最悪の場合は
112KB/s* 2部屋 で 224KB/s
224KB/s = 0.224 MB/s = 1.792Mbps
これくらいの速度ならそれなりの回線ならでるんじゃないでしょうか?
パブリックサーバ
最大で200人規模で接続を受けるようなパブリックサーバを考えて見ます。
8人部屋が25部屋だとして
25部屋*42KB/s で1050KB/s
1050KB / s = 1.050MB/s = 8.4Mbps
1部屋で1人しか喋ってないと楽観的に考えても
25部屋*14KB/s で350KB / s
350KB / s = 0.350MB/s = 2.7Mbps
最悪の場合(全ての部屋が8人部屋で全員がしゃべっている)で
112KB/s * 25 部屋= 2800KB /s
2800KB / s = 2.800MB/s = 22.4Mbps
ですね。
これで各サブチャンネルの人数制限を9人以上にして、そのすべてがしゃべっていたら・・・w
実際はすべての部屋で常に会話が行われているわけではないですし計算はもっと複雑になります。
サーバを公開する場合は、
サーバの最悪帯域 + 自分が使う帯域 = 回線の実効速度
くらいに人数なり帯域なりを調節しておくと良いかも知れませんね。
スポンサード リンク
コメント:1
- Attacker 10-04-22 (木) 10:50
-
こんにちは。Ventriloサーバ@Tricolor.Dip.Jp管理人のAttackerです。
メール等直接ご連絡できる手段が見つけられなかったためこちらに書かせていただきます。
今回、サーバ並びにサイトを閉鎖することにいたしました。そのため、リンクの消去をお願いできればと思います。
短い間でしたがご指導頂き、ありがとうございました。
トラックバック:0
- このエントリーのトラックバックURL
- https://www.arcenserv.info/memo/ventrilo_srv_212/trackback/
- Listed below are links to weblogs that reference
- Ventrilo Server ver 2.1.2 の建て方 from 死者のページ