ITの教科書検索
入門・発展ページ読了 約11分

ポート開放とは ― 仕組みと注意点

ポート開放とは、外から始まる通信を家の中の機器へ届けるルータの設定です。NAPTとの関係、UPnP・DMZとの違い、IPv6やMAP-Eでの扱いと危険性を解説します。

目次
  1. ポート開放とは
  2. なぜ外からの通信は届かないのか
  3. ルータに設定する内容
  4. ポート開放の手順と確かめ方
  5. UPnP・DMZホスト機能との違い
  6. IPv6ではファイアウォールで許可する
  7. ポート開放ができない回線
  8. ポート開放の危険性
  9. 練習問題

ポート開放とは、外から始まる通信を家の中の機器へ届ける設定

ポート開放とは、インターネット側から始まる通信を、家の中の決まった機器へ届けるようにルータへ設定することです。ルータには、どのポート番号宛ての通信を、どの機器のどのポートへ送るかを登録します。

外出先から家のNAS(ネットワーク接続のストレージ)やネットワークカメラを見たいときや、家でゲームのサーバを動かしたいときに使います。同じ設定を、ポートフォワーディングやポート転送とも呼びます。SSHにも同じ名前の機能がありますが、SSHの接続を使う別の仕組みです。ふだんのルータは、NATの変換テーブルにない外からの通信を捨てます。ポート開放を設定すると、その通信も家の中の機器まで届くようになります。

なぜ外から始まる通信は届かないのか

家庭用ルータは、NAPTで1つのグローバルIPアドレスを家の中の機器で共有しています。変換テーブルの行は、家の中の機器が外へ通信を始めたときに作られます。戻りのパケットは、この行を手がかりに元の機器へ届きます。

外の端末から先に接続するときは、ルータのグローバルIPアドレスを宛先にするしかありません。しかし、家の中には機器が何台もあるので、ルータはどの機器へ渡すかを決められません。変換テーブルにも該当する行がないため、ルータはパケットを捨てます。

多くの家庭用ルータはファイアウォールの機能も持ち、初期設定では外から始まる通信を止めています。多くのルータでは、ポート転送を登録すると、その通信をファイアウォールでも通すようになります。

ポート開放でルータに設定する内容

ポート開放で登録するのは、変換テーブルに手動で書き込む固定の行です。内部から通信が始まるのを待たずに、行を先に用意しておくわけです。この方式を静的NAPTと呼びます。

登録する項目は、ルータの機種が違っても次の4つです。表は、家の中のWebサーバを外から見られるようにする例です。

登録する項目例意味
プロトコルTCPTCPかUDPかを選びます。ゲームや通話ではUDPを使うことがあります。
外側のポート番号8080外の端末が接続するときの番号です。
転送先のIPアドレス192.168.10.30家の中のサーバのプライベートIPアドレスです。
転送先のポート番号80サーバのアプリが待ち受けている番号です。

この例の自宅ルータのグローバルIPアドレスは 198.51.100.5 です。外の端末が 198.51.100.5:8080 に接続すると、ルータは宛先を 192.168.10.30:80 に書き換えてサーバへ届けます。

ポート転送の設定なし外の端末192.0.2.10宛先198.51.100.5:8080自宅ルータ変換テーブルに該当なしサーバ192.168.10.30捨てるポート転送の設定あり外の端末192.0.2.10宛先198.51.100.5:8080自宅ルータ8080番は転送192.168.10.30:80サーバ192.168.10.30宛先を書き換え192.168.10.30:80
外の端末は、自宅ルータのグローバルIPアドレスの8080番に接続します。設定がないと、ルータは届け先を決められずにパケットを捨てます。設定があると、ルータは宛先を 192.168.10.30:80 に書き換えて、サーバへ届けます。

サーバの応答は、ルータを通るときに送信元が 198.51.100.5:8080 に書き換えられます。NAPTの行きと戻りの変換と同じ仕組みです。外の端末から見ると、最後まで 198.51.100.5 と通信していることになります。

外側と転送先のポート番号は、同じでも違っていてもかまいません。この例では、外側を8080番にし、サーバは80番で待ち受けています。同じプロトコルの外側のポート1つに登録できる転送先は、1台だけです。2台のサーバがどちらも80番で待ち受ける場合は、外側のポート番号を分けます。

ポート開放の手順と確かめ方

ルータの設定画面は機種ごとに違いますが、確かめる順番は共通です。サーバの側から外側へ、順に確かめます。

  1. 1

    サーバが待ち受けているか

    サーバの上で、アプリが目的のポートで待ち受けているかを確かめます。ss -tln や netstat -an の出力で、そのポートの行が LISTEN なら待ち受けています。出力の読み方は、netstat・ss・digの記事で説明しています。

  2. 2

    サーバのIPアドレスを固定する

    転送先はIPアドレスで指定します。DHCPで受け取るアドレスが変わると、転送の決まりが別の機器を指してしまいます。ルータのDHCPで同じアドレスを配るように設定するか、サーバにアドレスを手動で設定します。DHCPの仕組みはDHCPの記事で説明しています。

  3. 3

    サーバのOSのファイアウォールで許可する

    WindowsなどのOSは、パーソナルファイアウォールで外からの接続を止めていることがあります。ルータの設定とは別に、OSでもこのポートを許可します。

  4. 4

    ルータに転送の決まりを登録する

    前の節の4つの項目を登録します。

  5. 5

    家の外のネットワークから接続する

    スマホのモバイル回線など、家の外のネットワークから接続して確かめます。家の中から自分のグローバルIPアドレスに接続すると、ルータは通信を家の中へ折り返す必要があるからです。この折り返しをヘアピンと呼びます。

    NATの要件を定めた RFC 4787 と RFC 5382 は、UDPとTCPのどちらでもヘアピンへの対応を求めています。ただし、対応していない家庭用ルータもあります。その場合、設定が正しくても家の中からは届かないので、外から確かめます。

グローバルIPアドレスは、契約によっては接続し直すたびに変わります。変わると、外の端末は古いアドレスに接続し続けてしまいます。そこで、アドレスが変わるたびにDNSの登録を書き換えて、名前で接続できるようにするサービスがあります。これをダイナミックDNSと呼びます。

UPnP・DMZホスト機能との違い

外からの接続を受ける方法は、手動で登録するポート転送のほかに2つあります。違うのは、開くポートの数と、誰が開くかです。

方法外から届くポート誰が登録するか
ポート転送登録したポートだけ利用者が手で登録する
UPnP機器が求めたポート家の中の機器が自動で登録する
DMZホスト機能転送の決まりがないすべてのポート利用者が1台を指定する

UPnP:家の中の機器が自分でポートを開ける

家の中の機器がルータに依頼して、自分用の転送の決まりを登録する仕組みをUPnP(Universal Plug and Play)と呼びます。ルータ側の動きは、UPnPの Internet Gateway Device という仕様で定められています。

ゲーム機や通話アプリは、UPnPを使って必要なポートを利用者の操作なしに開けます。便利な反面、家の中の機器なら、利用者の知らないうちにポートを開けられます。マルウェアに感染した機器が、外からの入口を勝手に作るおそれもあります。使っていないなら、ルータのUPnPを無効にしておきましょう。マルウェアの種類ごとの違いは、マルウェアの種類の記事で解説しています。

DMZホスト機能:すべてのポートを1台へ送る

DMZホスト機能は、どの転送の決まりにも当てはまらない外からの通信を、すべて1台の機器へ送る機能です。ポートを1つずつ登録しなくて済む代わりに、その機器のすべてのポートに外から届く状態になります。

名前は似ていますが、本来のDMZとは別のものです。本来のDMZは、公開サーバを内部LANから切り離して置く区画です。家庭用ルータのDMZホストは、内部LANの中の1台をそのまま外部に公開します。

区画が分かれていないので、その機器が乗っ取られると、内部LANのほかの機器にも攻撃が届くおそれがあります。

IPv6ではポート転送をせず、ファイアウォールで許可する

IPv6はNATを前提にしていないので、家の中の機器もそれぞれグローバルなアドレスを持ちます。そのため、外の端末は最初からサーバ自身のアドレス宛てに送れます。

IPv4:ポート転送外の端末192.0.2.10宛先198.51.100.5:8080自宅ルータ宛先を書き換える宛先が変わる192.168.10.30:80サーバ192.168.10.30IPv6:フィルタで許可外の端末2001:db8:f::10宛先[2001:db8::30]:80自宅ルータ許可して通すだけ宛先はそのまま[2001:db8::30]:80サーバ2001:db8::30
IPv4では、外の端末はルータのアドレス宛てに送り、ルータが宛先をサーバに書き換えます。IPv6では、外の端末は最初からサーバのアドレス宛てに送ります。ルータは宛先を変えず、許可するかどうかだけを判断します。

ルータが宛先を書き換える必要はありません。その代わり、多くの家庭用ルータは、外から始まるIPv6の通信をファイアウォールで止めています。

家の中から始まった通信だけを通すこのフィルタは、家庭用ルータ向けに RFC 6092 でも勧められています。ただし RFC 6092 は、すべてを通す設定を初期設定にすることも認めています。

IPv6で外から接続させるには、ルータのIPv6のフィルタで、サーバのアドレスとポート番号宛ての通信を許可します。サーバのOSのファイアウォールでも、IPv4と同じように許可が必要です。接続してくる側も、IPv6で通信できる回線を使っている必要があります。

機器によっては、外へ通信するときに、一定時間で変わる一時アドレスを使います。これは、RFC 8981 で定められたプライバシー拡張によるものです。許可する宛先には、一時アドレスではなく、変わらない方のアドレスを指定します。

ポート開放ができない回線・制限がある回線

自宅ルータでのポート開放が効くのは、自宅ルータ自身がNAPTをしている場合です。回線によっては、NAPTをプロバイダの設備で行います。その場合は、自宅ルータに転送の決まりを登録しても、外からの通信は届きません。

接続の方式NAPTをする場所自宅ルータでのポート開放
自宅ルータにグローバルIPv4アドレスが付く接続自宅ルータできる
MAP-E自宅ルータ割り当てられた範囲のポートだけできる
DS-Liteプロバイダの設備できない
CGNATプロバイダの設備と自宅ルータできない

CGNAT:プロバイダの設備でもう一度NAPTをする

CGNATは、プロバイダの設備でNAPTを行い、多くの契約者で1つのグローバルIPv4アドレスを共有する方式です。このとき自宅ルータのWAN側には、グローバルではないアドレスが付きます。この用途のために、RFC 6598 で 100.64.0.0/10 の範囲が予約されています。

外の端末が接続できるのは、プロバイダの設備のアドレスです。プロバイダの変換テーブルには転送の決まりがないので、通信は自宅ルータまで届きません。自宅ルータのWAN側のアドレスが 100.64.0.0〜100.127.255.255 の範囲にあれば、CGNATの内側にいることになります。

DS-Lite:自宅ルータはIPv4を包んで送るだけ

DS-Liteでは、自宅ルータはIPv4のパケットをIPv6のパケットに包み、プロバイダの設備へ送ります。NAPTは、IPv6の包みを外したプロバイダの設備が行います。この方式は RFC 6333 で定められています。自宅ルータは変換をしていないので、転送の決まりを登録しても外からは届きません。

MAP-E:使えるポート番号の範囲が決まっている

MAP-Eでは、1つのグローバルIPv4アドレスを、ポート番号の範囲で複数の契約者に分けます。自宅ルータは、自分に割り当てられた範囲のポート番号だけを使ってNAPTを行います。そのため、ポート開放もこの範囲のポート番号でしかできません。

仕様の RFC 7597 では、標準の設定値のとき、0〜1023番はどの契約者にも割り当てられません。その場合、80番や443番は外側のポートに使えません。外側のポートを割り当ての範囲から選べば、転送先は80番のまま使えます。

DS-LiteとMAP-Eは、どちらもIPoEの回線でIPv4を使うための技術です。IPoEとの関係は、PPPoEとIPoEの記事を読むと分かります。同じ回線でPPPoEのIPv4接続も使い、そちらでポート開放をする組み合わせもあります。

ポート開放の危険性と注意点

ポート開放をすると、世界中のどの端末からでも、そのポートに接続できるようになります。インターネットでは、開いているポートを探す通信が絶えず送られています。開けたポートはいずれ見つかるものと考えて、対策しておく必要があります。

特に注意が必要なのは、ポートの先で動いているアプリです。ソフトウェアの欠陥のうち、攻撃に使えるものを脆弱性と呼びます。公開したアプリに脆弱性があると、外から乗っ取られるおそれがあります。パスワードが弱ければ、何度も試す攻撃で突破されるおそれがあります。

  • 必要なポートだけを開け、DMZホスト機能は使わない
  • 公開するアプリとOSを、最新の状態に保つ
  • 推測されにくいパスワードにし、使えるなら多要素認証も使う
  • 使い終わったら転送の決まりを消して、ポートを閉じる
  • 使っていないなら、UPnPを無効にする

パスワードを突破する手口や、脆弱性を突く手口の内容は、不正アクセスの記事にまとめています。

自分だけが外から家の機器を使いたいなら、VPNで家のネットワークに接続する方法もあります。外に開けるポートはVPN用だけになり、その先の機器は外から直接見えません。VPNの仕組みはVPNの記事で説明しています。

練習問題(全6問)

Q1ポート開放の設定がない家庭用ルータに、外の端末から先に接続しようとした。パケットはどうなる?
Q2グローバルIPアドレスが 198.51.100.5 の自宅ルータに、「TCPの8080番を 192.168.10.30 の80番へ転送する」と登録した。外の端末は、どこに接続すればサーバに届く?
Q3家庭用ルータのDMZホスト機能の説明として正しいものは?
Q4IPv6で、家の中のサーバに外から接続できるようにしたい。家庭用ルータで必要な設定は?
Q5MAP-Eの回線でポート開放をするときの制限として正しいものは?
Q6自宅ルータのWAN側のアドレスが 100.70.12.34 だった。このときの状況として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す