はじめに
こんにちは。Tsukasaです!
最近IPとかネットワークネタが続いていますが、今日もそんな感じです。
皆さんはグローバルIPとプライベートIPの違いはご存じでしょうか?
言葉自体を聞いたことはあっても、その違いを説明できない人も中にはいらっしゃるのではないでしょうか?
私自身も今まで何となく流してきた部分だったので、今回はその違いについて整理してみました。
IPアドレスとは
本題に入る前にもう一度IPアドレスが何なのか?ということについて触れておきたいと思います。
IPアドレスとはネットワーク上の住所です。
郵便でいう住所と同じように、通信相手を識別するために使われます。
一般的にIPアドレスと呼んでいますが、IPアドレスにはグローバルIPとプライベートIPがあります。
グローバルIPとは
グローバルIPアドレスとは、インターネット上で世界に一つだけ割り当てられるIPアドレスのことです。
例えば、自宅でインターネットへ接続するときは、このグローバルIPアドレスを使って通信します。
203.0.113.10
こういったIPがグローバルIPです。
※このIPはあくまでも例です。
プライベートIPとは
プライベートIPアドレスとは、家庭や会社などのネットワーク(LAN)内だけで使用できるIPアドレスのことです。
PC 192.168.1.10
スマホ 192.168.1.20
タブレット 192.168.1.30
上記のように端末によって割り当てられるIPが変わってきます。
これらは家庭内だけで有効であり、インターネットでは使用できません。
何が違うの?
言葉ではグローバルIPとプライベートIPが違うことはわかりましたが、何がどう違うのか見ていきたいと思います。
一言で言うのであれば、グローバルIPは外線でプライベートIPは内線という風に言えるかと思います。
電話の内線で例えてみた
電話の内線で考えてみたいと思います。
もし社員が1,000人規模の会社のAさんという方と電話でお話したいとなったらどうしますか?
まずは会社の代表番号(グローバルIP)に電話をすると思います。
そうすると電話を取った方に「Aさんと代わってください」とお願いします。
電話を取った人はAさんの内線番号(プライベートIP)にかけて電話が来た旨を伝えます。
この例えがグローバルIPとプライベートIPでも言えると思います。
自宅でネットに繋ぎたい時はその家で使っているグローバルIP(家の電話番号)があります。
皆さんも自宅でスマホ、パソコン、タブレット等を使っているのではないでしょうか?
因みに私は自宅のテレビにもネットを接続してYoutubeやNetflixをテレビで見れるようにしています。
それぞれの端末に使用できるIPアドレスがプライベートIP(内線)なのです。
歴史的にひも解く
ここでこの違いをより理解できるように歴史的背景を見ていきたいと思います。
1. IPv4の誕生
1980年代に現在も広く利用されているIPv4が標準化されました。
IPv4は32ビットでIPアドレスを表現します。
2³² = 約43億個
当時は、インターネット利用者は少なく、パソコンも限られているという時代だったため、
約43億個あれば十分と考えられていました。
2. インターネットに接続する機器にはグローバルIPを割り当てていた
当初は、インターネットへ接続する機器に対して、グローバルIPアドレスを直接割り当てる運用が一般的でした。
3. インターネットが急速に普及
1990年代以降、インターネットは急速に普及しました。
例えば、
家庭用PC
ノートPC
スマートフォン
タブレット
IoT機器
ゲーム機
など、インターネットへ接続する機器が爆発的に増えていきます。
そのため、すべての機器にグローバルIPアドレスを割り当てることが難しくなるという問題が発生しました。
よってIPアドレスが枯渇するという問題が発生しました。
- プライベートIPアドレスの導入
この問題への対策の一つとして、LAN内だけで利用するプライベートIPアドレスが定義されました。
代表的な範囲は次の3つです。
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
例えば家庭内では、
PC 192.168.1.10
スマホ 192.168.1.20
プリンタ 192.168.1.30
のように利用します。
プライベートIPアドレスはLAN内だけで有効なため、世界中の家庭で同じアドレスを利用していても問題ありません。
- NATの登場
しかし、プライベートIPアドレスだけではインターネットへ接続できません。
そこで登場したのが**NAT(Network Address Translation)**です。
家庭用ルーターが、
192.168.1.10
↓
203.0.113.10
のように、プライベートIPアドレスをグローバルIPアドレスへ変換します。
その結果、
PC
スマホ
ゲーム機
タブレット
↓
グローバルIP 1個
という構成でインターネットを利用できるようになりました。
これにより、限られたグローバルIPアドレスを効率よく利用できるようになりました。
- 現在の家庭内ネットワーク
現在の家庭では、次のような構成が一般的です。
インターネット
│
ONU
│
┌─────────────┐
│ Wi-Fiルーター │
│ NAT │
└─────────────┘
WAN側:グローバルIP
LAN側:192.168.1.1
│
┌───────────┴───────────┐
│ │
PC スマホ
192.168.1.10 192.168.1.20
ルーターは、
WAN側ではグローバルIPアドレス
LAN側ではプライベートIPアドレス
を扱い、両者をNATで橋渡ししています。
NATとNAPT(ポート変換)の違い
一歩踏み込んだ豆知識として、実は私たちが普段「NAT」と呼んでいる技術の多くは、正確には**NAPT(IP Masquerade)**です。
- NAT: IPアドレスを「1対1」で変換する技術
- NAPT: IPアドレスに加え「ポート番号」も使って「多対1」で変換する技術
スマホとPCが同時に同じWebサイトを見られるのは、ルーターが「ポート番号」を使って「PCからの通信」「スマホからの通信」を識別してくれているおかげです。
よくあるトラブル
実際に開発やインフラ構築をする際にハマりがちなポイントをまとめました。
-
「localhostでしかアクセスできない」問題
- 自分のPC上(
127.0.0.1やlocalhost)で動かしたWebアプリは、同じWi-Fi内のスマホからは見えません。スマホから見る時はPCの「プライベートIP」を指定する必要があります。
- 自分のPC上(
-
社内サーバーに外から繋がらない
- プライベートIP(
192.168.x.x)はインターネット上をルーティングされません。外部から接続したい場合は、VPNを使うか、ルーターでポートフォワーディング(静的NAT)を設定する必要があります。
- プライベートIP(
-
AWSなどのクラウド構築での落とし穴
- AWSのEC2インスタンスなどを立てる際、「Public IP(グローバル)」と「Private IP」の概念はそのまま登場します。DBサーバーなどは安全のためにPrivate Subnet(プライベートIPのみ)に配置するのが定石です。
IPv6という根本解決策(補足)
「アドレスが足りないなら増やせばいいじゃない」ということで生まれたのがIPv6です。
- IPv4: 32ビット(約43億個) $\rightarrow$ 枯渇した
- IPv6: 128ビット(約3.4×10³⁸個 = ほぼ無限)
IPv6が完全に普及すれば、すべての機器にグローバルIPを割り当てられる時代が来ます。しかし、IPv4の資産が大きすぎるため、現在もプライベートIP+NAT(IPv4)の仕組みが主流として使われ続けています。
まとめ
- グローバルIP:インターネット上の「世界の住所(外線)」
- プライベートIP:社内・家庭内の「ローカルな番号(内線)」
- NAT/NAPT:この2つを橋渡しして、少ないグローバルIPをみんなで節約して使う技術
IPアドレスの仕組みを知っておくと、ネットワークエラーの調査やクラウド構築(AWSなど)の理解度が格段に上がると思います!
最後まで読んでいただきありがとうございました!