「ブリッジ接続」の使い方

ノートPCに入れたCentOS6.3での無線LANアダプタの利用はあきらめて、とりあえずケーブルでWindows7パソコンにつないで使っていたが、やはりインターネットにつなげないと困る。

じゃあWindows7でルーティングしてみようか・・・でもNATとかしないといけない・・・

と、「ブリッジ接続」を思い出した。

これはたしかXPから追加された機能であるが、使い方がよくわからなかったのだが、まさに私がいま利用しているような場合にぴったりの機能だった。

「ネットワークと共有センター」→「アダプタの設定の変更」で、インターネットに接続しているアダプタと、もう一個のアダプタを両方選択してから右クリックし、「ブリッジ接続」を選択する。

そして私の場合でいえば、ノートPCのインタフェースの設定を、インターネットに接続しているネットワークのアドレスにし、ゲートウェイはWindowsパソコンに設定しているのと同じものをしていすればよい。

こうすると、二つのインタフェースが一つのインターネット接続を共有できる。

こうやって使うのか・・・。




CentOSで無線LAN

CentOS6.3をdellのノートPCにインストールした。
CGIの試験などをするために。
そのノートPCは普段無線LANで使っているのだが、
CentOSで無線LANを使ったことがないのでできるだろうかと不安になった。
WEBで調べると、使えるようだったがちょっと面倒なようだった。
なんとか、make, make install, insmodまでできて、
iwlist ra0 scan をしてAPの情報も見えた。
ところが、どうしてもDHCPでアドレスが取れない。
固定IPを設定しても、ゲートウェイと通信できない。
SSID、暗号方式、パスワード等が間違っているような動きに見えるのだが、
何度も確認してみたがどうしても接続できない・・・・。

無線LANアダプタは BuffaloのWLI-UC-GNM
lsusbをすると、Ralink RT8070 となっている。
ドライバは http://www.ralinktech.com からダウンロードできる。
無線LANルータは Emobileの GL01Pでデフォルト設定のまま
暗号化方式は WPA/WPA2
WPA暗号化方式は TKIP+AES
これがちょっと気になるんだけど、PC側はWPA2、TKIPで設定してるけどいいんだよね?
iPhoneはSSIDとパスワード(WPA key)しかいらない。
Windows7は「セキュリティの種類:WPA-パーソナル」「暗号化の種類:TKIP」、「ネットワークセキュリティ」にWPA Keyを設定してつながっている。




ブリッジとスイッチの本質的な違い


Ethernet, TCP/IPについて勉強し始めた頃、「ブリッジとスイッチ(L2スイッチ、スイッチングハブ)の違いは何か?」という疑問を抱いたことのある人は多いと思う。

よく言われることは、「スイッチはマルチポートである」「スイッチはHW処理である」「スイッチは転送方式が異なる(カットアンドスルー等)」などであるが、私はそれらの違いのどれもブリッジとスイッチの本質的な違いを説明しているようには思えなかった。

しかし、私はようやく本質的な違いを理解した。それはすでに挙げたことであるが「マルチポートであること」である。マルチポートであるというのは単にポート数が増えただけで本質的ではないように思えるが、そうではないのだ。

ブリッジもスイッチもアドレス学習機能を持ち、その原理は同じである。フレームを受信するとその送信元MACアドレスは受信したポートに接続されていると認識し記憶する。その後、記憶してあるMACアドレス宛のフレームを受信したら、そのポートへ送信する。記憶していない未学習のMACアドレス宛のフレームを受信した場合は、受信ポート以外のポートから、そのフレームをコピーして送出する。

このアドレス学習機能の目的は何だろうか?それは「不要なフレーム転送の抑制」である。「あるMACアドレスがどのポートに所属しているかの区別」ではない。確かにこの学習においてアドレスとポートの関連付けはおこなわれるのであるが、それは目的ではなく手段である。

アドレス学習機能の目的が「不要な転送の抑制」であることがわかると、どうしてスイッチがスイッチと呼ばれるようになったかがわかる。スイッチとは初期は単なるマルチポートブリッジでしかなかった。アドレス未学習のときにフレームを受信したポート以外から転送することはポート数が2個だろうとそれより多かろうと同じである。

しかし、ポート数が2個であれば、ブリッジのすることはそのフレームを受信ポートでないひとつのポートから送出するか否かを判断することでしかないが、マルチポートつまり3個以上になると、「受信ポートでない複数のポートのどこから送出するか」を判断することになる。

ブリッジというと、二つの場所を「接続する」というイメージがある。実際に接続することにはなるのだが、そもそもブリッジが登場した目的はノード数の増加とともに増大するコリジョンを削減するためであった。ひとつの大きなコリジョンドメインを分割する目的で考え出された装置なのである。

ブリッジが3つ以上の場所を接続することになっても、それは同じであるが、接続する場所が3つ以上になったことにより、それまでは「出すか出さないか」でしかなかった判断が「どこに出すか」という判断になった。それを判断するための原理は2ポートの時と同じでも機能したのであるが、単なる不要な転送の抑制だけが目的であったのに加え、「どのポートへ転送するか」という目的も兼ねるようになったのである。これは2ポートの場合にはなかったことである。

HW処理になったり、転送方式が改良されたりしたのも、この新しい目的の為である。だからブリッジとスイッチの一番本質的な違いはマルチポートであることである。

javascriptによる画像ビューア

javascriptがアツい。 javascriptのコンパクトな画像ビューアがあったので、 cgiの中に入れることにした。 ヒアドキュメントを使ったら、文字化けしている。 それは、変数展開によるものであった。

print <<"END_OF_TXT";

apple
banana
$test

END_OF_TXT


とやると、$testが変数展開されてしまう。 それをさせないようにするには、

print <<'END_OF_TXT';


とすればよい。ちなみにそのjavascriptによるビューアは動きが重かったので不採用。




ファイルの拡張子を取り出そうと調べたら、以下のようなソースがあった。

$name = "aaa.jpg";

if( index($name, '.', 0) != -1){
$suffix = (split(/\./, $name))[-1];
}

print $suffix."\n";


なるほどね、ピリオドで区切ってsplitすればいいのか・・・ と思ったがsplitしたものの取り出し方がちょっと変わっている。 私だったら、

@tmp = split /\./, $name;
$suffix = pop(@tmp);


とやるところだ。 おそらくそれを一発でできるのだろうが、どういうことなのかよくわからない。

[-1]で配列の最後を意味するのかな?