EP Net Fan
2000年3月17日座学編

ちゃんまるNET構築計画〜その基本思想と概要

文責:佐々木 洋平 高橋和人 丸山保洋
作成:2000/3/13

0:始めに

何故LAN(Local Aria Network)が必要なのだろうか?専攻サーバの善良な(イノセントな)使用者はメールが読めて、webが見られるのであれば満足なはずである。今更LANを無理に構築する必要性は何処にあるのか?その御利益は?まずはこれを理解しなければ、なんのためのLANなのか分からない。まずは、LANの御利益から述べてみよう。

0-1:プライベートアドレスとグローバルアドレス

EPNetFan『最低限用語集』の「IPアドレス」の項も参照のこと。
ネットワークにつながっている計算機には、全て固有の番号が割り当てられ、この番号を頼りに通信が行われている。この番号をIPアドレスというが、インターネット(以後、インターネットとは『The internet』を指すものとする)に繋がっている計算機が指数関数的に増加している以上、世界中の全ての計算機にこの番号を割り当てることは不可能である(猫も杓子も「情報化」と言っている現在では!)。だが、これはインターネットにつながっている計算機での話であり、PCを複数台つないで情報を共有するだけならば、それらの計算機には好き勝手なアドレスを付けられる。要するに「IPアドレスが足りない!」という問題はインターネットにつながっている計算機の問題なのである。この問題を解決する技術がNAT(Network Address Translator)である
インターネット用に割り振られたIPアドレスをグローバルアドレスといい、LAN用に割り振られたIPアドレスをプライベートアドレスという。グローバルアドレスは世界中で唯一の番号なのだが、プライベートアドレスには、それぞれの内部ネットワーク(LAN)で好き勝手なアドレスを(外部ネットワークに接続されたLAN内ではプライベートアドレスの付け方にも一応の作法があるが)使えるため、あちこちの会社や学校で同じ番号を使っている。そのため、LANに接続された計算機からインターネットを利用する場合は、プライベートアドレスをグローバルアドレスに変換する必要がある。このしくみをNATという。ただしNAT の場合は、ひとつのプライベートアドレスに対して、ひとつのグローバルアドレスを対応させるため、多少の不都合もある。たとえば個人宅で、数台の計算機をつないで簡易LANを組んでいる。そして、どの計算機からもダイヤルアップ接続でインターネットを使いたい。しかし、プロバイダーとの契約はひとつしかない。といった場合、NATだと同時に複数のパソコンからインターネットを利用できないので、NATではプライベートアドレスの数だけグローバルアドレスが必要なのであり、LANを構築することができない。そこで、グローバルアドレスが一つしか無くても、複数の計算機から同時にインターネットを利用できるIPマスカレードという技術を「ちゃんまるNET」では用いる事にする。(詳細については後述)

0-2:イノセントライクな実験者の保護?からの保護?

本館post-j『何がすばらしいのか』も参照のこと。というより殆んどこれ。
ネットワークにつながっている計算機の数が多ければ多いほどクラッカーの獲物がふえる。専攻サーバでは、来年度(2000年)から「情報実験」がはじまるが(初期の我々のように)計算機のセキュリティに気を使わない利用者もいるだろう。また、インターネット上で、それこそ『何も知らない』ために他のネットワークへ迷惑をかける可能性もある。そのような無垢な計算機使用者のために、LANをインターネットから遮断する必要がある。しかし、そのままでは内部からもwebを見れない。これは困る。そこで、外部から見ると、あたかも1台の計算機がインターネットにつながっているように振舞い、内部からは、それぞれの計算機がインターネットに飛び出せるようにしたい。そのためにFirewallサーバをたちあげ、IPマスカレードという技術を用いる。(詳細は後述)その結果として内部では様々なことを試験的に実装できる。サーバを立ち上げる練習もできる。また、LAN内で複数の計算機同士でファイルを共有できる。そのためのファイルサーバももちろんセキュリティが弱くてかまわない。『そもそも本来利便性と堅牢性(安全性)は相反するものであるが…』(post-j参照)

0-3:LANの御利益(まとめ?)

  • その1:プライベートアドレスが自由に使える事(大計への申請が不必要?)
  • その2:内部実験機の保護(セキュリティが甘くても良い。様々な事が試せる)

1:構築する将来のLANの構成

では、どの様なLANを構築するのか?電脳大飯店内の全ての機械を内部ネットワークにしてしまうのか。…高度に政治的な判断の結果、テーブル毎に一台ルータを立ち上げ、同じテーブルの残りの計算機をそのルータに接続する事になった。つまり、8台のルータを立ち上げる事となった。(右図のとおり)
その理由は以下に述べる通りである。

後進の教育

先代、先々代までのepnetfanな人々の努力により専攻サーバ群は、今のところ無難に稼働している。しかし、将来はどうであろうか?現状を維持できるのだろうか?…つまるところ管理者が不足するのではなかろうか?。この問題を打開すべく複数台のルータを立ち上げる。これは、将来の管理者が立ち上げる事となる。さらに、そのルータを情報実験での範となる計算機に作り上げてもらう。つまり、管理者の修行の場としてLANを構築するのである。何よりもまず、これが最大の目的である。
以上の観点から、ちゃんまるNETの目標を

『小規模LANを構築し将来のためのマニュアルを作成する事』

にする。具体的にはblack,kurione,emblionに人柱(機械柱?)になってもらう事にする。
文責:佐々木

2:ちゃんまるNETに用いる技術

2-1: ルータ

EPNetFan『TCP/IP ってなんやねんツー』の「OSI基本参照モデル」の項も参照のこと。
ネットワーク上を流れるデータを他のネットワークに中継する機器。
OSI基本参照モデルでいうネットワーク層(第3層)トランスポート層(第4層)の一部のプロトコルを解析して転送を行う。
ネットワーク層のアドレスを見て、どの経路を通して転送すべきかを判断する経路選択機能を持つ。
また、自分の対応しているプロトコル以外のデータはすべて破棄する。
複数のプロトコルに対応したルータをマルチプロトコルルータと呼ぶ。

ルーターは、次の手順でルーティングテーブルを検索し、パケットの配送先を決める。
  1. IPパケットのヘッダから送信先アドレスを取り出す。
  2. 送信先アドレスとルーティングテーブルの各エントリ中のプレフィクスとを比べる。
    比較はデスティネーションアドレスの先頭からプレフィクスの長さ分のビット列を取り出した上で行う。
  3. マッチしたもののうち最も長いビット長を持つプレフィクスを持つエントリを選ぶ。
  4. 選んだエントリのNextHopフィールドに示されがアドレスに対して、IPパケットを転送する。
(SoftwareDesign 1999,3 月号からそのまま転載)

2-1-1: ルーティングテーブル

IPパケットのヘッダに含まれる送信先アドレスと、そのパケットをどのルータに転送すべきかが書かれた対応表の事。

2-1-2: ルータの具体的な作り方。

ネットワークカードを二枚挿して、ルーティングテーブルをたよりにルーティングが行われる。
具体的な作業方法は、出来次第アップする。

参考1: IPアドレスの仕組み。

インターネット上では、すべてのデータは適当な大きさに分割され、 IPパケットに格納されて運ばれる。
分割されたパケットには、配送を制御するための情報が、ヘッダと呼ばれる部分に格納される。
ヘッダに含まれる情報でいちばん大事なのが、パケットを送り出したホストとパケットを届ける相手のホストのそれぞれのIPアドレス。
現在一般的なIPv4という規約では、32ビットの数値で表現される。

参考2: ネットワークアドレスと、ホストアドレス、サブネットアドレス。

IPアドレスは、ネットワークアドレスと、ホストアドレスという部分で構成されている。
ネットワークアドレスを表わす時、 192.168.100.0/24 という記述をする事がある。
先頭の24ビットをネットアドレスとして使っている、という指定である。
ホストアドレスのうち、上位の桁を仮想的なネットワークアドレスとして利用する。これを、サブネットアドレスと呼ぶ。
二進数で表わせば、
11000000.10101000.01100100.00000000
ネットワークアドレス サブネットアドレス ホストアドレス

2-2:IPマスカレード(NAT:Network Address Translator)

一つのグローバルなIPアドレスを複数のコンピュータで共有する技術。
組織内でのみ通用するIPアドレス(ローカルアドレス)と、インターネット上のアドレス(グローバルアドレス)を透過的に相互変換することにより実現される。
NATと違ってTCP/UDPのポート番号まで動的に変換されるため、一つのグローバルアドレスで複数のマシンからの同時接続を実現することが可能である。
IPマスカレードは、Linux カーネルに元々備わっている機能であるが、 IPマスカレードを実装するには、バージョン2.0.0 以降のカーネルが必要で、また、カーネルのオプションを有効にする為に、再構築を行う必要がある。
ただし、ポート番号が変化するため、インターネット側からアクセスできない、ICMPが使えない、rshなど一部のサービスが使えない、ftpはパッシブモードでしかつかえないなどの欠点もある。

利点としては、LANで繋がったマシンがLinuxで動いていようがWindowsで動いていようが関係なく、また、それらが外部のISPサーバに直結していないことを意識することすらなく、プライベートLAN内からInternet接続が容易に出来る事が挙げられる。

2-2-1:動作原理

IP マスカレードによるパケットの置き換えの図。
IP マスカレードは、LAN内部からのパケットの送信元アドレスをルータのグローバルアドレスに変換すると同時に、ポート番号も変換する。この時のポート番号は、その時空いている、適当な番号を割り振る。書き換える前のアドレス&ポート番号と、書き換えた後のアドレス&ポート番号をペアにしてある種のテーブルとして記憶しておく。
そして、インターネットからの応答パケットが届くと、応答パケットのポート番号と 一致する物が無いか、テーブルを調べる。
一致するものがあれば、それに対応したプライベートアドレスと、ポート番号に戻して、LANに向けて流す。その後、テーブルから、エントリを削除する。 以上のようにして、何事もなかったかのようにルータの内外でパケットのやりとりがなされる。

2-2-2: DeleGate

IPマスカレードの他にIPアドレスの変換を行う事ができるソフトウェアとして、DeleGate が挙げられる。
DeleGateについては、post-jで詳しく扱われている。
DeleGateでは、クライアント側のソフトウェアで、変更されたポート番号を指定して使わなければならない。
利用できるソフトウェアについて、細かなアクセス制限を掛ける事が可能である。

参考3: Proxy

IPマスカレードとどこが異なるのか?

内部ネットワークとインターネットの境にあって、直接インターネットに接続できない内部ネットワークのコンピュータに代わって、「代理」としてインターネットとの接続を行うコンピュータのこと。また、そのための機能を実現するソフトウェア。
NATやIP Masqueradeと違って、クライアントソフトウェアの方にプロキシを使うことを設定しないと利用することができない。
WWWを利用するためのHTTPプロキシの中には、外部との回線の負荷を軽減するために、一度読みこんだファイルをしばらく自ら保存しておくキャッシュ機能を持ったものもある。DeleGate は、Proxy サーバを運営管理するソフトウェアの一つである。(!)

2-3: DHCPサーバ

サーバーが持っているIPアドレス等の情報をクライアントに一定期間貸し出す。
設定の変更をサーバが自動で行うので、ユーザの負担や失敗が減る。
クライアントの負担が減るという事は、サーバに負担がかかっているという事である。
IPアドレスが動的に割り当てられるので、アクセスポイントが頻繁に変わる ノートPCな人には恩恵がある。その分クライアント側もdhcpcdを導入するなどして設定しなければならない。
二年生のためには、スタティックなアドレスを割り振る。DHCPを使うとIPアドレスの役割などが気にならなくなって勉強にならないから、使わせないようにする。

2-3-1: DHCPサーバの具体的な作り方。

post-j に詳しい話があるので、ここでは触れない。



下らん例え話。
文責:高橋

Last Modified: 2000/03/27 高橋 和人
参考資料&文献
http://www.ep.sci.hokudai.ac.jp/~postj/DHCPについて。
http://www.e-words.ne.jp/用語検索
http://www.hitec-inc.co.jp/~hayama/DHCP.htmlDHCPについて。
http://www.infonia.ne.jp/%7Eorihika/linux/linux03.htmlルータ、IPマスカレードについて
http://cise.edu.mie-u.ac.jp/%7Ejun/linux.htmlルータについて
http://ash.or.jp/ash/env/カーネル再構築、ルータについて
http://www.letre.co.jp/%7Eiwaki/mylan/mylan.htmlIPマスカレードについて
http://www.kt.rim.or.jp/~ksakai/dhcp.htmlDHCPについて
http://hisac.linux.or.jp/JLUG/JF/JFdocs/DHCP-4.htmlDHCPについて
http://www.linux.or.jp/JF/JFdocs/KickStart-HOWTO-13.htmlDHCPについて
http://developer.novell.co.jp/nw5man/doc/nihongo/nw5/jpnds/dhcp_jpn/data/HTNSQDBX.HTMDHCPについて
http://www.mugen-sys.co.jp/Pcunix/Howto/linux-dhcp/dhcp.htmlDHCPについて
http://www.hnz.kpu-m.ac.jp/hnz-lan/dhcpd.htmlDHCP、IPマスカレードについて
『SoftwareDesign 1999,3 月号&12 月号』技術評論社
秀和システム出版編集部 編著『Red Hat Linux で作るネットワークサーバ構築ガイド』秀和システム