実は現実逃避モード(笑) お盆休みの間に夏休みの宿題をやってしまおうと思ってたのだが、その気も薄れてきたのでHTMLを書くのだ。宿題なんて、必要な分だけ9月にやるのが一番合理的なんですよね(こらこら)
別にイカした実験と言う訳ではないのだが、ISDNルータを買ってきた。今までは普通にTAでダイアルアップしていたのだが、LANでTCP/IPの実験をするうちに欲が出てしまい、気が付いたらヤマハのRT102iを手にしていた。
これ、かなり高かったのだが、弱小の二次プロバイダでも、専用線接続に使ってる所もあるみたいだし、それなりの信頼性はあるのではないかと思う。最近になってよく見掛けるようになった、普及型の安いルータも価格面から候補に入れていたのだが、F社やそこのOEMと思われるN社販売のルータはハングすると言う話など、あまり良い噂は聞かないのでやめた。(確認した訳ではないので、社名、商品名は伏せますが)
さて、実際に使ってみる。ここでは、プライベートアドレスを振ったLANを、端末型ダイアルアップのプロバイダにむりやり繋いでしまう方式。宛先が外部ネットワーク宛てのパケットは、送信元プライベートアドレスを、ダイアルアップ時にプロバイダから動的に振られたグローバルアドレスに付け替えて送る。これが、Network Address Transfer、NAT(ナットと読むらしい)機能である。
しかし、この場合は端末が複数あるのに、プロバイダから割り当てられるグローバルアドレスは惜しくも一つだけなので、話はもっとややこしくなる。1対1でのアドレスが変換できれば問題はないのだが、複数のプライベートアドレスを一つのグローバルアドレスに変換しないといけないからである。つまり、10対1のアドレス変換みたいな事態も起き得るわけ。
こんな場合、ただ単にNATのように変換していると、パケットの送信元アドレスが全部同じアドレスに変換されてしまうので、送信した端末宛てのパケットが帰ってきた場合は、そのパケットをどの端末に向ければ良いのか分からなくなる。そこで登場するのが IP Maquerade 機能である。こいつは、UDP/TCPパケットのポート番号までを付け替えて、パケットの区別をするのだ。しかし、ポート番号の概念のないICMPパケットは上手く動かない場合があったりして、tracerouteは駄目だった。(これは不便)
仕組みを詳しく説明したいのだが、ちょっとややこしいかも。例えば、www.osk.threewebnet.or.jp [202.235.193.38] にLAN上の複数の端末からアクセスする場合を、下図にまとめてみた。
う〜ん、この説明ではちょっと難しいかなぁ...
難しい話はおいといて、実際に繋いでみる。下に置いてあるのはHUBなので、無関係ね。
接続は簡単。左から電源(ACアダプタ)、シリアルポート、10Base-T、ISDN。電源は説明はいらいないとして、シリアルポートはRS-232Cのクロスケーブルを繋いで、初期設定などを行うためのもの。普段はTelnetで設定できるのだが、買った時はルータ自身のIPアドレスが登録されていないので、通信ソフトなどから設定するのだ(RARPサーバーがあれば別だけど、普通はないかな)。後は10Base-TはHUBへ、ISDNはDSUへ繋ぐだけ。写真には無いのだが、右の方にアース端子もある。面倒なので、これはとりあえずオープン。
接続などが終わったら、今度はルータの設定をしなくてはならない。しかし、これが少々面倒な作業だ。細かいコマンドが多いので慣れるまではややこしいかも知れないが、マニュアルにはIP Masqueradeを使う場合の例も示してある。ある程度例に従いながら、自分の環境に合わせてやればすぐに設定可能だと思う。まぁマニュアルもあるので設定の解説は省略する。
ルータの設定ができたら、OSのTCP/IP設定で、デフォルトゲートウェイにルータのIPアドレスを指定して完了。これで、LAN外部へアクセスする時には、自動的にダイアルしてくれるので、まるで専用線で繋がってるかのような感覚になる。でも、快適な分、使い過ぎには十分にご注意を。
Windows95マシンなどもLANにぶら下げて使っている方は多いと思うが、この構成ではWindows95がクセモノとなってしまう。なぜならば、NetBEUI関係の訳の分からないパケットをなげまくり、その度に発呼してしまうからである。ダイアルアップだと、その度に課金されることになり、気が付けば桁を間違えた請求書が... なんて事もあり得るかも知れない。
そこで、UDP/TCPの137番から139番ポートのパケットをルータで廃棄する設定する。そうすれば、その関係のパケットでの発呼は起こらない。具体的には、
pp1# ip filter 1 reject * * udp,tcp 137-139 *
pp1# ip filter 2 reject * * udp,tcp * 137-139
pp1# ip filter 100 pass * *
pp1# ip pp secure filter out 1 2 100
pp1# pp enable 1
と、設定してやる。これで、無駄な電話代も防げるかな。