アーカイブ: 2009年3月

Windows Media Serviceの制御 on VBScript

パーマリンク 2009/03/31 23:31:41 著者: kumaold メール
カテゴリ: 仕事, サーバ関係, プログラミング, WSH/VBScript

前回はWindows Media Serviceサービス単位での制御まではしましたが、公開ポイントごとの操作などができないと運用上実用的ではありません。

もちろん標準ではGUI画面からしか制御は無理で、コマンドラインから制御するためのコマンドなども一切ありません。


日本語の解説やドキュメントも一切なく、どうも色々調べてみる限りでは「APIだけは提供してやるんでC#, C++, VBで自分で作れ」のようです。

そこで一番取り掛かりやすいVBScriptにて制御スクリプトを作成しました。


まずは、「Windows Server 2003 SP1 Platform SDK(Windows Media サービス 9 シリーズ SDK)」をインストール。(Windows Server 2008でも同じ)

参考になるのはProgramming Reference (Visual Basic .NET)のみ。

これ以外に資料があるわけでもなく、しかもVBと若干オブジェクト名・メソッド名が違っていたりしたので苦労しました。


まだ公開まではできない状態なので主なところだけ抜粋。

'WMSのCOMオブジェクトを作成
Set Server = CreateObject("WMSServer.Server")

'公開ポイントの数取得(これでForループにする)
PubPointCnt = Server.PublishingPoints.Count

'i番目の公開ポイントを参照
Set PubPoint = Server.PublishingPoints.Item(i)

'公開ポイントを開始する
PubPoint.Start()

'公開ポイントを停止する
PubPoint.Stop()

'公開ポイントのソースのパスを指定
PubPoint.Path = "http://example.com/publishing_point"

'公開ポイントの現在の再生者数を取得
Player = PubPoint.Players.Count

この辺をコマンドラインから引数を渡して操作できるようにすることで、PHPからでもsystem()やexec()などで操作・データ取得ができるわけです。

一応これで汎用性の高い制御用スクリプトはできたのであとは組み込むだけです。
 

[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)
(株)アンク
技術評論社 2006-05-30
おすすめ平均

同一ネットワークで複数ISPの共有

パーマリンク 2009/03/28 23:58:23 著者: kumaold メール
カテゴリ: 自宅鯖, ネットワーク

先週に光プレミアムが開通してから、LANの未解決事項がひとつ残っていました。


光プレミアムでは最大5セッションまで同時にプロバイダに接続できます。

そこで、CTU下にルータを2台で各ISPにPPPoE接続してLAN側のIPアドレスを同一セグメント(192.168.1.*)にすれば、既存のネットワークはそのままでプロバイダの使い分けができるというわけです。

サーバとクライアントPCを別ISPで使いたい、しかしローカルでもアクセスできるようにしたい、というときにはこの方法が便利です。


しかしながら実際にこの方法でやってみたという例がほとんどなく、理論上は繋がるはずなのにうまくいかないといわけで今日までずっと悩んでいました。

(普通はクライアントIPごとにルーティングが設定できる上級品ルータを使う)

 

謎のパケットがループ

・・・というのも、上の図で(1)~(3)の3本のLANケーブルのうち3本とも繋いでしまうとまったく接続できない状態になってしまうんです。

どれか1本を抜けば、それを除いた部分ではすべてうまく接続できる状態だったので、仕方なく(3)のケーブルを外してLAN内分断状態で放置していました。


先週の時点では、3本とも繋ぐとリンクランプが激しく点滅して最終的にはルータなどを再起動しないとLANや無線もダウンしてしまうことを確認しました。

おそらくパケットがループしている、というのは間違いないようです。

しかし理論上はそんなことが起こるわけないのに。
ルータを通している以上、基本的には宛先不明パケットはルータで破棄されます。

さらに各ルータ自身のIPアドレスを別セグメント(192.168.0.*, 192.168.1.*)にしても同じ症状になるなど完全に意味不明な状態でした。

これはIPv4レベルの話はないことは理解できました。

解決編

もう一度ルータ2の設定を一通りチェックしてみると、かなり分かりにくい場所の「IPv6ブリッジ」(IPv6パススルー)の項目がありました。

単体でPPPoE接続する分には問題なかったので放置していましたが、デフォルトで「有効」になっていたので試しに「無効」に切り替えてみました。


すると、今まではケーブルを3本とも接続するとWAN/LANともダウンしてしまう症状も消えて、ルータ1だけは正常に接続できるようになりました。

しかし相変わらずルータ2はインターネット接続だけはできません。

流れ的に同様のcorega製ルータであることから、今度はルータ1にもIPv6ブリッジの項目を見つけ、無効に設定してみました。

これで再起動をかけてみると両ルータとも6時間経った今でもインターネット接続を維持でき、LAN側ネットワークも無事に共存できているようです。

NTT側のネットワークが原因?

LAN側からIPv6のパケットが流れることは考えづらいです。

フレッツ光プレミアム自体はNTTの地域網はIPv6で接続され、マルチキャスト通信などのパケットもやり取りされています。

それがIPv6ブリッジになるとWAN側からのIPv6パケットが通過し、何らかの原因でルータ1-ルータ2間でパケットがループしてしまうんだろうと推測できます。


結論:セキュリティ的にも、フレッツのIPv6を使用したサービスなどを利用する際以外には極力IPv6ブリッジを無効にしておきましょう。
(標準でONにしてあるcoregaのルータもどうかと思うが)

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

[Windows Server]サービスへのアクセス権限

パーマリンク 2009/03/26 23:53:15 著者: kumaold メール
カテゴリ: サーバ関係

動画配信サーバの設定準備中に、外部からWeb画面を通してWindows Media Serviceを操作する必要が出てきました。

本当はVBScript(WSH)を使ってスクリプトを書くべきですが、とりあえずそこはまた後日ということでPHPからサービスの制御で済ませることにしました。


が、そこでこんなに苦労するとは・・・

例えば、コマンドラインからサービスを開始・終了するにはscコマンドです。

sc start サービス名(WMServer)      # サービスの開始
sc stop サービス名(WMServer)      # サービスの停止


PHPからこれをexec()とかsystem()とかで実行すればいいはずですが、普通にやるとどうやってもこうなってしまいます。

[SC] OpenService FAILED 5:

アクセスが拒否されました。

もちろん、この辺は全部試した上での話ですよ。

  • UAC(ユーザーアカウント制御)の無効化
  • IISの実行ユーザをPower Usersグループのメンバに
  • cmd.exeへのアクセス権限を付与
  • sc.exeへのアクセス権限付与
  • WMServer.exeへのアクセス権限付与


しばらく格闘しても結局どうしようもなかったので途方に暮れていると、こんな情報が出てきました。

Windows OSでは、セキュリティを確保するために、システム内部に存在する各種のオブジェクト(ファイルだけでなく、サービスやプロセス、パイプといった、動的に生成されるものも含む)に対して、アクセス権を設定し、権限を持つユーザーやグループからのアクセスを許可し、それ以外からのアクセスを禁止するなどしている。

@IT - セキュリティ設定を記述するSDDL文字列とは?』より


まさに探し求めていた情報です。

まずサービスについての現在のセキュリティ記述子を表示するには、「sc sdshow サービス名(WMServer)」と打ち込みます。

すると、なんか暗号めいたACLの設定文字列が表示されます。
意味は解説しきれないので上のリンク先のページを参考に。

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWLOCRRC;;;IU)
(A;;CCLCSWLOCRRC;;;SU)
S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

現状ではIISの実行ユーザにはサービスの操作権限がないようです。

whoamiコマンドをPHPから実行してみると、ユーザはNetwork Service(略称NS)であることが分かるので、これに実行権限を付加します。

ACLの設定反映には、「sc sdset サービス名(WMServer)」コマンドに続けて、今回は以下の新しい設定を流し込みます。

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)
(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWLOCRRC;;;IU)
(A;;CCLCSWLOCRRC;;;SU)
(A;;GX;;;NS)  ←今回追加したアクセス権限(権限はRPWPDTCRRC相当)
S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)


これにてPHP側からの制御で、サービスの開始・終了ができるようになりました。

セキュリティに厳格すぎるというのもこういう時には面倒になるなぁ。

ひと目でわかるMicrosoft Windows Server 2008 (マイクロソフト公式解説書) (マイクロソフト公式解説書)ひと目でわかるMicrosoft Windows Server 2008 (マイクロソフト公式解説書) (マイクロソフト公式解説書)
天野 司

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

東尋坊に行ってきた(北陸旅行)

パーマリンク 2009/03/22 22:20:14 著者: kumaold メール
カテゴリ: 旅行

3連休だったので、21~22日の1泊で北陸旅行に出かけてきました。

といっても定額給付金の先取りのようなもので、中津川市だと4月中という半端な時期になりそうなので暇な今のうちに出掛けることにしました。


予算はもちろん土産代も全部込みでの2万円。

白川口~米原~金沢2,300円相当
金沢~高山~白川口2,300円相当
東尋坊(得)2日フリー乗車券1,000円
富山まちなか・岩瀬フリーきっぷ800円
宿泊費(1泊2食付)5,040円


JR芦原温泉駅より乗り換え、バスで40分乗った先が東尋坊。

当日は天気もよく、見晴らしも文句なしの状況です。

見る限りの断崖絶壁で、まったく柵のようなものもなく好きに移動できるので、誤って転落してしまう人がいるんじゃないかと。


2日目は富山を中心に散策。

天候は日本海を進む低気圧の影響で、暴風警報が出るなど台風並みの大荒れの天気になりました。

富山といえば富山港線を最新鋭のLRTに改良した富山ライトレールが有名ですが、まだ乗ったことがなかったので試乗してきました。

バス以上の加速度のよさと電車以下の低騒音で非常に快適な車内です。


お昼は越中富山海鮮市場にて海鮮丼(特上)をいただきました。

やはり海に近いところで取れた刺身はうまい!


帰路に着こうと富山駅に戻ってみると、高山本線が強風の影響で運転見合わせ。

すべての普通列車が越中八尾止まりとなり、そこから先の運転の目処が立っていないという状況でした。(特急ひだは猪谷以北部分運休)

もちろん富山1339発(868D)の列車も猪谷行から越中八尾止まりです。


富山駅では高山方面に向かう人はこの列車に乗るなと案内がありましたが、駅で待たされるのも暇なのでとりあえず越中八尾まで向かうことにしました。


しかし出向いてみると、振替輸送でもなく代行バスでもなく「代行タクシー」を駅の方が手配してくれたようでそれで猪谷まで行って接続列車に乗れました。

おそらくこれは、事情を知らずに無人駅から乗り込んだ人用の対応なのかな、と思います。タクシー代9,900円はもちろんJR西日本持ち。

乗客3人だからこそできる荒業でもJR西日本には頭が下がる思いです。


まあそんなことで、なんとか無事に帰宅できました。

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

念願の光ファイバー開通

パーマリンク 2009/03/19 23:05:40 著者: kumaold メール
カテゴリ: 自宅鯖, ネットワーク

本日、待ちに待ったNTTのフレッツ光プレミアムの開通ということで、午後から会社を早退して工事の立会いをしました。

工事はシーキューブの方が3人で来ました。どうやら話を伺うと1班で1日に3~4件ほど工事をしているとのことです。


1時半から工事を始めて、1時間ちょっとの間に休止扱いにするメタル線(電話回線)の撤去から光ファイバーケーブルの引込・設置まで完了しました。


まあ開通工事自体はたいしたことも特になく終了したわけですが、色々と特殊な環境下であるためその後10時間ほど格闘することとなりました。


ネットワーク環境

このようにルータ2台で各PPPoEで別プロバイダで利用しています。

[Internet]
 ┃光ファイバーケーブル
[ONU]
 │
[CTU]PPPoEブリッジ 192.168.24.0/24
 ├[VoIPアダプタ]─[電話]
 ├[無線ルータ1:CG-WLBARGN] 192.168.1.0/24 ISP:BB.excite
 │├[HDDレコーダ]
 │└[クライアントPC群3台]
 └[無線ルータ2:CG-WLBARAG2] 192.168.1.0/24 ISP:i-revo
  ├[サーバPC群3台]
  └[クライアントPC群3台]


気づいたことなどメモ書き

●短いLANケーブルを多めに用意すべき
ONU-CTU、CTU-VoIPアダプタ、CTU-ルータ1、CTU-ルータ2間で各20~30センチほどのケーブルを用意しないと配線が大変なことになる。
●はじめにCTUをPPPoEブリッジに
CTUに接続設定を保存した場合、クライアントIPごとのISP振り分けなどの機能もあるわけないので、PPPoE機能をONにしておく
●MTUは1438に
フレッツ光の場合はNTT網側が特殊なので1438か自動設定にしておかないと正常につながらない場合がある
●CTUの設定はLANケーブル直結で
CTUの設定は付属のCD-ROMに入っているツールは一切使わずに、CTUとPCをLANケーブルで直結して「https://ctu.fletsnet.com/」にアクセスする


そのほか色々と設定変更に苦労して、なんとか自宅鯖(メール、Web)に外部からドメインで接続できるまでになりました。


さて、お楽しみの速度測定。

デフォルトのWindows XPの設定だと、どんなに回線が早くても理論上25Mbps付近で頭打ちになってしまいます。

様々なチューニングと最良の設備を使用した結果、驚異的な速度が出ました。
測定には定評のある「Radish Network Speed Testing」を使用。


マルチセッションでの測定の結果、上下とも90Mbps前後という理論値にかなり近いデータセンター並の回線速度が確保できました。

シングルセッションでの測定でもDown:90Mbps/Up:56Mbpsほど出ます。

まだ開通から4日目ということもあり、ユーザが少ないこと、最大32分岐しても周りのユーザ数が少ないなど環境がよかったのかと思います。


あとは、LAN1とLAN2を問題なく接続できればいいんだが・・・

LANのスループット測定

パーマリンク 2009/03/12 23:14:19 著者: kumaold メール
カテゴリ: 自宅鯖, ネットワーク

フレッツ光プレミアムの開通も来週に控え、事前準備として自宅内LANのボトルネック発見のためにスループット測定をしてみました。


HDD等の速度に依存しないスループット測定ソフトとして「Netperf」があります。

ダウンロード:Windows実行ファイル (netserver-a4.exe, netperf-a4.exe)

これらをダウンロードして、面倒なので「netserver」「netperf」にリネームします。
(ついでにC:\cmdなど任意の場所にパスを通してまとめておくと便利)

まず、測定のサーバ側となる方でDOS窓を立ち上げて、「netserver」を実行。

C:\cmd>netserver
Starting netserver at port 12865


次に、クライアント側となる方ではDOS窓で「netperf -H Hostname」を実行

C:\cmd>netperf -H 192.168.1.12
TCP STREAM TEST to 192.168.1.12
Recv   Send    Send
Socket Socket  Message  Elapsed
Size   Size    Size     Time     Throughput
bytes  bytes   bytes    secs.    10^6bits/sec

  8192   8192   8192    10.00     275.24


上は自宅内のメインマシンとファイルサーバ間での測定結果。
1000BASE-T接続で間にHUBを介してあるだけなのにあんまり早くないなぁ。

BUFFALOのLSW-GT-5NSが5年も前の品なんでそろそろ買い替えを検討中。

【3営業日以内発送在庫】【送料無料】[バッファロー] Giga対応 5ポート スイッチングハブ(LSW3-GT-5EP/WH)

イー・モバイルの基地局建設中

パーマリンク 2009/03/05 23:49:53 著者: kumaold メール
カテゴリ: デジタルモノ, ネットワーク

2週間ほど前に、第二体育広場の近くで何か鉄塔の土台用の掘削作業中とのタレコミを得て、数日前に調査に出向いてきました。


その詳細な場所はこちら。周辺地図はふるさと地理情報センターにて。


地理的には標高600mで見通しもいいので、うまくいけばエリアマップ外でも加子母中で通信可能かもしれません。

こんな場所だからこそ、地権者の許可と周辺住民の同意も得やすかったのか、いきなりこんな話が舞い込んできたのかなと思います。


どんな基地局になるかというと、先月見た際には4本の土台基礎を地下に埋めていたので、高さ40mのタワー型の立派な鉄塔ができそうな予感がします。

完成予想図はPHS&携帯研究所 基地局を巡るヲタのブログを参考に。


現場近くの掲示板の貼ってあった予定表によると、工事はこんな日程らしい。

3月16日~ 無線機工事
3月23日~ CTC(中部テレコミュニケーションズ)開通工事
3月25日~ ONU試験
4月01日~ サービス開始

本当にあとわずか10日ばかりで形だけは完成するとか、工事早いなぁ。

自宅から数百メートルなんで暇があったらまた見てこよ。

 

CakePHPでパラメータにスラッシュが使えない

パーマリンク 2009/03/04 23:45:27 著者: kumaold メール
カテゴリ: 仕事, プログラミング, PHP, CakePHP

アクセス解析の製作中、CakePHPでURLにスラッシュ(/)を含むパラメータの取り扱いに苦労したので書いておきます。


アクセス解析に限らず、URLを扱うような場面ではURLのパラメータにスラッシュを使いたいということがあると思います。

もちろん、urlencode()で%2Fにしてから渡すのは当たり前ですが、それでもCakePHPのコントローラの引数で普通に受け取ることができません。


以下のようなmod_rewriteの問題もありますが、とりあえずそれは抜きにして。

mod_rewriteの「%2F」問題の解決法(ElectronicBrain is eating BreakFast)


どうやら内部処理で初めにurldecode()をしているのか、%2Fもデコードされて通常のスラッシュ(/)と同等となり、区切りがずれてしまうのが原因のようです。

URLのパラメータとしてスラッシュを渡すと処理ができない(cakephp.jp)


通常のGET(?url=....&....)で渡せば解決するのは分かりきったことですが、他に3つほどパラメータを渡す関係でURLが長くなるのも嫌です。

方法としては、$this->params['url']['url']を毎度正規表現で分割する手もありですが、面倒なので極力やりたくありません。

・・・・・・・

そこで仕方なく、スラッシュを置換する方法をとることにしました。

 置換前:www.example.com/hoge/path/
  ↓
 置換後:www.example.com__hoge__path__


別にアンダーバーでなくてもよかったんですが、一番見た目がすっきりするので。

これなら、ファイル名にまず2連アンダーバー(__)が使われることもなく、_で始まるか終わるファイル/ディレクトリ名もまずないので大丈夫かと。


これをビューにエンコード用関数、コンポーネントにデコード用関数を実装することで解決できました。


NO IMAGEスラッシュ自伝 (仮) (単行本)
シンコーミュージック 2009-03-31

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2009年3月
 << < 現在> >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

検索

XMLフィード

16ブログ     blogging tool