フリーキーズ | 独学プログラミング

NATとポートフォワーディングの仕組みを初心者にわかりやすく解説!ネットワークの基礎知識

リンドくん

リンドくん

たなべ先生、自宅でサーバを立てようとしたら「ポートフォワーディング」って設定が必要だって言われたんですけど、これって何ですか?

たなべ

たなべ

ポートフォワーディングはインターネットから家の中のサーバにアクセスできるようにする仕組みなんだ。
でもその前に、まず「NAT」という技術を理解する必要があるよ。

プログラミング学習でお悩みの方へ

HackATAは、エンジニアを目指す方のためのプログラミング学習コーチングサービスです。 経験豊富な現役エンジニアがあなたの学習をサポートします。

✓ 質問し放題

✓ β版公開中(2025年内の特別割引)

HackATAの詳細を見る

インターネット接続の裏側で働く技術

インターネットを使っているとき、自分のパソコンやスマートフォンがどうやって外部のサーバと通信しているか、考えたことはありますか?

実は、家庭内のネットワークと外部のインターネットの間には、ルーターという機器が存在し、そこで「NAT(ナット)」という重要な仕組みが働いています。この仕組みがなければ、私たちが快適にインターネットを使うことはできません。

そして、自宅でWebサーバやゲームサーバを公開したい場合には、ポートフォワーディングという設定が必要になります。

この記事では、ネットワーク初心者の方でも理解できるよう、NATとポートフォワーディングの仕組みを丁寧に解説していきます。

NATとは何か?ネットワークアドレス変換の基本

リンドくん

リンドくん

NATって「ナット」って読むんですか?何の略なんでしょう?

たなべ

たなべ

そう、「ナット」だよ。Network Address Translation(ネットワークアドレス変換)の略なんだ。
簡単に言うと、家の中のIPアドレスと外のIPアドレスを変換してくれる仕組みだよ。

NATが必要な理由

インターネット上で通信するためには、IPアドレスという住所のようなものが必要です。しかし、世界中のすべての機器に固有のIPアドレスを割り当てるのは現実的ではありません。

そこで登場するのがプライベートIPアドレスグローバルIPアドレスの概念です。

  • プライベートIPアドレス - 家庭内やオフィス内など、ローカルネットワークでのみ使用されるIPアドレス
    • 例: 192.168.1.x10.0.0.xなど
  • グローバルIPアドレス - インターネット上で一意に識別される、世界で1つだけのIPアドレス
    • 例: 203.0.113.45など

家の中では複数の機器(パソコン、スマートフォン、タブレットなど)がそれぞれプライベートIPアドレスを持っています。しかし、インターネットに出るときは、家全体で1つのグローバルIPアドレスを共有します。

この「プライベートIPアドレス」と「グローバルIPアドレス」の変換を行うのがNATなのです。

NATの動作イメージ

NATの仕組みを郵便配達に例えてみましょう。

あなたの家(グローバルIPアドレス: 東京都〇〇区××町1-2-3)には、家族が3人住んでいます。

  • お父さん(プライベートIP: 192.168.1.10)
  • お母さん(プライベートIP: 192.168.1.11)
  • あなた(プライベートIP: 192.168.1.12)

外部にハガキを送るとき、差出人欄には「東京都〇〇区××町1-2-3」と書きますよね。家の中の誰が送ったかは、外部からは分かりません。

返信のハガキが届いたとき、郵便配達員は「東京都〇〇区××町1-2-3」まで届けてくれます。その後、家の中で誰宛かを判断して、正しい人に渡すのです。

NATはまさにこの仕組みと同じです。

  • 送信時 → プライベートIPアドレスをグローバルIPアドレスに変換
  • 受信時 → グローバルIPアドレスをプライベートIPアドレスに変換

これにより、限られた数のグローバルIPアドレスで、世界中の多くの機器がインターネットに接続できるのです。

NATの種類

NATにはいくつかの種類があります。

スタティックNAT

1対1でプライベートIPとグローバルIPを対応させる方式です。企業のサーバなど、常に同じグローバルIPで外部からアクセスされる必要がある場合に使用します。

ダイナミックNAT

複数のグローバルIPアドレスのプールから、動的にIPアドレスを割り当てる方式です。

NAPT(PAT)

最も一般的な方式で、家庭用ルーターで使われているのがこれです。1つのグローバルIPアドレスを複数の内部機器で共有します。

この方式では、IPアドレスだけでなくポート番号も変換することで、複数の機器を識別します。次のセクションで、このポート番号について詳しく見ていきましょう。

ポート番号の役割とは

リンドくん

リンドくん

ポート番号って何ですか?IPアドレスだけじゃダメなんですか?

たなべ

たなべ

IPアドレスが「住所」だとすると、ポート番号は「部屋番号」のようなものなんだ。
同じ住所(IPアドレス)でも、どの部屋(サービス)に届けるかを指定するために必要なんだよ。

ポート番号の基本概念

ポート番号は、0から65535までの数値で、通信の種類やサービスを識別するために使用されます。

例えば、あなたのパソコンでは同時に以下のようなことができますよね。

  • Webブラウザでサイトを閲覧(HTTPやHTTPS)
  • メールの送受信
  • オンラインゲームのプレイ
  • ファイルのダウンロード

これらはすべて、同じIPアドレスを持つ同じパソコンで動作していますが、それぞれ異なるポート番号を使用することで、データが正しいアプリケーションに届くようになっています。

代表的なポート番号

いくつかのサービスには、Well-known Port(ウェルノウンポート)と呼ばれる標準的なポート番号が決まっています。

  • HTTP(Webサイト) - ポート80
  • HTTPS(暗号化されたWebサイト) - ポート443
  • SSH(リモートログイン) - ポート22
  • FTP(ファイル転送) - ポート21
  • メール送信(SMTP) - ポート25
  • メール受信(POP3) - ポート110

例えば、ブラウザでhttps://example.comにアクセスすると、実際にはhttps://example.com:443というように、暗黙的にポート443が使用されています。

NATとポート番号の組み合わせ

家庭用ルーターでは、NATとポート番号を組み合わせて、複数の機器を識別しています。

例えば、家の中に2台のパソコンがあり、どちらも同じWebサイトにアクセスしている場合を考えてみましょう。

パソコンA

  • プライベートIP: 192.168.1.10
  • 使用ポート: 50001

パソコンB

  • プライベートIP: 192.168.1.11
  • 使用ポート: 50002

ルーターは、これらの情報を記録しておき、外部サーバから返信が来たときに、正しいパソコンにデータを届けることができます。

この仕組みをNAPT(Network Address Port Translation)またはPAT(Port Address Translation)と呼びます。

ポートフォワーディングとは何か

リンドくん

リンドくん

ここまでは理解できました!でも、自宅のサーバを公開するには、なぜポートフォワーディングが必要なんですか?

たなべ

たなべ

通常のNATは内部から外部への通信を前提としているんだ。でも、サーバを公開するときは、外部から内部への通信を受け付ける必要があるよね。
それを可能にするのがポートフォワーディングなんだよ。

ポートフォワーディングが必要な理由

通常、家庭用ルーターのNATは以下のように動作します。

  1. 内部の機器が外部に通信を開始する
  2. ルーターがその通信を記録する
  3. 外部からの返信を、記録に基づいて正しい内部機器に転送する

しかし、この仕組みでは外部から突然届く通信を処理できません。なぜなら、ルーターはどの内部機器に転送すればよいか分からないからです。

例えば、自宅にWebサーバを立てて、外部の友人にアクセスしてもらいたい場合、友人のパソコンから突然あなたの家のルーターにアクセスが来ることになります。
ルーターは「この通信をどのパソコンに届けるべきか?」が分からず、通信を破棄してしまいます。

そこで、あらかじめルーターに「特定のポート番号に来た通信は、特定の内部機器に転送する」というルールを設定します。これがポートフォワーディングです。

ポートフォワーディングの設定例

実際の設定を例で見てみましょう。

あなたの家のネットワーク環境が以下だとします。

  • グローバルIP → 203.0.113.45
  • ルーターのプライベートIP → 192.168.1.1
  • サーバ用パソコンのプライベートIP → 192.168.1.100

このパソコンでWebサーバ(ポート80)を公開したい場合、ルーターに以下のようなルールを設定します。

外部からポート80への接続 → 192.168.1.100のポート80に転送

この設定により、外部の人がhttp://203.0.113.45にアクセスすると、ルーターが自動的に内部の192.168.1.100にあるWebサーバに転送してくれます。

ポートフォワーディングの種類

ポートフォワーディングには、いくつかのパターンがあります。

同じポート番号での転送

外部ポート80 → 内部192.168.1.100のポート80

最もシンプルな形です。外部から見えるポート番号と、内部で実際に使用しているポート番号が同じです。

異なるポート番号での転送

外部ポート8080 → 内部192.168.1.100のポート80

セキュリティ上の理由や、複数のサーバを公開する場合に使用します。外部からは8080番ポートでアクセスしますが、内部では80番ポートで受け取ります。

複数サービスの公開

外部ポート80 → 内部192.168.1.100のポート80(Webサーバ)
外部ポート443 → 内部192.168.1.100のポート443(HTTPS)
外部ポート22 → 内部192.168.1.101のポート22(SSH)

このように、複数のポートを異なる内部機器に転送することで、複数のサーバを同時に公開できます。

ルーター設定手順

リンドくん

リンドくん

実際にはどうやって設定するんですか?難しそう...

たなべ

たなべ

メーカーによって画面は違うけど、基本的な流れは同じだよ。
一緒に見ていこうか。

設定前の準備

ポートフォワーディングを設定する前に、以下の情報を確認しておきましょう。

  1. ルーターの管理画面へのアクセス方法

    • 通常は192.168.1.1192.168.0.1にアクセス
    • ルーターのマニュアルで確認
  2. サーバにする機器のIPアドレス

    • 固定IPアドレスにしておくことを推奨
    • Windowsならコマンドプロンプトでipconfigコマンド
    • MacやLinuxならターミナルでifconfigコマンド
  3. 公開したいサービスのポート番号

    • Webサーバなら80や443
    • SSHなら22
    • 自作アプリなら使用しているポート番号

一般的な設定手順

多くのルーターでは、以下のような手順で設定します。

ステップ1. ルーターの管理画面にアクセス

ブラウザを開き、ルーターのIPアドレス(例: 192.168.1.1)を入力します。ログイン画面が表示されたら、ユーザー名とパスワードを入力します。

ステップ2. ポートフォワーディング設定画面を開く

メニューから「ポートフォワーディング」「仮想サーバ」「NAT設定」などの項目を探します。メーカーによって名称が異なります。

ステップ3. 新しいルールを追加

以下の情報を入力します。

  • サービス名 → 分かりやすい名前(例: Web Server)
  • 外部ポート → 外部からアクセスされるポート番号
  • 内部IPアドレス → 転送先の機器のプライベートIP
  • 内部ポート → 転送先のポート番号
  • プロトコル → TCP、UDP、または両方

ステップ4. 設定を保存して再起動

設定を保存し、必要に応じてルーターを再起動します。

設定の確認方法

設定が正しく動作しているか確認するには、以下の方法があります。

内部ネットワークからのテスト

まず、同じネットワーク内の別の機器から、プライベートIPアドレスでアクセスできるか確認します。

http://192.168.1.100

外部ネットワークからのテスト

スマートフォンのモバイルデータ通信を使って、グローバルIPアドレスでアクセスしてみます。

http://203.0.113.45

または、外部のポートチェックサービス(例: canyouseeme.orgなど)を使って、ポートが開いているか確認できます。

セキュリティ上の注意点

リンドくん

リンドくん

ポートフォワーディングで外部からアクセスできるようになると、セキュリティは大丈夫なんですか?

たなべ

たなべ

とても大切な質問だね!
ポートを開くということは、家の玄関に鍵をかけずに開けっ放しにするようなものなんだ。だから、適切なセキュリティ対策が必須だよ。

基本的なセキュリティ対策

ポートフォワーディングを設定する際は、以下のセキュリティ対策を必ず実施しましょう。

必要最小限のポートのみを開く

公開する必要のないサービスのポートは開かないようにしましょう。
例えば、Webサーバだけを公開するなら、ポート80や443のみを開き、SSH(ポート22)などは開かないようにします。

強固なパスワード設定

サービスにログイン機能がある場合、必ず強力なパスワードを設定してください。

  • 12文字以上
  • 大文字、小文字、数字、記号の組み合わせ
  • 辞書にある単語を避ける

ファイアウォールの活用

サーバにするパソコンには、ファイアウォールソフトウェアを導入し、必要なポートのみを許可する設定にしましょう。

定期的なソフトウェア更新

Webサーバソフトウェアやオペレーティングシステムは、セキュリティパッチが公開されたら速やかに適用しましょう。

標準ポート番号を避ける

可能であれば、標準的なポート番号(80、22など)ではなく、独自のポート番号を使用することで、自動化された攻撃を回避できる場合があります。

外部ポート8080 → 内部ポート80
外部ポート2222 → 内部ポート22

ただし、これは「セキュリティの多層化」の一環であり、これだけで安全になるわけではありません。

知っておくべきリスク

ポートフォワーディングを設定すると、以下のようなリスクが発生します。

  • 不正アクセスの試行 → 世界中から自動的にポートスキャンされる可能性
  • DDoS攻撃の標的 → 大量のアクセスでサービスが停止する可能性
  • 脆弱性の悪用 → ソフトウェアの脆弱性を突かれる可能性

これらのリスクを理解した上で、適切な対策を講じることが重要です。

まとめ

リンドくん

リンドくん

NATとポートフォワーディング、なんとなく理解できました!思ったより複雑なんですね。

たなべ

たなべ

そうだね。でも、この仕組みを理解しておくと、ネットワークトラブルの解決やサーバ構築で大いに役立つよ。
最初は難しく感じるかもしれないけど、実際に設定してみることで理解が深まるから、ぜひ試してみてね!

今回は、NATとポートフォワーディングの仕組みについて解説しました。

これらの技術は、現代のインターネット通信を支える基盤となっています。
ネットワークエンジニアを目指す方はもちろん、Web開発やゲーム開発を行う方にとっても、理解しておくべき重要な知識です。

ネットワークの世界は奥深いですが、一歩ずつ学んでいけば必ず理解できます。
今回学んだ知識を土台に、さらなるスキルアップを目指していきましょう!

この記事をシェア

関連するコンテンツ