概要
サーバの話をする前にIPネットワークについておさらいしておきましょう。「IP」とはInternet Protocolの頭文字を取ったものです。TCP(Transmission Control Protocol)と対にして「TCP/IP」と呼ばれることもあります。TCPはIPの上位のプロトコルで、欠損パケットのチェックや再送などを行います。TCPとは別にデータのチェックを行わない(その分高速な)UDPというプロトコルや、制御通知(pingなど)に使われるICMPというプロトコルもあります。IPv4とIPv6
IPネットワークにはIPv4とIPv6の2種類があります。IPv4ネットワークは、アドレスが足りなくなりつつあり、将来はIPv6が普及すると見られていますが、いまだにIPv6に対応していないプロバイダが多く、現状ではIPv4が主流です。ここではIPv4について説明します。IPアドレス
IPアドレスは24ビットの整数ですが、一般には8ビット毎にドット(.)で区切った10進数で表記します。たとえば、16進数で11223344のアドレスはは17.34.51.68と表記されます。2進数 | 00010001 | 00100010 | 00110011 | 01000100 |
16進数 | 11 | 22 | 33 | 44 |
10進数 | 17 | 34 | 51 | 68 |
ポート
1台のコンピュータが、さまざまなネットワーク機能を同時に利用するために、0〜65535の番号をそれぞれの機能に割り当てます。これをポート番号と呼びます。サーバ機能は外部のコンピュータからのアクセスを待ち受けるため、多くの場合は固定されたポート番号が割り当てられます。メールサーバは25番、ウェブサーバは80番といったように、デファクトスタンダードになっているポートもあります。サーバにアクセスするクライアント(ウェブアクセスであればブラウザ)は複数のポートを同時に使うこともあるので、49152番より上の空いているポートを使用することになっています。TCP/20 | FTP (データ) |
TCP/21 | FTP (制御) |
TCP/22 | SSH |
TCP/23 | Telnet |
TCP/25 | SMTP |
UDP/53 | DNS |
UDP/67 | DHCP(サーバ) |
UDP/68 | DHCP(クライアント) |
TCP/80 | HTTP |
TCP/110 | POP3 |
TCP/119 | NNTP |
UDP/123 | NTP |
UDP/137〜138 | NetBIOS |
TCP/139 | NetBIOS |
TCP/143 | IMAP |
TCP/443 | HTTPS |
TCP/445 | ダイレクトホスティングSMBサービス |
TCP/587 | Submission(メール送信) |
IPアドレスとポートを同時に表す場合は、コロンで区切って表記します。例えば、IPアドレスが17.34.51.68でポートが80番の場合は17.34.51.68:80のように書きます。
サブネットマスク
いくつかのIPアドレスを1つのグループとして扱うための仕組みがサブネットです。たとえば、連続した8個のIPアドレスを1つのグループとしてサブネットを構成するとします。たとえば次のようなサブネットを考えてみましょう。00010001 00100010 00110011 01000000 | 11.22.33.40 |
00010001 00100010 00110011 01000001 | 11.22.33.41 |
00010001 00100010 00110011 01000010 | 11.22.33.42 |
00010001 00100010 00110011 01000011 | 11.22.33.43 |
00010001 00100010 00110011 01000100 | 11.22.33.44 |
00010001 00100010 00110011 01000101 | 11.22.33.45 |
00010001 00100010 00110011 01000110 | 11.22.33.46 |
00010001 00100010 00110011 01000111 | 11.22.33.47 |
サブネットの構成を表すために、共通部分のビットを1、異なる部分のビットを0とした値を用います。これをサブネットマスクと呼びます。上のサブネットの場合は次のようなサブネットマスクになります。
11111111 11111111 11111111 11111000 | 255.255.255.248 |
サブネットに複数のIPアドレスが含まれる場合、先頭のアドレスと末尾のアドレスは実際の機器に割り当てることができません。先頭のアドレス(上のサブネット場合は11.22.33.40)はサブネット全体を代表する「ネットワークアドレス」として使われます。また末尾のアドレス(上のサブネット場合は11.22.33.47)はサブネット上の全ての機器が関わる通信に用いられる「ブロードキャストアドレス」となります。
プライベート・アドレスとグローバル・アドレス
IP通信のパケットには宛先のIPアドレスが書き込まれていて、そのアドレスを元に相手のコンピュータにデータが届けられます。そのため、インターネット上で任意の2つのコンピュータが正しく通信を行うためには、それぞれのコンピュータが固有のIPアドレスを持っている必要があります。インターネット上では個々のユーザーが自分で勝手に決めたIPアドレスを使うことはできません。世界中のコンピュータに重複しないようにIPアドレスを割り当てるために、ICANNという国際組織が各国ごとにIPアドレスを割り当て、各国のIPアドレス管理組織(日本ではJPNIC)がインターネットサービスプロバイダ(ISP)にIPアドレスを割り当て、ISPがユーザーにIPアドレスを割り当てるようになっています。このように、世界中で重複しないように管理されているIPアドレスを「グローバルIPアドレス」と呼びます。家庭用のプロバイダ契約ではIPアドレスが1つしか割り当てられない場合が多く、そのままでは1台のコンピュータしかネットワークに接続することができません。この問題に対処するために、ローカルネットワーク(LAN)の中だけで使える特別なサブネットが決められています。このサブネットに含まれるIPアドレスを「プライベートIPアドレス」と呼びます。ユーザーは次のサブネットに含まれるプライベートIPアドレスをLANの中で自由に使うことができます。
10.0.0.0〜10.255.255.255 |
172.16.0.0〜172.31.255.255 |
192.168.0.0〜192.168.255.255 |
小規模なLANでよく使われるサブネットが192.168.0.0〜192.168.0.255です。私が自宅でBフレッツを契約したときにレンタルで設置されたルータ(RV-S340NE)は、デフォルトで192.168.1.0〜192.168.1.255を使うようになっていました。
DHCP(IPアドレスの自動取得)
DHCP(Dynamic Host Configuration Protocol)はネットワーク機器に対してIPアドレスやサブネットマスクなどの情報を自動的に設定するしくみです。自動取得に設定されているコンピュータは、ネットワークに接続したときにDHCPサーバに情報を要求します。ブロードバンドルータのほとんどにはDHCPサーバの機能が内蔵されているので、一般家庭ではこの機能を使っている場合が多いでしょう。ただし、DHCPによって割り当てられるIPアドレスは(特に設定をしなければ)常に同じものである保証はなく、コンピュータをサーバとして使う場合には不便です。通常、サーバとして使うコンピュータはIPアドレスを自動取得にせず、固定のIPアドレスを設定します。DHCPサーバーがこのIPアドレスを別のコンピュータに割り当ててしまわないように、固定で使用するIPアドレスはDHCPサーバのスコープ(自動取得で割り当てられるIPアドレスの範囲)から外しておきます。
たとえば、DHCPサーバーのスコープを192.168.1.100〜192.168.1.199と設定しておけば、192.168.1.10などのIPアドレスを固定的にサーバに割り当てることができます。
ネットワークアドレス変換(NAT)
プライベートアドレスを使用している場合、ローカルネットワーク(LAN)側からインターネット(WAN)側にアクセスするには、ルーターを経由する際にプライベートIPアドレスからグローバルIPアドレスへの変換を行う必要があります。この変換をNAT(Network Address Translation)といいます。ほとんどのブロードバンドルータにはNAT機能が搭載されています。NAT機能はIPマスカレードと呼ばれることもあります。たとえば、LAN側にコンピュータAとBの2台があり、それぞれ192.168.0.2と192.168.0.3のプライベートIPアドレスが割り当られていたとします。また、ルーターのインターネット(WAN)側にはISPから203.191.253.79というIPアドレスが割り当てられていたとします。

LANとWAN
コンピュータAがインターネット上のサーバCにパケットを送信する場合、宛先アドレスに相手のIPアドレスを指定し、相手がウェブサーバの場合は一般に80番のポートを指定します。また、送信元アドレスには自分のIPアドレスをセットし、49152番より上の空いているポート(たとえば50001)を使用します。
送信元(変換前) | 宛先 |
192.168.0.2:50001 | 210.224.163.232:80 |
このパケットはルータを経由してインターネット側へ転送されますが、その際にパケットの送信元アドレスがルータによってコンピュータAのプライベートIPアドレス(192.168.0.2)からルータのグローバルIPアドレス(203.191.253.79)に書き換えられます。同時に、送信元のポートもコンピュータAが指定したポート(50001)からルータの持っている空きポート(例えば60001)に変換されます。
送信元(変換後) | 宛先 |
203.191.253.79:60001 | 210.224.163.232:80 |
同時に変換前と変換後のIPアドレスとポートを対応表に登録します。この対応表をNATテーブルと呼びます。
送信元(変換前) | 送信元(変換後) |
192.168.0.2:50001 | 203.191.253.79:60001 |
ルータは、複数のコンピュータやアプリケーションからインターネットへのアクセスを同時に処理するため、このテーブルには複数のデータが登録されている状態になっているのが一般的です。
変換前 | 変換後 |
192.168.0.2:50001 | 203.191.253.79:60001 |
192.168.0.3:55001 | 203.191.253.79:60002 |
192.168.0.2:50002 | 203.191.253.79:60003 |
192.168.0.3:55002 | 203.191.253.79:60004 |
192.168.0.2:50003 | 203.191.253.79:60005 |
パケットがルータを経由してインターネットのサーバへ送られると、サーバから処理の結果が返ってきます。このとき、パケットの送信元にサーバCのIPアドレスとポート(210.224.163.232:80)宛先にルータのIPアドレスとポート(203.191.253.79:60001)が指定されています。
送信元 | 宛先 |
210.224.163.232:80 | 203.191.253.79:60001 |
ルータがこのパケットを受信すると、NATテーブルを参照してIPアドレス(グローバル)とポートをコンピュータAのIPアドレス(プライベート)とポートに変換します。
宛先(変換前) | 宛先(変換後) |
203.191.253.79:60001 | 192.168.0.2:50001 |
このような変換によってルータに割り当てられた1つのグローバルIPアドレスをLAN側の複数のコンピュータで共有し、インターネット側のサーバに同時にアクセスすることができるわけです。
スタティックNAT
通常のNATはLAN側のコンピュータがWAN側のサーバへアクセスするために使われます。これとは逆に、WAN側のコンピュータがLAN側に置かれたサーバへアクセスするためにもNATを使うことができます。この場合は、ルータのグローバルIPアドレス(WAN側)の特定のポートに送信されたパケットを、LAN内で固定されたIPを持つ特定のコンピュータの特定のポートに転送します。たとえば、次のようなケースを考えてみましょう。
スタティックNAT
このようにルータのグローバルIPアドレス203.191.253.79の80番ポートに送信されたパケットをLAN内のサーバ(192.168.0.5)の8080番ポートに転送するように設定すれば、LAN内のサーバで稼動するTomcatにインターネットからアクセスすることができます。これをスタティック(静的)NATといいます。
投稿:竹形 誠司[takegata]/2009年 03月 20日 05時 09分
/更新:2009年 03月 28日 01時 03分