最終更新
リンドくん
たなべ先生、自宅でサーバを立てようとしたら「ポートフォワーディング」って設定が必要だって言われたんですけど、これって何ですか?
たなべ
ポートフォワーディングはインターネットから家の中のサーバにアクセスできるようにする仕組みなんだ。
でもその前に、まず「NAT」という技術を理解する必要があるよ。
HackATAは、エンジニアを目指す方のためのプログラミング学習コーチングサービスです。 経験豊富な現役エンジニアがあなたの学習をサポートします。
✓ 質問し放題
✓ β版公開中(2025年内の特別割引)
インターネットを使っているとき、自分のパソコンやスマートフォンがどうやって外部のサーバと通信しているか、考えたことはありますか?
実は、家庭内のネットワークと外部のインターネットの間には、ルーターという機器が存在し、そこで「NAT(ナット)」という重要な仕組みが働いています。この仕組みがなければ、私たちが快適にインターネットを使うことはできません。
そして、自宅でWebサーバやゲームサーバを公開したい場合には、ポートフォワーディングという設定が必要になります。
この記事では、ネットワーク初心者の方でも理解できるよう、NATとポートフォワーディングの仕組みを丁寧に解説していきます。
リンドくん
NATって「ナット」って読むんですか?何の略なんでしょう?
たなべ
そう、「ナット」だよ。Network Address Translation(ネットワークアドレス変換)の略なんだ。
簡単に言うと、家の中のIPアドレスと外のIPアドレスを変換してくれる仕組みだよ。
インターネット上で通信するためには、IPアドレスという住所のようなものが必要です。しかし、世界中のすべての機器に固有のIPアドレスを割り当てるのは現実的ではありません。
そこで登場するのがプライベートIPアドレスとグローバルIPアドレスの概念です。
192.168.1.x、10.0.0.xなど203.0.113.45など家の中では複数の機器(パソコン、スマートフォン、タブレットなど)がそれぞれプライベートIPアドレスを持っています。しかし、インターネットに出るときは、家全体で1つのグローバルIPアドレスを共有します。
この「プライベートIPアドレス」と「グローバルIPアドレス」の変換を行うのがNATなのです。
NATの仕組みを郵便配達に例えてみましょう。
あなたの家(グローバルIPアドレス: 東京都〇〇区××町1-2-3)には、家族が3人住んでいます。
外部にハガキを送るとき、差出人欄には「東京都〇〇区××町1-2-3」と書きますよね。家の中の誰が送ったかは、外部からは分かりません。
返信のハガキが届いたとき、郵便配達員は「東京都〇〇区××町1-2-3」まで届けてくれます。その後、家の中で誰宛かを判断して、正しい人に渡すのです。
NATはまさにこの仕組みと同じです。
これにより、限られた数のグローバルIPアドレスで、世界中の多くの機器がインターネットに接続できるのです。
NATにはいくつかの種類があります。
1対1でプライベートIPとグローバルIPを対応させる方式です。企業のサーバなど、常に同じグローバルIPで外部からアクセスされる必要がある場合に使用します。
複数のグローバルIPアドレスのプールから、動的にIPアドレスを割り当てる方式です。
最も一般的な方式で、家庭用ルーターで使われているのがこれです。1つのグローバルIPアドレスを複数の内部機器で共有します。
この方式では、IPアドレスだけでなくポート番号も変換することで、複数の機器を識別します。次のセクションで、このポート番号について詳しく見ていきましょう。
リンドくん
ポート番号って何ですか?IPアドレスだけじゃダメなんですか?
たなべ
IPアドレスが「住所」だとすると、ポート番号は「部屋番号」のようなものなんだ。
同じ住所(IPアドレス)でも、どの部屋(サービス)に届けるかを指定するために必要なんだよ。
ポート番号は、0から65535までの数値で、通信の種類やサービスを識別するために使用されます。
例えば、あなたのパソコンでは同時に以下のようなことができますよね。
これらはすべて、同じIPアドレスを持つ同じパソコンで動作していますが、それぞれ異なるポート番号を使用することで、データが正しいアプリケーションに届くようになっています。
いくつかのサービスには、Well-known Port(ウェルノウンポート)と呼ばれる標準的なポート番号が決まっています。
例えば、ブラウザでhttps://example.comにアクセスすると、実際にはhttps://example.com:443というように、暗黙的にポート443が使用されています。
家庭用ルーターでは、NATとポート番号を組み合わせて、複数の機器を識別しています。
例えば、家の中に2台のパソコンがあり、どちらも同じWebサイトにアクセスしている場合を考えてみましょう。
パソコンA
パソコンB
ルーターは、これらの情報を記録しておき、外部サーバから返信が来たときに、正しいパソコンにデータを届けることができます。
この仕組みをNAPT(Network Address Port Translation)またはPAT(Port Address Translation)と呼びます。
リンドくん
ここまでは理解できました!でも、自宅のサーバを公開するには、なぜポートフォワーディングが必要なんですか?
たなべ
通常のNATは内部から外部への通信を前提としているんだ。でも、サーバを公開するときは、外部から内部への通信を受け付ける必要があるよね。
それを可能にするのがポートフォワーディングなんだよ。
通常、家庭用ルーターのNATは以下のように動作します。
しかし、この仕組みでは外部から突然届く通信を処理できません。なぜなら、ルーターはどの内部機器に転送すればよいか分からないからです。
例えば、自宅にWebサーバを立てて、外部の友人にアクセスしてもらいたい場合、友人のパソコンから突然あなたの家のルーターにアクセスが来ることになります。
ルーターは「この通信をどのパソコンに届けるべきか?」が分からず、通信を破棄してしまいます。
そこで、あらかじめルーターに「特定のポート番号に来た通信は、特定の内部機器に転送する」というルールを設定します。これがポートフォワーディングです。
実際の設定を例で見てみましょう。
あなたの家のネットワーク環境が以下だとします。
このパソコンでWebサーバ(ポート80)を公開したい場合、ルーターに以下のようなルールを設定します。
この設定により、外部の人がhttp://203.0.113.45にアクセスすると、ルーターが自動的に内部の192.168.1.100にあるWebサーバに転送してくれます。
ポートフォワーディングには、いくつかのパターンがあります。
最もシンプルな形です。外部から見えるポート番号と、内部で実際に使用しているポート番号が同じです。
セキュリティ上の理由や、複数のサーバを公開する場合に使用します。外部からは8080番ポートでアクセスしますが、内部では80番ポートで受け取ります。
このように、複数のポートを異なる内部機器に転送することで、複数のサーバを同時に公開できます。
リンドくん
実際にはどうやって設定するんですか?難しそう...
たなべ
メーカーによって画面は違うけど、基本的な流れは同じだよ。
一緒に見ていこうか。
ポートフォワーディングを設定する前に、以下の情報を確認しておきましょう。
ルーターの管理画面へのアクセス方法
192.168.1.1や192.168.0.1にアクセスサーバにする機器のIPアドレス
公開したいサービスのポート番号
多くのルーターでは、以下のような手順で設定します。
ブラウザを開き、ルーターのIPアドレス(例: 192.168.1.1)を入力します。ログイン画面が表示されたら、ユーザー名とパスワードを入力します。
メニューから「ポートフォワーディング」「仮想サーバ」「NAT設定」などの項目を探します。メーカーによって名称が異なります。
以下の情報を入力します。
設定を保存し、必要に応じてルーターを再起動します。
設定が正しく動作しているか確認するには、以下の方法があります。
内部ネットワークからのテスト
まず、同じネットワーク内の別の機器から、プライベートIPアドレスでアクセスできるか確認します。
外部ネットワークからのテスト
スマートフォンのモバイルデータ通信を使って、グローバルIPアドレスでアクセスしてみます。
または、外部のポートチェックサービス(例: canyouseeme.orgなど)を使って、ポートが開いているか確認できます。
リンドくん
ポートフォワーディングで外部からアクセスできるようになると、セキュリティは大丈夫なんですか?
たなべ
とても大切な質問だね!
ポートを開くということは、家の玄関に鍵をかけずに開けっ放しにするようなものなんだ。だから、適切なセキュリティ対策が必須だよ。
ポートフォワーディングを設定する際は、以下のセキュリティ対策を必ず実施しましょう。
公開する必要のないサービスのポートは開かないようにしましょう。
例えば、Webサーバだけを公開するなら、ポート80や443のみを開き、SSH(ポート22)などは開かないようにします。
サービスにログイン機能がある場合、必ず強力なパスワードを設定してください。
サーバにするパソコンには、ファイアウォールソフトウェアを導入し、必要なポートのみを許可する設定にしましょう。
Webサーバソフトウェアやオペレーティングシステムは、セキュリティパッチが公開されたら速やかに適用しましょう。
可能であれば、標準的なポート番号(80、22など)ではなく、独自のポート番号を使用することで、自動化された攻撃を回避できる場合があります。
ただし、これは「セキュリティの多層化」の一環であり、これだけで安全になるわけではありません。
ポートフォワーディングを設定すると、以下のようなリスクが発生します。
これらのリスクを理解した上で、適切な対策を講じることが重要です。
リンドくん
NATとポートフォワーディング、なんとなく理解できました!思ったより複雑なんですね。
たなべ
そうだね。でも、この仕組みを理解しておくと、ネットワークトラブルの解決やサーバ構築で大いに役立つよ。
最初は難しく感じるかもしれないけど、実際に設定してみることで理解が深まるから、ぜひ試してみてね!
今回は、NATとポートフォワーディングの仕組みについて解説しました。
これらの技術は、現代のインターネット通信を支える基盤となっています。
ネットワークエンジニアを目指す方はもちろん、Web開発やゲーム開発を行う方にとっても、理解しておくべき重要な知識です。
ネットワークの世界は奥深いですが、一歩ずつ学んでいけば必ず理解できます。
今回学んだ知識を土台に、さらなるスキルアップを目指していきましょう!