Windows OSをルータとして利用する

Linux OSでは、/etc/sysctl.confに「net.ipv4.ip_forward = 1」を追加すれば2つのネットワークインターフェイス間でパケットを転送できる。
Windows OSでは、ネットワークブリッジ接続をすればできるようだが、無線のネットワーク側でバッファローのクライアントマネージャを利用している環境では、親機に接続できなくなってしまう現象があり、うまくいかなかった。
「WindowsXPをルータとして機能させる方法」で紹介されているが、「Routing and Remote Access」というサービスを有効にするだけでよく、実際に行ってみるとうまくルーティングできていた。
このサービスはデフォルトで無効になっているので、常時ルータとして利用する場合には、自動に変更する必要がある。

ARPスプーフィング

インターネットや他のネットワークに接続する際に必ず必要なゲートウェイだが、ゲートウェイと通信する際には、ネットワーク層は使わず、データリンク層を使う。
つまり、IPアドレスを使って通信しているわけではなく、MACアドレスを使って通信しているわけだ。
ところで、ゲートウェイのIPアドレスはDHCPサーバーから割り振られたり、自分で手動で登録したりするわけだが、そのゲートウェイのMACアドレスが実は、ゲートウェイのハードウェアに割り振られたMACアドレスではないとするとどうなるだろうか?
もし実在しないMACアドレスならば、インターネットや他のネットワークに接続することはできなくなるが、実在する悪意あるホストのMACアドレスならば、通信がのぞき見られたり、改ざんされることを意味する。それがARPスプーフィングである。
同じネットワーク内に悪意あるホストが存在するわけがない。普通はそうだが、そのマシンがウィルス感染していたらどうだろう。。。。
IT ProではARPスプーフィングがどのように行われるかを紹介しているので、ぜひ参考にしてほしい。
ところで、そもそもARPプロトコルはIPアドレスからMACアドレスを解決するプロトコルなのにもかかわらず、なぜARPスプーフィングが起こるのだろうか?
実は、IPアドレス衝突を検出したり、他のマシンのARPテーブルを更新するために宛先IPアドレスを自分に設定したARPパケットであるGratuitous ARPというものが存在する。性善説に基づけば、便利なパケットであるし、ARP認証を実現している今でも非常に重要なパケットであることは間違いないが、他のマシンのARPテーブルを更新できるという仕様は、IPアドレスを別の端末に付け替えた後でもすぐに通信できるという便利さや、マシンを二重化していて仮想IPアドレスでパケットを受け渡ししているようなシステムにおいて障害時における装置の切り替えを実現するHSRPが現在でも一般的に使われている一方で、(HSRPの用途以外では、)本来はつけ変わるはずのないゲートウェイのIPアドレスに対応するMACアドレスのテーブルが差し替えられてしまう問題をはらんでいる。

ルーティング設定

スタティックルート設定
コマンド:route add -net (ネットワークアドレス) netmask (サブネットマスク) gw (ゲートウェイ)
ファイル:/etc/sysconfig/static-route
デフォルトゲートウェイ設定
/etc/sysconfig/network
の中のGATEWAYを設定する。
デフォルトゲートウェイの設定を有効にするには
/etc/rc.d/network restart
を実行する。

ルーティングテーブル

ルーティングテーブルの追加(192.168.1.0/29が192.168.0.3の先にある場合)
route -p add 192.168.1.0 mask 255.255.255.248 192.168.0.3
ルーティングテーブルの削除
route -p delete 192.168.1.0