BSパススルー CATVがひかり化

1月 10th, 2021


地デジBS分波器

CATVがひかり化

現在利用している、CATVが光になりました。
当初テレビだけに使用していたCATVですが、数年前にADSLの終了を機会に、インターネットもこれに加入し、電話も加入しました。
セットだと割安になるというプランです。
当時はインターネットは光ではなく、12Mbpsで3800円という価格でした。
それぞれにTVとのセット割引がありますので、まあまあの価格といえます。
今回は、TV会社の都合で光回線にしたので、価格はそのままで30Mbpsの速度になりました。
まあ、特に速くなったという感じはしませんが。

BSパススルーになる

これまでのCATVは、同軸ケーブルを使用していたため、BSの本来の高周波(1000MHz~1500MHz)を長距離送るのは難しかったようです。
BSの高周波を地デジ(470MHz~710MHz)以下の周波数に変換して送信していたのだと思います。
そのためCATVからのケーブルをTVに直接接続すると、地デジは見れますが、BSは見ることができませんでした。
BS放送を見るには、必ずCATV社の専用チューナーを通して見ることになり、テレビのリモコンと専用チューナーのリモコンの両方を操作しなければなりません。
ところが、光ケーブルになると、BSの周波数をそのままで送れるようになります。
これを「BSパススルー」といいます。
これにより、CATVからの電波はアンテナからの電波と同じ扱いになります。
つまりこのケーブルは分波器で地デジとBSに分けることができ、TVやビデオデッキに直接接続できます。
CATVの長年の課題だったBSの番組予約録画が、ようやくできるようになり、TVも一つのリモコンで済むようになりました。不要になったCATVのリモコンは、さっそく電池を抜いて邪魔にならない場所にしまいました。

CATVとIT

難視聴地域やアンテナが不要ということで、山間部やマンションで優位を誇ったCATVです。
それが光ケーブルになり、「BSパススルー」になり、インターネットもサービスできるようになりました。
ところが、光インターネットの方に「ひかりTV」というものがあることが分かりました。
つまり光インターネットを入れれば、CATVの代わりになってしまうということです。
さらに、netflixやアマゾンプライム等のネットTVが勢いを増しています。
当初CATVの営業は「接続できるTVは一つ」とか「専用ビデオ&チューナー」さらに「解約違約金」といった独占の優位を誇った商売をしていましたが、ここにきてかなりの曲がり角に立っているような気がします。
というか、生き残るのが難しい職種になるかもしれません。
今の時代は、企業の栄枯盛衰も激しいようです。いずれにしろ、いくら優位でも、独占やおごりはやめておいた方がいいでしょう。
現在は大手のIT企業が世界の富を独占しています。
しかし、CATVの優位さがなくなるように、IT企業の優位さもいつまでも続くものではないと思います。

Web – IIS7~10でURLの書き換えが可能に

7月 31st, 2020

URL Rewrite Module 2.1

server2016、Windows10のIIS10になると、今までの「URL Rewrite Module 2.0」がインストールできなくなります。
これは、2.0のバグで、IISのバージョン10を1.0と判断し9より下として処理するのが原因のようです。
そのため2.0をインストールするには、レジストリのIISのバージョンを9に変えてインストールし、その後10に戻すという方法があります。
IIS10におけるrewrite.dllのインストール

この問題を解消したのが「URL Rewrite Module 2.1」です。
URL Rewrite ダウンロード
下の方に日本語インストーラがあります。
Download URL Rewrite Module 2.1
Japanese: x86 installer / x64 installer

しかし「URL Rewrite Module 2.1」には別の問題があります。
URL Rewrite モジュール 2.1 にはVC ランタイムのインストールが必要になります
このためserver2016では問題ありませんが、Windows10ではエラーになることがあります。
「VisualC++のランタイム」をインストールすれば、問題は解決します。
それが面倒な場合は、上記の「URL Rewrite Module 2.0」のインストールを実行するのも一つの方法です。

URL Rewrite Module を使う

・それまでのURLの書き換え
Server2003 IIS6.0までは、URLを書き換えるため、ThunderMain URLRewriterというツールを使用していました。

・ワイルドカードのマッピング
このツールの設定方法は、まず、書き換えるディレクトリをアプリに変換し、binフォルダを作成し、そこにDLLファイルをいれる。
アプリの構成で、ワイルドカードのマッピングを追加して、ハンドラに.netのDLLを指定してやる。
ディレクトリ下にglobal.asaxを用意して、イベントハンドラを設定し、ThunderMain.URLRewriter関数を指定する。
さらにweb.configを用意して、その中に、変換のルールを正規表現で記述しておく。
以上でそのディレクトリに来たリクエストは、ルールに従って、指定したアプリにクエリ付きで変換されます。
各ディレクトリ毎に設定を行うのは、ツールでは、ディレクトリ(/)だけのURLを捕まえることができないからです。/のリクエストは、まずIISがこれを捕まえて、既定のドキュメント(例えばindex.aspx)に処理を渡してしまいます。つまり.netまで回ってこないのです。変な書き方をすると、思わないエラーが起きることになります。

IIS6.0のワイルドカードマッピング

・server2012で動作しない
今回サーバーを新しくすることになり、Server2012R2を導入しました。そして、IISでサイトを作成し、上記の方法で、DLLおよびweb.config等を設定しました。ところが、このIISにはアプリの構成やワイルドカードのマッピングがありません。よくよく見ると、ハンドラ マッピングというそれらしいアイコンがあったので、それをクリックしてみました。
そこにワイルドカード スクリプト マッピングというのがあったので、これで設定することにしました。画像で分かるように、ワイルドカード*がたくさんあります。一抹の不安を感じながら、URLを実行すると、案の定URLがないというエラーが出ました。その後*を捕まえるため、色々と試してみましたが、見事に全滅しました。ネットもかなり調べましたが、原因は分かりません。これがIISのバージョンアップなのだろうということで、あきらめることにしました。

IIS8.5のワイルドカードマッピング、うまく動作しない。

・Microsoft URL Rewrite Module 2.0
その後、「IIS URL Rewrite」で検索していると、なんだかIISでもURLの書き換えができるというような記事がいくつか見つかりました。さらに調べていくと、Microsoft URL Rewrite Moduleというツールに行き着きました。IIS7.0(Server2008)から提供されていたようです。サイトを構築する上で必要なことなので、今までも、何回か「IIS URL Rewrite」に関して情報がないかどうかは調べていましたが、気がつきませんでした。

・あまり使われていない
これだけ徹底的に調べて、ようやく見つかったということは、この機能はあまり使用されていないということなのでしょう。IIS(.net、Windows)ユーザーは、多分URLを書き換えることがほとんどないのでしょう。確かに実務本位の業務用システムにはURLの整形は全く必要ありません。
しかし、業務用アプリではなく、商用サイトとしてWEBを構築する場合、?から始まるクエリでページを表すのはあまり賢明ではありませんし、ともするとApacheユーザーからはバカにされます。page.aspx?p=1ではなく、1.htmlあるいは1.aspxとした方が分かりやすく、スマートになります。
たったこれだけのことですが、今までのIISでは簡単にはできませんでした。WordPressやPHPなどApache系のwebでは常識なのですが…。これでようやく、ApacheにIISが追いついたというか、webの仲間入りできたことになります。

・モジュールのインストール
URLを書き換えモジュールをダウンロードしてインストールします。IISマネージャに「URL 書き換え」のアイコンが表示されます。

「URL 書き換え」のアイコン

・Web.config
トップページのweb.cofigファイルの<system.webServer>ブロックに書き換えルールを書きます。
下記は、/aaa/10.aspxを/aaa/page.aspx?p=10に書き換える例です。

<system.webServer>
  …
  <rewrite>
    <rules>
      <rule name="1">
        <match url="^aaa/(.*).aspx$" />
        <action url="/aaa/page.aspx?p={R:1}" type="Rewrite" />
      </rule>
      <rule name="3">
        <match url="^abc/(.*)/(.*).html$" />
        <action url="/a/b/c.aspx?d={R:1}&amp;n={R:2}" 
          type="Rewrite" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

ルールは正規表現で書きます。
先頭の^と末尾の$を入れておくことが必要です。これがないと、/bbbaaa/や1.aspx/もマッチしてしまいます。
()でくくると変数扱いになります。変数呼び出しは正規表現では$1、$2ですが、ここでは{R:1}、{R:2}…になります。変数というより、変数の配列と考えた方がいいでしょう。ちなみに{R:0}はURL全体になるようです。試してみてください。
&は&amp;と書きます。web.configファイルはXMLファイルのため、<や&はそのまま書くとエラーになります。
ルールを書いたweb.cofigを保存します。間違いがなければ、即「URL書き換え」が実行されます。

・GUI
URL書き換えルールは、IISのGUI(URL書き換え)でもできます。MSのテクニカルサイトにはこちらの記述方法が載っています。
上記のようにWeb.configを編集すると、それがGUIでも表示されます。書き方がまずいとXMLエラーになり、内容が表示されない場合がありますので注意が必要です。正式な記述を知りたい場合は、GUIを使用した方がいいでしょう。
結果はWeb.configに反映されます。


GUIでルールを記述、編集する

「URL 書き換え」はApache並みの複雑なURL書き換え、リダイレクト、ヘッダー等の分析もできるようになっているようです。詳しくはMSのテクニカルサイトを参照してください。