6.ネットワ−クの基本 '96 6-1. IPアドレスについて (1) IPアドレスの基本 * IPアドレスのクラス IPアドレスは32ビットで表わされ、幾つかの区分に分けられている。この区分をクラ スという。インタ−ネットに接続する場合は、世界で唯一のIPアドレスを使う必要があ り、申請してもらうことになっている。現在、現実的にはクラスCが割当てられる。クラ スCでは254台のホストを識別することができる。注.この記述はもう古い。97年の 時点でもクラスCを1個そのままではとれなくなっていた。クラスCのサブネットで8台 分であるとか、数台分と言った割り当てになっていた。インタ−ネットに接続しない内部 だけの閉じたネットワ−クには、どんなIPアドレスを付けても構わない。しかし少しで もどこかでインタ−ネットとの接続性が出て来るなら、インタ−ネットの管理組織によっ て定められたプライベ−トIPアドレスを使うようにしたい。 種類 | 最左オクテットの値 1オクテットは通常8ビットである。通信の ---------|-------------------- 世界ではオクテットという単位を使うらしい。 クラスA | 1 〜 127 クラスB | 128 〜 191 クラスC | 192 〜 223 Class D,E は特別な割当てで一般には使われ クラスD | 224 〜 239 ない。Class D はマルチキャストに用いられ クラスE | 240 〜 255 る 224.0.0.0 〜 239.255.255.255 である。 [ プライベ−トIPアドレス ] IPアドレスの体系の中で、企業や学校などの内部のネットワ−クで自由に付けることが できるIPアドレスの取り決めを1996年2月、 RFC 1918 として IETF が正式文書を 発行している。その文書 "RFC 1918, Address Allocation for Private Internets" の中 で Private Address Space として記述されている。以下はその部分の抜粋である。 The Internet Assigned Numbers Authority (IANA) has reserved the following three blocks of the IP address space for private internets: クラスA 10.0.0.0 〜10.255.255.255 (10/8 prefix) クラスB 172.16.0.0 〜172.31.255.255 (172.16/12 prefix) クラスC 192.168.0.0〜192.168.255.255 (192.168/16 prefix) * クラスCのアドレス構成 上位24ビットがネットワ−ク部、下位8ビットがホスト部を表わす。 ホスト部のビットがすべて0の場合は、ネットワ−クそのものを表わす。 ホスト部のビットがすべて1の場合は、ブロ−ドキャストを表わす。 8bit 8bit 8bit 8bit ------------------------------------- |110 | |10 | | 110 がクラスCを示す ---------------------------========== ネットワ−ク部 ホスト部 254 台のホストに対応する 192 9 200 .. 2**8-2 = 254 * クラスCの 192.9.200.0 を4つのサブネットにする ホストアドレス部の8ビットの内、2ビットをサブネット番号に使うとする。 192.9.200.0 << ネットワ−クとしては、ここは使えない。 192.9.200.64 192.9.200.128 192.9.200.192 << ネットワ−クとしては、ここも使えない。 0 00 000000 64 01 000000 [ 参考:Apollo の計算ツ−ル ] 128 10 000000 192 11 000000 $ dcalc $ dcalc -- ------ ibase=10 ibase=10 | | ホストアドレス部 obase=2 obase=16 | 64 192 サブネットアドレス部 1000000 C0 サブネットの設定はサブネットマスクという値で、アドレスの何ビットまでが、ネットワ −ク部であるかによって示す。EWSの場合は ifconfig コマンドの netmaskで指定する。 netmask 255.255.255.192 または netmask 0xffffffc0 1100 は16進で "C" である。 * ブロ−ドキャストアドレス IPアドレスの中のホストアドレス部が、全て "1" であるアドレスを言う。 そのネット ワ−クに属する全てのコンピュ−タに、パケットを送るのに用いる。arp コマンドが、同 じネットワ−ク上にあるホストのイ−サネットアドレスを調べるためにブロ−ドキャスト を使う。ブロ−ドキャストはゲ−トウェイやル−タを超えては伝搬しない。例えばクラス Cの 192.9.200.10 IPアドレスのネットワ−クアドレスは 192.9.200.0、ブロ−ドキャ ストアドレスは 192.9.200.255 である。 * IPアドレスの付け方の注意 IPアドレスをサブネットで分割する場合、次の制限がある。これは従来の RIP、即ち経 路情報設定の方法に、ネットマスクを含めることができないことによる。特にこのことは インタ−ネットに接続する場合には気を付けなければならない。 1. 等分にしか分割できない。 2. サブネット部がすべて0または1のアドレスは使えない。 3. サブネットは隣接していなければならない。 -------------------------------------------------------------------------------- ただしこれは、サブネットにしない他のアドレスのネットワ−クと混在させる時に問題に なると考えられる。すなわち、社内だけの閉じたネットワ−クで、サブネットだけで構成 する場合は問題ない。クラスBとかCとか言うのは、インタ−ネットでの取り決めであり、 閉じた系ではどのように32ビットのアドレスを使おうが関係ない。閉じた系でも順守し なければならないことは、ネットワ−クアドレスそのものと、ブロ−ドキャストアドレス、 それにル−プバックアドレスはホストのIPアドレスに使ってはいけないことである。 -------------------------------------------------------------------------------- * その他注意事項 ・BSD 4.2 以前は ifconfig で netmask は指定できなかった。このためサブネットには分 割できない。古いコンピュ−タがある場合には注意が必要である。 無理やりサブネット みたいにするために、Proxy ARP というテクニックが一応あるにはある。 ・SunOS 4.1.x はブロ−ドキャストの解釈が違う。 ホスト部がすべて0のアドレスをブロ −ドキャストにしている。 Sun のEWSはところどころ変な部分があるので注意したい。 Solaris のOSはブロ−ドキャストについては、他のEWSと同じようになっている。 * ブロ−ドキャストアドレスの実験 `22/06 ブロ−ドキャストアドレスに ping を打ってみた。 以下では 192.168.1.0 ネットワ−ク にあるホストが皆、応答している。こりゃ、ブロ−ドキャストの分かりやすい説明になる。 $ /etc/ping 192.168.1.255 PING 192.168.1.255: 56 data bytes 64 bytes from 192.168.1.17: icmp_seq=0. time=24. ms 64 bytes from 192.168.1.6: icmp_seq=0. time=30. ms | 64 bytes from 192.168.1.9: icmp_seq=0. time=84. ms ----192.168.1.255 PING Statistics---- 1 packets transmitted, 10 packets received, -900% packet loss round-trip (ms) min/avg/max = 24/51/84 $ /etc/ping 192.168.1.5 特定のホストに向けて ping を打ったところ。 PING 192.168.1.5: 56 data bytes 64 bytes from 192.168.1.5: icmp_seq=0. time=15. ms 64 bytes from 192.168.1.5: icmp_seq=1. time=3. ms 64 bytes from 192.168.1.5: icmp_seq=2. time=3. ms ----192.168.1.5 PING Statistics---- 3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 3/7/15 -------------------------------------------------------------------------------- これは名古屋大学が出している、情報メディア教育センタ−講習会テキスト "インタ−ネ ットの仕組み" を参考にしました。このテキストは2002年6月8日の「オ−プンソ− スの集い 2002 in 名大」でもらいました。17ペ−ジのものです。 他にもWebサイト 構築入門とか幾つかありました。この集いでは、いつもお世話になっている松阪大学の奥 村先生が "圧縮と特許" という話をされるというので、一度ご挨拶をと思って出かけたの でした。Linux や FreeBSD などマニアックな方が一杯いたような気がします。 -------------------------------------------------------------------------------- (2) クラスCのサブネットの分割 * サブネットとホストの数 サブネット部 | サブネットの数 | ホストの有効数 2**(x)-2 -------------|-----------------------|--------------- 0 (8) | 1 | 254 1 (7) | 0 | 126 << この分割はダメ。 2 (6) | 2 | 62 3 (5) | 6 | 30 4 (4) | 14 (2の4乗−2) | 14 5 (3) | 30 (2の5乗−2) | 6 6 (2) | 62 (2の6乗−2) | 2 注.1) サブネット部はサブネットアドレス部のビット数。その (x)内はホストアドレ ス部のビット数。 注.2) サブネットの数は、そのネットワ−クそのものとブロ−ドキャストアドレスの 2個を除いた数。 * 割当て詳細IPアドレスの一覧 [ サブネットにしない場合:サブネットのビット数0の場合 ] ネットワ−クアドレス x.x.x.0 ホストアドレス x.x.x.1 - x.x.x.254 ネットマスク値 255.255.255.0, ffffff00 [ サブネットのビット数2の場合 ] ネットマスク値 255.255.255.192, ffffffc0 ネットワ−クアドレス | ホストアドレス | ブロ−ドキャストアドレス ---------------------|-----------------|------------------------- x.x.x.0 | x.x.x.1 - 62 | x.x.x.63 : ffffff3f << 使えない。 .64 | .65 - 126 | .127 : ffffff7f .128 | .129 - 190 | .191 : ffffffbf .192 | .193 - 254 | .255 : ffffffff << 使えない。 network | broadcast | host ( IP addres ) ----------------|-----------------|-------------------------------- 0 : 00 000000 | 63 : 00 111111 | 1- 62 : 00 000001 - 00 111110 << no use 64 : 01 000000 | 127 : 01 111111 | 65-126 : 01 000001 - 01 111110 128 : 10 000000 | 191 : 10 111111 | 129-190 : 10 000001 - 10 111110 192 : 11 000000 | 255 : 11 111111 | 193-254 : 11 000001 - 11 111110 << no use [ サブネットのビット数3の場合 ] ネットマスク値 255.255.255.224, ffffffe0 ネットワ−クアドレス | ホストアドレス | ブロ−ドキャストアドレス ---------------------|-----------------|------------------------- x.x.x.0 | x.x.x.1 - 30 | x.x.x.31 : ffffff1f << 使えない。 .32 | .33 - 62 | .63 : ffffff3f .64 | .65 - 94 | .95 : ffffff5f .96 | .97 - 126 | .127 : ffffff7f .128 | .129 - 158 | .159 : ffffff9f .160 | .161 - 190 | .191 : ffffffbf .192 | .193 - 222 | .223 : ffffffdf .224 | .225 - 254 | .255 : ffffffff << 使えない。 network | broadcast | host ( IP addres ) ----------------|-----------------|-------------------------------- 0 : 000 00000 | 31 : 000 11111 | 1- 30 : 000 00001 - 000 11110 << no use 32 : 001 00000 | 63 : 001 11111 | 33- 62 : 001 00001 - 001 11110 64 : 010 00000 | 95 : 010 11111 | 65- 94 : 010 00001 - 010 11110 96 : 011 00000 | 127 : 011 11111 | 97-126 : 011 00001 - 011 11110 128 : 100 00000 | 159 : 100 11111 | 129-158 : 100 00001 - 100 11110 160 : 101 00000 | 191 : 101 11111 | 161-190 : 101 00001 - 101 11110 192 : 110 00000 | 223 : 110 11111 | 193-222 : 110 00001 - 110 11110 224 : 111 00000 | 255 : 111 11111 | 225-254 : 111 00001 - 111 11110 << no use [ サブネットのビット数4の場合 ] `22/10 追記 ネットマスク値 255.255.255.240, fffffff0 ネットワ−クアドレス | ホストアドレス | ブロ−ドキャストアドレス ---------------------|-----------------|------------------------- x.x.x.0 | x.x.x.1 - 14 | x.x.x.15 : ffffff0f << 使えない。 .16 | .17 - 30 | .31 : ffffff1f .32 | .33 - 46 | .47 : ffffff2f .48 | .49 - 62 | .63 : ffffff3f .64 | .65 - 78 | .79 : ffffff4f .80 | .81 - 94 | .95 : ffffff5f .96 | .97 - 110 | .111 : ffffff6f .112 | .113 - 126 | .127 : ffffff7f .128 | .129 - 142 | .143 : ffffff8f .144 | .145 - 158 | .159 : ffffff9f .160 | .161 - 174 | .175 : ffffffaf .176 | .177 - 190 | .191 : ffffffbf .192 | .193 - 206 | .207 : ffffffcf .208 | .209 - 222 | .223 : ffffffdf .224 | .225 - 238 | .239 : ffffffef .240 | .241 - 254 | .255 : ffffffff << 使えない。 network | broadcast | host ( IP addres ) ----------------|-----------------|-------------------------------- 0 : 0000 0000 | 15 : 0000 1111 | 1- 14 : 0000 0001 - 0000 1110 << no use 16 : 0001 0000 | 31 : 0001 1111 | 17- 30 : 0000 0001 - 0001 1110 32 : 0010 0000 | 47 : 0010 1111 | 33- 46 : 0001 0001 - 0010 1110 48 : 0011 0000 | 63 : 0011 1111 | 49- 62 : 0011 0001 - 0011 1110 64 : 0100 0000 | 79 : 0100 1111 | 65- 78 : 0100 0001 - 0100 1110 80 : 0101 0000 | 95 : 0101 1111 | 81- 94 : 0101 0001 - 0101 1110 96 : 0110 0000 | 111 : 0110 1111 | 97-110 : 0110 0001 - 0110 1110 112 : 0111 0000 | 127 : 0111 1111 | 113-126 : 0111 0001 - 0111 1110 128 : 1000 0000 | 143 : 1000 1111 | 129-142 : 1000 0001 - 1000 1110 144 : 1001 0000 | 159 : 1001 1111 | 145-158 : 1001 0001 - 1001 1110 160 : 1010 0000 | 175 : 1010 1111 | 161-174 : 1010 0001 - 1010 1110 176 : 1011 0000 | 191 : 1011 1111 | 177-190 : 1011 0001 - 1011 1110 192 : 1100 0000 | 207 : 1100 1111 | 193-206 : 1100 0001 - 1100 1110 208 : 1101 0000 | 223 : 1101 1111 | 209-222 : 1101 0001 - 1101 1110 224 : 1110 0000 | 239 : 1110 1111 | 225-238 : 1110 0001 - 1110 1110 240 : 1111 0000 | 255 : 1111 1111 | 241-254 : 1111 0001 - 1111 1110 << no use [ サブネットのビット数5の場合 ] ネットマスク値 255.255.255.248, fffffff8 ネットワ−クアドレス | ホストアドレス | ブロ−ドキャストアドレス ---------------------|-----------------|------------------------- x.x.x.0 | x.x.x.1 - 6 | x.x.x.7 : ffffff07 << 使えない。 .8 | x.x.x.9 - 14 | x.x.x.15 : ffffff0f .16 | x.x.x.17 - 22 | x.x.x.23 : ffffff17 | | | .240 | x.x.x.241 - 246 | x.x.x.247 : ffffffe7 .248 | x.x.x.249 - 254 | x.x.x.255 : ffffffff << 使えない。 network | broadcast | host ( IP addres ) ----------------|-----------------|-------------------------------- 0 : 00000 000 | 7 : 00000 111 | 1- 6 : 00000 001 - 00000 110 << no use 8 : 00001 000 | 15 : 00001 111 | 9- 14 : 00001 001 - 00001 110 16 : 00010 000 | 23 : 00010 111 | 17- 22 : 00010 001 - 00010 110 | | | 240 : 11110 000 | 247 : 11110 111 | 241-246 : 11110 001 - 11110 110 248 : 11111 000 | 255 : 11111 111 | 249-254 : 11111 001 - 11111 110 << no use [ サブネットのビット数6の場合 ] `22/03 追記 ネットマスク値 255.255.255.252, fffffffc ネットワ−クアドレス | ホストアドレス | ブロ−ドキャストアドレス ---------------------|-----------------|------------------------- x.x.x.0 | x.x.x.1 - 2 | x.x.x.3 : ffffff03 << 使えない。 .4 | x.x.x.5 - 6 | x.x.x.7 : ffffff07 .8 | x.x.x.9 - 10 | x.x.x.11 : ffffff0b | | | .248 | x.x.x.249 - 250 | x.x.x.251 : fffffffb .252 | x.x.x.253 - 254 | x.x.x.255 : ffffffff << 使えない。 network | broadcast | host ( IP addres ) ----------------|-----------------|-------------------------------- 0 : 000000 00 | 3 : 000000 11 | 1- 2 : 000000 01 - 000000 10 << no use 4 : 000001 00 | 7 : 000001 11 | 5- 6 : 000001 01 - 000001 10 8 : 000010 00 | 11 : 000010 11 | 9- 10 : 000010 01 - 000010 10 | | | 248 : 111110 00 | 251 : 111110 11 | 249-250 : 111110 01 - 111110 10 252 : 111111 00 | 255 : 111111 11 | 253-254 : 111111 01 - 111111 10 << no use * こんな表し方も ・192.9.201.184/29 (1/32C) では全部で8個のIPアドレスがある。 192.9.201.184 : ネットワ−クアドレス .185〜190 : 6個、使えるアドレス .191 : ブロ−ドキャストアドレス 184-10111000 185-10111001 186-10111010 187-10111011 188-10111100 189-10111101 190-10111110 191-10111111 8 16 24 29 192.9.201.184/29 の 29 は、 32ビットの ↓ ↓ ↓ ↓ IPアドレスのネットワ−ク部の数を示して 00000000 00000000 00000000 00000000 いる。ホスト部は3ビット分となる。 先頭 クラスC部 ・192.9.201.184/30 (1/64C) では全部で4個のIPアドレスがある。 192.9.201.184 : ネットワ−クアドレス .185〜186 : 2個、使えるアドレス .187 : ブロ−ドキャストアドレス 8 16 24 30 1/64C とか 1/32C の意味は、クラスCの総 ↓ ↓ ↓ ↓ IPアドレスの数 256 個の何分の1かとい 00000000 00000000 00000000 00000000 うことである。256/64=4, 256/32=8 である。 先頭 クラスC部 ・192.9.201.184/28 (1/16C) では全部で16個のIPアドレスがある。 184-10111000 185-10111001 186-10111010 187-10111011 188-10111100 189-10111101 190-10111110 191-11000000 192-11000000 193-11000001 194-11000010 195-11000011 196-11000100 197-11000101 あれ?。ネットワ−クアドレス部が28コで、x.x.x.184 というのはおかしいのでない か。ちゃんと、サブネットのビット数が4の場合の表もこさえなくては。ビット数が4 だと、ネットワ−クのIPアドレスは 16 ずつ増える系列になる。184/16 = 11.5 で割 り切れないから、やはり 184 というのは有り得ない。気付かんかった。`22/10 追記。 * クラスC相当のアドレスのまとめ `23/02 追記 ネットマスク値 クラスC部 A B | C ---------------------------------------------------------------|--------------- 255.255.255.0 ffffff00 00000000 192.168.10.0/24 0 8 | 1C 256 255.255.255.128 ffffff80 10000000 192.168.10.0/25 1 7 | ☆使えない 255.255.255.192 ffffffc0 11000000 192.168.10.0/26 2 6 | 1/4C 64 255.255.255.224 ffffffe0 11100000 192.168.10.0/27 3 5 | 1/8C 32 255.255.255.240 fffffff0 11110000 192.168.10.0/28 4 4 | 1/16C 16 255.255.255.248 fffffff8 11111000 192.168.10.0/29 5 3 | 1/32C 8 255.255.255.252 fffffffc 11111100 192.168.10.0/30 6 2 | 1/64C 4 255.255.255.254 fffffffe 11111110 192.168.10.0/31 7 1 | ☆使えない 255.255.255.256 ffffffff 11111111 192.168.10.0/32 8 0 | ☆下記参照 注.1) Aはサブネットのビット数、Bはホスト部のビット数、 Cはホスト部の数、有効な台数は2つ引いた数になる。 注.2) ☆印のところはネットワ−クとしては使えない。下記 参照のところは、ネットワ−クとは意味合いが異なる。 * 1個というパブリックIPアドレスの割り当て `21 初め ISDN や ADSL などの普及で、個人向けに固定IPアドレスを 1/64C で4個の内ユ−ザに 2個、1/256C で1個などと割り振るプロバイダが出てきた。1/256C というIPアドレス の分割は非常に気になる。本当にそんな分割ができるのか?。96年当時はWANル−タ が CIDR 対応でなかったので、そもそもできなかったということなのだが。 CIDR 以外の 何か新しい技術でやるのかな。そもそも1個のホストしかないネットワ−クでは、ブロ− ドキャストもネットマスクも意味がない。何かできるような気がするが、いや違うぞ。パ ブリックIPアドレスを1個という割り当ては、ダイアルアップIP接続で毎回、同じと ころには同じIPアドレスを振る、これと一緒ということである。 ADSL は電話の常時接 続であって、ずっと電話を掛けぱっなしでも、料金は固定というサ−ビスとみなしていい。 専用線によるインタ−ネット接続とは違うのである。 * 参考:2進数と16進数の換算 0001 - 1 0100 - 4 0111 - 7 1010 - a 1101 - d 0010 - 2 0101 - 5 1000 - 8 1011 - b 1110 - e 0011 - 3 0110 - 6 1001 - 9 1100 - c 1111 - f (3) ホストIPアドレスの解釈 * 基本 ホストIPアドレスは、コンピュ−タを識別するための基本となる番号である。IPアド レスは 192.9.200.2 というような番号で、これでは分かりにくいので、/etc/hosts ファ イルでマシン名、例えば taro などと対応させる。コンピュ−タの識別は最終的には、ネ ットワ−クボ−ド固有のMACアドレスで行われるが、IPアドレスとMACアドレスの 対応は、ARP というプロトコルが付ける。イ−サネットアドレスは、MACアドレスをも ってそのアドレスとするのが決まりになっている。 ホスト名 << /etc/hosts で解釈。 ↓ IPアドレス ↓ イ−サネットアドレス << ARP( Address Resolution Protocol ) で解釈。 ↓ MACアドレス 注.MAC( Media Access Control ) 自身のコンピュ−タのIPアドレスとMACアドレスの対応付けは、起動時に自動的に行 われる。この時点では他のコンピュ−タのMACアドレスは認識していない。他のコンピ ュ−タにアクセスする時に ARP がブロ−ドキャストを出して、 対象ホストのMACアド レスを調べることになっている。この対応付けの情報はそのホストにキャッシュされるが、 −定時間対象ホストにアクセスが無いと対応情報は消えてしまう。 $ /etc/arp hostA << 対応がついていない。 hostA (192.9.200.6) -- no entry $ telnet hostA << 何かアクセスしてみる。 $ /etc/arp hostA ↓MACアドレス。 hostA (192.9.200.6) at he:no:he:no:mo:he $ /etc/arp -a << 全ての対応を表示する。 $ /etc/arp -d -all << 全てのエントリを消す。 Arp table cleared $ /etc/arp << その他のオプションは。 Usage: arp hostname arp -a arp -d [hostname] [-all] arp -s hostname ether_addr [temp] [pub] arp -f filename * UNIXの /etc/hosts ファイル `2h/11/m /etc/hosts ------------------------------------------------ |127.0.0.1 localhost.localdomain localhost << だいたいこれは最初からある。 | |192.168.1.1 tarou |192.168.1.2 jirou sirou ホスト名は違うが同じIPアドレス、一度に記述。 | |192.168.1.3 host1 同じIPアドレスを列挙して違うホスト名を記述。 |192.168.1.3 host2 | |192.168.1.4 svr1.nix.con これも1つのホスト名である。 * ホストのIPアドレスの設定 以下は Apollo コンピュ−タでの例である。/etc/rc.local がマシンのスタ−トアップ・ ファイルであり、その中で ifconfig コマンドにより、ホストのIPアドレスを設定して いる。ifconfig コマンドは各種EWSどれでも同じような機能である。ifconfig のオプ ションには netmask、broadcast、arp、-arp、trailers、-trailers、などがある。 例の /etc/rc.local では、オプションを全く指定してないが、この場合はデフォルト値が適用 されることになる。通常はこれで問題ないが、サブネットを指定するような時には、明示 的にオプションを付けなければならない。 trailers、-trailers オプションはイ−サネットのデ−タ転送で、イ−サネットフレ−ム のヘッダ−部をエラ−チェックをするかどうかの指定である。ヘッダ−部のデ−タだけで あり、本体のデ−タはチェック対象ではない。trailers はチェックする。 -trailers は チェックしない。昔はエラ−が多かったらしく、このオプションは意味があったが、現在 ではネットワ−ク装置の信頼性は非常に高くなっている、もはや意味はない。 arp、-arp は普通は関係ない。-arp オプションを付けると他のコンピュ−タからの ARP リクエスト に反応しなくなる。つまり自ホストに他からアクセスできないようにすることができる。 /etc/rc.local ----------------------------------- |if [ -f /etc/ifconfig ]; then | /etc/ifconfig dr0 192.10.10.1 << dr0 と eth0 の2つのイ−サネット。 | /etc/ifconfig eth0 192.9.200.2 | /etc/ifconfig lo0 127.0.0.1 << 自分自身の設定。必ず記述する。 |fi [ netmask を変更してみる ] $ /etc/ifconfig eth0 << 現状の確認。 eth0: flags=43 inet 192.9.200.2 netmask ffffff00 broadcast 192.9.200.255 macaddr 8:0:1e:2:cb:ed $ /etc/ifconfig eth0 192.9.200.2 netmask 0xffffffc0 broadcast 192.9.200.255 または $ /etc/ifconfig eth0 192.9.200.2 netmask 255.255.255.192 broadcast 192.9.200.255 $ /etc/ifconfig eth0 Domain/OS の場合のMACアドレス eth0: flags=63 ↓ inet 192.9.200.2 netmask ffffffc0 broadcast 192.9.200.255 macaddr 8:0:1e:2:cb:ed * イ−サネット・インタ−フェ−ス ifconfig コマンドで指定した /etc/ifconfig eth0 192.9.200.2 の eth0 とか dr0 はイ サ−ネット・インタ−フェ−スと呼ばれているものである。コンピュ−タにネットワ−ク ケ−ブルを接続する口と思っていい。 Apollo でのイ−サネット側の一番目の口は eth0 であり、INDY では ec0、Sun では le0 ということになっている。 -------------- 192.10.10 | $ /usr/ucb/netstat -rn |dr0 192.10.10.1 Destination Gateway .. Interface ------- 192.10.10 192.10.10.1 .. dr0 | | 192.9.200 192.9.200.2 .. eth0 ------- |eth0 192.9.200.2 ネットワ−ク 192.10.10 へは口 dr0 (192.10.10.1) | を通って行きなさいよという意味になる。 -------------- 192.9.200 * MACアドレスの確認 ( Solaris 2.6 の場合 ) # ifconfig -a lo0: flags=849 mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863 mtu 1500 inet 192.168.1.1 netmask ffffff00 broadcast 192.168.1.255 ether d:8:02:qe:0:xc # dmesg ハ−ドウェアの設定状態を全部表示するコマンド Dec 18 14:28 systems... done SunOS Release 5.6 Version Generic_105181-23 [UNIX(R) System V Release 4.0] | Ethernet address = d:8:02:qe:0:xc | * Windows パソコンでIPアドレスを確認する Windows 98 でも 2000 でも、DOS 窓から C:\>ipconfig または C:\>ipconfig /all とコ マンドを入れると、ホストのIPアドレス、デフォルトゲ−トウェイ、サブネットマスク、 DNS サ−バのIPアドレス、DHCPサ−バでIPアドレスを取得するようになっているかな どを表示する。Windows 98 には winipcfg というコマンドもあり、 こちらは画面が出て 来る。 確か Windows 2000 Professional でログオンするのにパスワ−ド設定されていて、 マシンに入れずネットワ−クの設定状態を確認できない。そこで DOS窓には入ることがで きて、C:\>ipconfig を叩いてIPアドレスなど分かったことがあった。 * 実験その1: ARP に応答しないようにする ------- ------- |hostA| |hostB| ------- ------- | .2 | ----------------------------- 192.9.200 hostA が ARP に応答しないようにする。 $ /etc/ifconfig eth0 192.9.200.2 netmask 0xffffff00 broadcast 192.9.200.255 -arp これで hostB から ping をかけると、ダメ % arp -a hostA (192.9.200.2) at (incomplete) ARP に応答するように戻す $ /etc/ifconfig eth0 192.9.200.2 netmask 0xffffff00 broadcast 192.9.200.255 arp % ping 192.9.200.2 OK * 実験その2: 代理応答をさせる ( Proxy ARP という ) hostA から別なセグメントにある hostB へアクセスする。 hostA □ << ここから Proxy ARP で hostB へアクセスする。 |.6 ------------------ 192.9.200 | .2 ------- |hostG| << hostB のイ−サネットアドレスを代理応答する。 ------- | .1 ------------------ 192.10.10 |.2 □ hostB << hostB は ARP に応答しないようにする。 [ hostG での設定 ] $ /usr/ucb/netstat -rn Destination Gateway Flags Hops Interface 192.10.10 192.10.10.1 U 0 dr0 << ここを消す。 192.9.200 192.9.200.2 U 0 eth0 $ /etc/ping 192.10.10.2 << hostBのイ−サネットアドレスを調べ $ /etc/arp -a るため pingでアクセスする。arp -a ? (192.10.10.2) at 00:05:04:a2:00:00 で登録されたのを見る。 $ /etc/arp -s 192.10.10.2 00:05:04:a2:00:00 pub << hostG で hostB の代理応答をす $ /etc/arp -a るように登録する。 ? (192.10.10.2) at 00:05:04:a2:00:00 permanent published [ hostA での設定 ] % route add default 192.9.200.2 1 << hostBネットワ−クへの経路をどちら % route add net 192.10.10.0 192.9.200.2 1 << かの方法で設定する。 [ hostB での設定 ] 注目 << ARP の応答しないようする。 ↓ $ /etc/ifconfig dr0 192.10.10.2 netmask 0xffffff00 broadcast 192.10.10.255 -arp $ /etc/ifconfig dr0 dr0: flags=c3 << 確かに NOARP になっている。 inet 192.10.10.2 netmask ffffff00 broadcast 192.10.10.255 ↓ 以上のように設定しておいて、以下のテストをやってみる。 a. hostA で hostB にアクセスする % ping 192.10.10.2 << OK、アクセスできる。 b. hostG で代理応答をしなくする $ /etc/arp -d 192.10.10.2 << hostG でやる。エントリ 192.10.10.2 を消す。 192.10.10.2 (192.10.10.2) deleted % ping 192.10.10.2 << NG、反応しなくなる。 (4) MACアドレスのこと * FireWall-1 の仮想IPアドレスで気付いたこと `24/07 "4-1. 本格IT時代ヘの対応、(2) 基本ネットワ−クの変更" のところから。外部からは hostA には 192.168.2.1 へでなく、202.241.128.3 へアクセスしたい。 192.168.2.1 へ アクセスするのであれば、上記の ARP のテストで見たのでいい。 しかし外部からはパブ リックIPアドレスにアクセスしなければならない。そのため FireWall-1 の仮想IPア ドレスの機能で、192.168.2.1 を 202.241.128.3 にあるかのように見せかけた。 注意し たいのは下記の Proxy ARP の設定である。上のテストでのMACアドレスは、 ここでい えば hostA のMACアドレスである。それがここでは hostG の hme0 のMACアドレス になっていることである。似通った設定なので、どっちかが間違っているのでないかと一 瞬思ったが、こういうことでいい。注意したい。 : Router □ □ hostA' |.1 |.3 仮想IPアドレス -------------------------------- 202.241.128.0 FireWall-1 では fwpolicy | □ hostA で、hostA オブジェクトを .2|.2 hme0 |.1 202.241.128.3 に見せかけ FireWall-1 □------------------- 192.168.2.0 るよう仮想IPアドレスの .2|hostG NAT の設定をしてある。 | 192.168.1.0 -------------------------------- これは hostG ホストの hme0 のMACアドレス。 hostG で設定 /etc/rc2.d/S99NAT | ---------------------------------------↓-------------- |/usr/sbin/arp -s 202.241.128.3 00:05:04:a2:00:01 pub |/usr/sbin/route add host 202.241.128.3 192.168.2.1 * MACアドレスの記憶時間 `28/01 ただのハブはMACアドレスは覚えたりしない。スイッチングハブはMACアドレスを覚 えている。ル−タもMACアドレスを覚えている。UNIXなどマシンは?、Sun のマシ ン V210 でのこと、FireWall-1のマシンで。手元のパソコンをプロキシを介さず、スイッ チングハブやレイヤ3スイッチは通るが、これでインタ−ネットなどにアクセスする。こ のパソコンのMACアドレスが Sun のマシンに登録される。 パソコンをネットワ−クか ら外すとMACアドレスは、どうも20分か30分で消えるようだ。パソコンをネットワ −クから外さずに、IPアドレスだけ変えてみる。するとSun から5分間隔で新しく付け たIPアドレスに ping して、見ていったら20分から30分アクセスできるようになっ た。どうも Sun からパソコンのMACアドレスが消えた時点で、 新しいMACアドレス が登録されて ping が通るようになったみたいである。これはIPアドレスがかちあって おかしくなった場合に、正常に戻るまでの時間になる。 手動で Sun に登録されたパソコ ンのMACアドレスを消せば、すぐに新しいのが登録され正常に接続できた。 * スイッチングハブの選択 `28/01 スイッチングハブもIPアドレスが付くものの方がいい。 Cisco 2950 はそうなっていて、 スイッチングハブに何でIPアドレスを付ける必要があるんだと思った。でもIPアドレ スが付いている方が有難い事が起こった。ネットワ−ク装置は電源をいったん落として入 れ直せば、覚えていたMACアドレスを全部クリアできる。ただのハブはすぐにパケット が通るようになるが、スイッチングハブは1分位はかかる。物によっては3分位かかるの もある、国内家電系メ−カのがそうだった。ロ−カルル−タとして CobaltからNetScreen に置き換えた際、NetScreen から他へ ping が行かない。前のル−タ即ちCobaltのMAC アドレスをどこかのネットワ−ク装置が覚えてしまっていたらしい。めぼしいネットワ− ク装置に、いろんな所から ping を打ってみたがだめだった。ともかく繋がっているネッ トワ−ク装置をリブ−トしてみるしかない。まあその1つが国内家電系メ−カのスイッチ グハブだった訳で、IPアドレスが付いていれば装置にロッグインして、arp コマンドで 前のMACアドレスを直接、消すことができるかもと思った。 * ネットワ−ク装置のいろいろ `28/01 Cisco 2950 とただのハブの間はクロスケ−ブルを使うこと。Cisco 2950 は電源を入れて 落ち着くまで1分ぐらいかかる。この間は通信はできない。Cisco 3750では、パソコンの ケ−ブルのコネクタを外してまた付けた、30秒で認識した。 3750 でパソコンのコネク タを付けたままでIPアドレスを変えた、即認識した。 3750 で同じIPアドレスでパソ コンから Apollo につなぎかえた、30秒で認識した。国内家電系メ−カのスイッチング ハブも触る機会があった。装置前面にリセットボタンらしきものがあったので、押してみ たが何も変化がなかった。それで電源を入れ直したら3分ぐらいかかった、なんや一生懸 命新しくMACアドレスを覚えている感じだった。このスイッチングハブ近くの上記のロ −カルル−タを置き換えていた時のこと、MACアドレスを覚えてしまって一晩経っても 離さないので電源を入れ直したのだ。5年やそれ以上まるで触ることなく動いていた装置 だけに、できれば電源をプチプチとやりたくはなかった。RS-232C の口があるから、そこ から何とかできんか、マニュアルもないし時間もないしと、冷や冷やもんだった。 * MACアドレスの影響範囲は `28/01 MACアドレスはどこまでの範囲の装置まで覚えられるのか。PC に 192.168.1.9 と付け るところ、192.168.1.1 と付けてしまったら。PCをいったんネットワ−クから外してIP アドレスを 192.168.1.1 にしてネットワ−クに接続し [有効]をクリックしてしまった時 の話やけど。その瞬間からネットワ−クはおかしくなる。 FireWall など3台のマシンに 登録されていたレイヤ3スイッチの 192.168.1.1 のMACアドレスが、PC のに変わって しまっている。急いで PC のIPアドレスを変えてもネットワ−クはおかしいままである。 レイヤ3スイッチに telnet で入って3台のマシンに ping を打つ、マシンにロッグイン して # arp -d 192.168.1.1 とやる。これでパソコン△からは正常にネットにつながるよ うになった。しかし▲からはだめだった。△のパソコンから Router に telnet もできな かったし。ともかく Router の電源を入れ直したら正常になった。その時はよく分からな かったが、192.168.1.0 ネットワ−クの範囲の装置に影響が出ていたということか。 FireWall Mail-Store NetCache PC □ □ □ △ | | | |.9 =============================================== 192.168.1.0 ‖ ‖.1 △ ▲ Cisco の ---------.1 | | Router 192.168.1.0 | |---------- 192.168.2.0 -------------■=============| L3 |---------- 192.168.3.0 192.168.4.0 .2 .1---------.1 * Summit24 のコマンド `28/01 Summit24:9 # show ipfdb Dest IP Addr TblIdx MacIdx Flag FlowInfo MAC Address VLAN Port --------------- ------ ------ ---- -------- ----------------- ---- ---- 192.168.1.2 0003.0 2S7A.0 .0000 00:xx:yy:xx:yy:zz 4095 1 192.168.2.8 0723.0 0ABF.0 .0000 00:yy:dd:sb:ff:ss 4092 7 | フル稼働しているレイヤ3スイッチの様子。たくさん Total number of entries = 200 のIPアドレスとMACアドレスが登録されている。 * 装置に同じMACアドレスを付けた場合のログ Summit24:8 # show log 04/03/2008 10:23.34 admin logged in through telnet (192.168.10.9) 04/03/2008 10:19.50 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:0a:79:33:1f:dd 04/03/2008 09:42.47 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:01:80:32:f3:26 04/03/2008 09:20.42 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:0a:79:33:1f:dd 04/03/2008 06:42.21 User admin logged out from telnet (192.168.10.9) 04/03/2008 06:27.45 admin logged in through telnet (192.168.10.9) 04/03/2008 05:42.58 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:0a:79:33:1f:dd 04/03/2008 04:43.12 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:0a:79:33:1f:dd 04/03/2008 04:15.40 ARP:arpReq: Duplicate IP address from IP/MAC=192 .168.1.9/00:0a:79:33:1f:dd * 例えば Apollo でのMACアドレス Apolloコンピュ−タが、ネットワ−ク機器の 192.168.1.10 のMACアドレスを覚えてし まっている話。具体的にはレイヤ3スイッチが2つあって、本番機と予備機で設定をごし ゃごしゃやっているという状況。 192.168.1.10 はレイヤ3スイッチのポ−トのIPアド レス。先ず予備機に telnet して設定していて、ネットワ−クケ−ブルを予備機から外し 本番機につないだ。この時 ping も反応しないということが起こった。 $ /etc/ping 192.168.1.10 << ネットワ−クケ−ブルを予備機から本番機に。 PING 192.168.1.10: 56 data bytes Timed out (1 second) waiting for echo reply $ /etc/arp -a << Apollo は予備機のMACアドレスを覚えてい ? (192.168.1.10) at 00:xx:95:xx:36:xx る。arp -a は覚えた一覧を表示する。 ? (192.168.1.20) at 00:01:xx:52:xx:99 $ /etc/arp -d 192.168.1.10 << そのMACアドレスを消してみる。root でな SIOCDARP: Not owner いと消せない。$ login root で入る。 $ /etc/ping 192.168.1.10 << MACアドレスを調べ直してアクセスできた。 PING 192.168.1.10: 56 data bytes Timed out (1 second) waiting for echo reply 64 bytes from 192.168.1.10: icmp_seq=1. time=21. ms * Cobalt Qube3 の arp コマンドのヘルプ $ telnet で入って root ユ−ザになって Cobalt Linux release 6.0 (Carmel) Kernel 2.2.16C7 on an i586 login: admin Password: You have new mail. [admin admin]$ su - Password: [root /root]# which arp /sbin/arp [root /root]# arp -help Usage: arp [-vn] [] [-i ] [-a] [] <-Display ARP cache arp [-v] [-i ] -d [pub][nopub] <-Delete ARP entry arp [-vnD] [] [-i ] -f [] <-Add entry from file arp [-v] [] [-i ] -s [temp][nopub] <-Add entry arp [-v] [] [-i ] -s [netmask ] pub <-''- arp [-v] [] [-i ] -Ds [netmask ] pub <-''- -a display (all) hosts in alternative (BSD) style -s, --set set a new ARP entry -d, --delete delete a specified entry -v, --verbose be verbose -n, --numeric dont resolve names -i, --device specify network interface (e.g. eth0) -D, --use-device read from given device -A, -p, --protocol specify protocol family -f, --file read new entries from file or from /etc/ethers =Use '-H ' to specify hardware address type. Default: ether List of possible hardware types (which support ARP): ash (Ash) ether (Ethernet) tr (16/4 Mbps Token Ring) tr (16/4 Mbps Token Ring (New)) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE) arcnet (ARCnet) dlci (Frame Relay DLCI) fddi (Fiber Distributed Data Interface) hippi (HIPPI) irda (IrLAP) (5) クラスBのネットワ−ク * クラスBのIPアドレス クラスBの有効なネットワ−クIPアドレスは 128.0.0.1〜191.255.255.254 までで、1 つのネットワ−クに登録できるホストの数は、単純計算では 2**16-2 = 65534 台となる。 1本のセグメントにホストを接続して行く場合、サブネットマスクは 255.255.0.0、16 進表記では 0xffff0000 となる。しかし実際には、そんなにたくさんのホストを1本のセ グメントにつなぐことはできない。ブロ−ドキャスト、コリジョン、ネットワ−クの帯域 と言ったことを考慮し、1セグメントにつなぐホストの台数を制限する必要がある。その ため学校なんかでは教室毎にセグメントを分ける例が多かったりする。つまり全体として はクラスBのネットワ−クアドレスでも、各セグメントはクラスC的に扱うネットワ−ク 設計をするのが普通である。ブロ−ドキャストを各セグメントに閉じて、他のセグメント に影響を与えないようにするのである。 * サブネットマスクの設定 クラスCネットワ−クにある hostA から、クラスBにある hostB に ping をかけるとし よう。クラスBネットワ−クのIPアドレスは 128.1.0.0、そしてそのままのサブネット マスクは 255.255.0.0 である。 ping はブロ−ドキャストを 128.1.0.0 全体のネットワ −クに流そうとする。 つまり 128.1.5.0, 128.1.6.0, 128.1.7.0 セグメント全部に流れ ることになる。これはちょっとまずい。ブロ−ドキャストはセグメント毎にクロ−ズさせ た方がいい。 サブネットマスクはそれぞれのセグメントで 255.255.255.0 と設定する。 □ hostA << route add net default 192.10.1.9 1 | クラスC -------------------- 192.10.1.0 netmask 255.255.255.0 |.9 hostB □ ■ Gate << route add net 128.1.0.0 128.1.5.9 1 | |.9 クラスB -------------------- 128.1.5.0 netmask 255.255.255.0 | ■ | クラスB -------------------- 128.1.6.0 netmask 255.255.255.0 | ■ | クラスB -------------------- 128.1.7.0 netmask 255.255.255.0 * おかしなクラスBネットワ−ク クラスBを使う意味のないネットワ−ク構成である。3ヵ所のセグメントで通信するため には 128.1.5.0, 128.1.6.0 のところもクラスCとして扱う羽目になる。経路設定もその ようにクラスCとして設定するのである。クラスBを使う意味というのは、幾つものセグ メントが内部にあっても外部からは、 例えばホスト Gate へ 128.1.0.0 宛にパケットを 投げれば済むということである。下の図ではどこへそのパケットを投げるのかな。投げれ ないよ。 以下 `2h/10/S 追記。かつては 128.1.0.0 というのはクラスBであるという取 り決めみたいな事があった。 しかし 128.1.0.0 でも 128.1.0.1、128.1.0.2 というよう に、ただのIPアドレスでしかない。プライベ−トIPアドレスを内部ネットワ−クに使 う分にはネットマスクで有効なIPアドレスの範囲を決める。それだけのことである。 hostA □ | クラスC --------------------------------- 192.10.1.0 netmask 255.255.255.0 |.9 | ■ ■ クラスB| 128.1.5.0 クラスB| 128.1.6.0 << netmask は 255.255.255.0。 --------------- ---------------- * 誰だ−!クラスBを付けたのは 聞いた話です。ある企業でのこと。出入りのホスト系の業者さん、支店のIPアドレスを クラスBを付けていた。パソコン10台ぐらいしかないのに。しかもパブリックIPとい う。ホスト系ネットワ−クにある支店のパソコンも、インタ−ネットやイントラネットを 使いたいということで、ホスト系業者と打ち合わせしていて判明したとのこと。2000 年頃のこと。その会社、時代の流れに合わせ、ホスト系ネットワ−クをメインフレ−ムの 独自プロトコルからIPにしたのは数年前、1997年か8年だった。国内の大手SI業 者だったらしいです。しかし他の所でもそんな感じみたい。昔はそんなにIPアドレスの ことは考えてなかった。ネットワ−ク設計という意識もあまりなかった訳で。まあクラス Bでも /24 として扱えばいいし、 パブリックIPでもアクセスしそうも無いIPアドレ スだったので、問題ないと言えば問題ない。そのままにしているそうです。