Red5を追え! GitHubからRed5をインストールする
「レッド・オクトーヴァーを追え!」という映画がありましたが、今回は「Red5を追え!」というお話です。 昨年までRed5のコミュニティ公式サイトは http://www.red5.org/、開発サイトはgoogle codeにあって、ソフトウェアもこれらのサイトからダウンロードするようになっていました。ネットで紹介されているインストール事例をみても、ほとんどが旧サイトに関するものです。 「Red5…やめちゃったのかなぁ…」と暗くなっている方もおられるかもと思い、余計なご紹介です。
Red5のソースコードは、現在、GitHub(https://github.com/Red5)にてGitを使って管理されています。
Red5をインストールしよう
以下の手順説明は、すべての作業をRed5をインストールするLinuxサーバ(Vers.1.7以上のJDKがインストール済み、JAVA_HOME, PATH等の環境変数も設定済み)上で、管理者として行っていることを前提にしています。JVM, Git, Mavenの使い方その他については、他の情報を参考にしてください。
red5-serverのソースパッケージは、以下のようにgitツールのcloneコマンドを使ってgithubから取得します。
git clone https://github.com/Red5/red5-server.git
git cloneコマンドによりダウンロード・作成されたフォルダ「red5-server」に入ります。ビルドの仕方はフォルダーにあるREADME.md(テキストファイル)に記載されていますが、要約すると、当該フォルダーで以下のようにパラメータ、コマンドを付加してMavenを実行することにより、red5-server-1.0.5-RELEASE-server.tar.gzが生成され、これを展開して適当なフォルダに配置することにより、インストールはめでたく完了という簡単なものです。
mvn -Dmaven.test.skip=true clean package -P assemble
Mavenのインストール
red5-serverをビルドするのにはMavenが必要です。もし、Mavenがインストールされていない場合にはMavenのTarボールをApacheまたはそのミラーサイトからダウンロード、展開、配置します。以下の例では、北陸先端科学技術大学院大学(JIST)が運営されているApacheのミラーサイトからVers.3.3.1をダウンロードしています。
wget http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.tar.gz
Kaltura Comunity Editionによるサンプル動画配信
下のサンプル動画は、Kaltura Comunity Editionを使用して当社のサーバから配信しています。Kalturaは、カスタマイズしたRed5サーバを配信サーバとして取り込んで、以下の動画ファイルをストリーミング配信するのに必要な作業ツールを一貫して提供します。
- コンテンツのアップロード・フォーマット変換等
- プレイヤーの記述タグ作成
- ストリーム配信
Apache2で国別許可・遮断(GeoIP)
IPアドレスから位地情報を割り出すGeoIP
GeoIP(GeoIP2)は、MaxMind社(本社:米国マサチューセッツ州ウォルサム)が提供するIPアドレスから位地情報を割り出す仕組みです(Software+データベース情報)。GeoIPには、結果として得られるデータの粒度の違い(大陸>国>都市>郵便番号 etc.)によっていろいろな有償サービスが提供されています。
MaxMind社のホームページ(日本語)
オープンソース製品 GeoLite
MaxMind社はGeoIP2のオープンソース版としてGeoLiteという名称で、ソフトウェアと無償データベースを無償で提供しています。GeoLiteのデータベースは以下のものが提供されています。それぞれ、CSVとバイナリの二つのフォーマットが利用可能です。
GeoLiteCountry: IPアドレス から国を特定
GeoLiteCity: IPアドレスから都市を特定
Apache Webサーバでの利用 mod_geoip2
「アクセス元のIPアドレスから、どこの国かを割り出してWEBサーバの振る舞いを切り替えたい」というような用途には、GeoLiteでも十分に役立ってくれます。実際、私たちは、私たちが管理している多数の企業や公共機関のサイトで昨年特定の国国々からの執拗な攻撃が集中した際に、GeoLiteとGeoIPをApache Webサーバで利用するためのmod_geoip2(MaxMind社のオープンソース製品)を使って対応し、高い効果をあげることができました。
参考までに以下は、Apache Web サーバの設定の概要です。Apacheの設定になれている方は使用感がつかめると思います。
mod_geoip2のモジュールのロード
Apache Webサーバでお約束のモジュールのロード設定です。
LoadModule geoip_module modules/mod_geoip.so
mod_geoip2に関する設定
この設定の肝は、
- SetEnvIfを使って、指定された国からのアクセスであれば、”TrustedCounty”という名前の環境変数を設定する
- 環境変数TrustedCountryの有無をもとにアクセスを許可/遮断する
という手順です。GeoIPScanProxyHeaderをOnにすると、プロキシがリクエストにヘッダーを付けて元のアドレスを示していれば、そのアドレスが判定されます(そんな人たちがヘッダーに情報残すような串使うかなぁ?)。
GeoIPEnable On ←GeoIP機能オン
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat← GeoLiteデータベースデータを読み込む
GeoIPScanProxyHeaders Off ← プロキシ解析モードのOn/Off
SetEnvIf GEOIP_COUNTRY_CODE JP TrustedCountry ← 国コードがJPであれば環境変数TrustedCountryをセット
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168 161.69.197.64/26
Allow from env=TrustedCountry ← 「TrustedCountry」がセットされていたらアクセス許可
</Location>
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat← GeoLiteデータベースデータを読み込む
GeoIPScanProxyHeaders Off ← プロキシ解析モードのOn/Off
SetEnvIf GEOIP_COUNTRY_CODE JP TrustedCountry ← 国コードがJPであれば環境変数TrustedCountryをセット
<Location />
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168 161.69.197.64/26
Allow from env=TrustedCountry ← 「TrustedCountry」がセットされていたらアクセス許可
</Location>
この例では、鎖国してしまっていますが(あくまで例です)、以下のように特定の国からのアクセスを禁止することも可能です。
...
SetEnvIf GEOIP_COUNTRY_CODE XX HostileCountry
SetEnvIf GEOIP_COUNTRY_CDOE YY HostileCountry
<Location />
Order allow,deny
Allow from all
Deny from env=HostileCountry ← 「HostileCountry」がセットされていたらアクセス禁止
</Location>
SetEnvIf GEOIP_COUNTRY_CODE XX HostileCountry
SetEnvIf GEOIP_COUNTRY_CDOE YY HostileCountry
<Location />
Order allow,deny
Allow from all
Deny from env=HostileCountry ← 「HostileCountry」がセットされていたらアクセス禁止
</Location>
特定の環境変数の有無を条件に設定できるApacheの制御文であれば、アクセスの許可/遮断以外にもいろいろな使い方できますね。 有償版のデータベースが提供してくれる情報は、さらに粒度が細かいですので、アプリケーションソフトなどにGeoIPの情報の参照を組み込むと効果的な商業ツールなども作れそうです。
注意:
一部の外資系企業で、グローバルにネットワークを設定管理しているところですと、外資系のキャリアの日本支社からIPアドレスを得ている場合があります。この場合、物理的に日本国内であっても、IPアドレスの判定結果の地理情報は海外となる場合がありますので、特定のアクセスもとに対しては例外処理が必要となる場合があります。
貴社のApache WebサーバにGeoLiteの導入をご希望ですか?
現用のApache WebサーバにGeoLiteの導入をご希望のお客様。最短のダウンタイムで貴社現用のApache WebサーバにGeoLiteを導入させていただきます。詳しくはこちらからお問い合わせください。
ドメイン名ハイジャックについて (11/5 JPRS緊急通報)
ここのところDNSサーバの脆弱性が頻繁に報告されます。外部の不特定の相手にさらさなければいけないネットワークサービスでしかもUDPとなれば、攻撃者にとってこんな美味しいターゲットは他にないでしょう。昨日JPRSが緊急通報したBIND9その他複数のDNSソフトのデリゲーションがらみの脆弱性など、世界のDNSツリー全体が使いものにならなくなる可能性があります(でも、そうなると、攻撃してる人たちも不便だとおもいますが)。 続きを読む
Ovirtによるプライベート・クラウド
パブリッククラウドとプライベートクラウドの仮想化プラットフォームは規模やサーバ装置のグレード等を除けば、なんらかわることはありません。パブリック・クラウドを一社で閉鎖的に独り占めすればプライベートクラウドに、また、プライベートクラウドを一般顧客に貸し出せばパブリッククラウドになります。 続きを読む
「プライベート・クラウド」ってなんだ?
あまりいろいろなものが「クラウド」を名乗のっているので、ときどき「クラウドってなんなの?」と考えてしまいます。そんなわけで、「プライベート・クラウド」についてお話する前に、まずこの「クラウドってなんなの?」から。 続きを読む
WEBサイトのリニューアル
私たちのようなインターネットの裏方の仕事をしていると、自社のホームページはしばしば「生体実験」の道具にされます。セキュリティ製品のテストの人柱とか…。それがおわると忙しさにかまけていつの間にかだれも更新していないなどという恥ずかしいことがおきます。そのうち、新しい仕事を始めたりすると、また、反省して更新。こんなことの繰り返しですね。 続きを読む
配信サーバなしで簡単動画配信
RTMPやHLSに対応したストリーミングサーバを使わなくても、ホームページに動画コンテンツを導入することはできます。HTML5に対応したブラウザーなら、<VIDEO>タグを使えば、<IMG>タグで静止画像を表示するような手軽さで動画をページに挿入・描画することができます。VIDEO.JSは、HTML5に対応していないブラウザにもこのように気軽な動画配信をサポートするプレイヤーです。動画配信がらみのオープンソースをうたった製品は、商用製品の購入を動機付けるような機能限定無料版的なもので、ライセンスも曖昧なもの、実際、企業のサイトで使うにはライセンス条件があわないものがそうとうあります。VIDEO.JSはこれの中にあって、GPLライセンスベースのしっかりしたオープンソース製品です。 続きを読む
LVSによるLinuxロードバランサと市販製品を比較する
LVSによるLinuxロードバランサはOSIモデル第4層(トランスポート層)の情報でスイッチングを行うL4スイッチです。市販製品もL4スイッチをベースとしたものが主流ですが、多くの製品でL4スイッチの機能に加えて第7層(アプリケーション層)の情報を取り扱う機能がオプションとして提供されています。LVSと市販製品の比較で実用上注目しなければならない相違点です。実用上、この違いが意味のある差異となるのかどうか検討してみましょう。