一旦必要なものを入手して、必要なコンパイルをすべて実行してしまったら、 基礎的なワイヤレスの設定段階へ進みましょう。
注意点 - ステップ 1 2 3 は、ISO/OSI 標準モデルのレベル 1 2 3 に相当します。 一方ステップ 4 は、ネットマスクが 255.255.255.255 という状況時に発生する 問題を解決するために付け加えたものです。 実際 32bit のネットマスクは、ISO/OSI 標準を守っていないので、 ネットワークに対して、ブロードキャストとマシンの IP に同じアドレスを使い、 ネットワークアドレスが存在しないような割り当てを強制することになります。
この見方には批判をする人がいるでしょう。しかし、もしあなたが ワイヤレスネットワークを設定するために標準 ISO/OSI モデルを使うのであれば、 サブネットのために多くのアドレスが無駄になりますし(個々のサブネットにおいて、2 つの IP ナンバー(ネットワークとブロードキャスト)を捨ててしまうので)、また柔軟な IP 割り当て(地理的な条件などで発生する) ができなくなります。 これについては、 付録 Aで詳しく解説します。
先のステップ 2 は、ケーブル接続のネットワーク設定では出てこない事柄です。 というのは、ケーブル接続のカードでは、この部位の特別な設定はないからです。
Linux カーネルに限らず、ハードウェアを認識させる事は PC を管理する上でいつも頭 の痛い問題です。
ワイヤレスカードは、たいてい PCMCIA 形式なので、少しばかり複雑です。 まず第一に、カーネルから PCMCIA アダプターを認識できるようにする必要があります。 それができれば、ワイヤレスカード用の特定ドライバのインストールに挑戦できます。
PCMCIA の設定において、以下の事をしなければなりません -
PCMCIA では無い場合 -
この段階にまで進めば、読み込む必要のあるモジュールの名前がわかっているはずです。 PCMCIA の設定は、PCMCIA のデーモンを起動すればよいだけです。 (RedHat ならば,"/etc/rc.d/init.d/pcmcia start")、 他のディストリビューションの場合は、"modprobe module_name options" です。 ここのオプションの項目で、ワイヤレスドライバが使う、ioport, irq, data-link の値 を与えます。( 5.3 章参照) とにかく、ハードウェアがドライバから正しく認識されているかどうか確認するには、以下のようにします -
それって何 ?
ケーブルで繋がれたこれまでのネットワークでは、機器間をケーブルで繋いでし まえば、データリンク層の設定をしなくとも、TCP/IP パラメータを設定することができました。
ワイヤレスネットワーク環境では、これとは対照的に、データリンク層の設定が必要です。例えば、
このように、調整が必要な設定項目はたくさんあります。 理由は、ワイヤレスネットワークの基本設計によるものです。 誰か近くにいる人が、アンテナをこちらに向けて、正しい TCP/IP の設定をするだけ で、あなたのパケットを見ることも、サービスを使うことも出来ます。
加えてワイヤレス環境の下では、互いに混信を起こしそうな多くのワイヤレスサ ブネットが、同時に存在している可能性があります。
従って、下記のような設定項目があります -
これはあなたが直面しなければならない、三番目の問題です。 この問題は、ワイヤレスネットワークがさらに大きくなってきたときに、顕在化してくるでしょう。
ワイヤレス IP ネットワークは、負荷をかけて使わないのなら、あなたの負担にもならないことを覚えておいてください。
全てのホストは、互いが見えます A - - - - - C \ / | \ / | / | / \ | / \ B - - - - - D
このような構成はとても単純で分かりやすく、また特殊な設定( IP レベルの設定など) を必要としません。 それぞれのホストへの IP アドレスと、正しい汎用ネットマスクを 割り当てればよいだけです。
ホスト A は 直接ホスト B が見えません A <- - - - 通信\ | 不可能\ C \ | B <- - - -
A と B は、C を通してのみ交信が可能です。
もしネットワークがインフラストラクチャ・モードで構成されていて、C がアクセ スポイントであるならば、別に問題はありません。 アドホック・モードの場合、 "master" ホストが構成した BSS に対し、他のホストは接続する事ができます。 (「"master" ホスト」という言い方が正式なもので無い事は、十分承知していますけどね!)
これで IP レベルの完全な相互接続が実現できています。 つまり A と B は、C が持つ同じインターフェースを使って通信をおこないます。 もし A から B に ping を打とうとすると、C からたくさんの ICMP REDIRECT パケットを受信します。 この理由は、 C は A に対して、"パケットの目的地が、要求が来た所と同じネット ワーク内にあるよ"という事を伝えているからです。
解決方法 - これを抑止するため、コマンドラインから "echo 0 > /proc/sys/net/ipv4/conf/ethx/send_redirects" と入力してみましょう。 (ここの ethx は、A と B に向けた C 上のインターフェースです)
他の問題 - A と C には、どんなネットマスク値を割り振ったらよいのでしょう? 仮に A に対して、A と C を含んだネットマスクを設定すると、ネットワークはうまく動かないでしょう。 というのは、A はゲートウェイ(この場合 C )を使う事なく、 行き先の知らない MAC アドレスと共に ARP 要求を出しているからです。
あなたは proxy arp の利用を思いつくかもしれません。 しかし、proxy arp から行き先を知る事ができるのは、送り先が要求先のインターフェース とは別のインターフェースにある時だけなので、今回のケースには該当しません!!
この様な場合、とっても小さなネットマスク (Win9x ならば 255.255.255.254 を、WinNT ならば、すくなくとも 255.255.255.248) を設定する必要があります。 またホスト A と C が同じネットアドレスを持たないように、確実に設定する必要があります。
例 :
一般的にシステムは、ネットマスク値 255.255.255.254 という状態下において、 最終ビットだけが違う 2 つの IP アドレスを与えることで動きます.
これらすべては、TCP/IP を強制しています。 しかしこれは、高いレベルの柔軟性を得るためには、唯一の方法です。
注意点 - もしアクセスポイントを利用しているのであれば、 (ネットワークはインフラストラクチャ・モード) すべての問題はデータリンク層で解決されてしまうので、このような問題に直面する事はありません。 (ほとんどのアクセスポイントは、ブリッジとして機能しますから...) しかしアクセスポイントは高価です。(だいたい 1000 US$ か、それ以上) ですから、2、3 個のワイヤレスカード程度であれば、転送用に Pent133MHz,32MByte の RAM を積んだ程度の PC を使うと、 けっこう経済的です。
A - - - - - C - - インターネット \ / | \ / | / | / \ | / \ B - - - - - D
いくつかの状況が想定されます
インターネット \ \ E \ / \ / ワイヤレス A - - - - - C - - F \ / \ | \ / | \ ケーブル / G | / \ | / \ B - - - - - D
ここの C は、二つのネットワークの中継をしています。 右側はワイヤレスネットワークで、左側はケーブル接続のネットワークです。
加えて、インターネットへのアクセスも可能です。 つまり C には、3 枚のネットワークカードが搭載されているのです。
ホストに対して、どんな IP アドレスを割り振ったらよいのでしょう? これには二つの解決策があります。
2 つ目の解決策について検討してみましょう
例 - インターネットの公なサブネット x.y.z.0/24 を持っている場合を想定します
各インターフェースの設定は以下のとおり
eth2 上における静的な配送
この配送経路指定では、全てのインターネットからのアドレス指定要求に対して、 自分の標準ゲートウェイを指定します。 つまりお気づきのように、最初に Linux に対して何処にルーターがあるのか教える必要があり、 そうすれば、標準の要求がそこを通過するようにできます。
eth0 上における静的な配送
ホスト A B D は、ケーブル接続のネットワーク上にあります。
eth1 上における静的な配送
ホスト E F G は、ワイヤレスネットワークに繋がっています。
注目すべき点は、柔軟性が大変高い事です。 しかし、それぞれのホスト毎に手動で設定しなければなりませんが。