制作日:2024年7月25日

Portについて

今回はPortについてまとめます

目次



そもそもPortとは

Portとはよくドアに例えられます
それではPortの定義を確認しましょう
Portとは英語で港という意味があります。そしてこのように言われています
Wikipediaより
ポート(英: port)はIPネットワークの各ホスト上で、複数アプリケーションへ通信を振り分けるために用意された、論理的な情報の送受信口である
と書かれいる通り、インターネットを使用する際に必要な扉のようなものになります。

番号の意味

Portには番号が割り当てられていて、0~65535番まであります。
ちなみにこの65535というのは16ビットで2バイトのことです。

そしてこのポート番号にはそれぞれ区分があります。

0~1023番

システムポート番号(ウェルノウンポート番号)
システムサービス用の基本的なポート番号です

1024~49151番

ユーザーポート番号(登録済みポート番号)
アプリケーションサービス用の登録済みポート番号です。

49152~65535番

動的・私用ポート番号
IANAによる割り当てがされないポート番号

このIANAとはドメイン名、IPアドレス、プロトコル番号などを管理する組織のことで
現在ではICANNという非営利法人が引き継いでいます。

Portの使用について

Portについてこれだけの番号があるからどれを使ってもいいだろうと考える人がいるかもしれません
だめですよ

まず、0番Portは使ってはいけません。
0番のPortはAnyPortと呼ばれ、特殊なポート番号になります。
役目はアプリケーションに対して、動的に別番号の空きポートを割り当てることができます。

そして次に0~1023番のPortもなるべく使わない方がいい
これはさっきにも説明した、システムポートだから
基本的なシステムサービスやプロトコルで使用される番号であり使いたいPortがあっても埋まってしまっていることがあるからです。
またUnix系のOSでは、0~1023番のPortを使用する際にはroot権限が必要になります。

Portの使用には1024~65535番までの範囲から選ぶほうがいいですね。

Portの確認方法について

続いてPortの使用状況を確認していく方法について説明します。

まず以下の二つのコマンドについてです。

アクティブなネットワーク接続とそれに対応するプロセス ID (PID) を表示します

netstat -ano

開いているポートを全て表示します

netstat -a

上記のコマンドをコマンドプロント(ターミナル)で実行すると使われているPortが出てきます。
ですがこれを一つ一つ確認していると日が暮れます。
そこで特定の番号が空いているかを確かめるコマンドがあります。
Windows PowerShellで以下のコマンドを打ってください

特定のPortの通信状況を表示します

Get-NetTCPConnection -LocalPort 2200

この場合だと2200番のPortの通信状況を表示します
Portが使われていない場合だとこのように表示されます

Get-NetTCPConnection : プロパティ 'LocalPort' が '2200' の MSFT_NetTCPConnection オブジェクトが見つかりません。プロパティの値を確認してから再試行してください。
発生場所 行:1 文字:1
+ Get-NetTCPConnection -LocalPort 2200
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (2200:UInt16) [Get-NetTCPConnection], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_LocalPort,Get-NetTCPConnection

逆に使われている場合は以下のように表示されます

例としての8000番Portの通信状況を表示します
IPアドレスは仮

LocalAddress                          LocalPort RemoteAddress                    RemotePort State       AppliedSetting
------------                        --------- -------------                      ---------- -----       --------------
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
000.000.000.000                       8000      000.000.000.000                    99999                TimeWait
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
000.000.000.000                       8000      000.000.000.000                    99999                Established Internet
0.0.0.0                               8000      0.0.0.0                            0                    Listen

このように通信状況が出ます
ものによっては1,2行しか出ないやつもあります

Port開放について

やることは3つ

1つ目は、IPアドレスの固定です

今回はWindows11でのやり方をご説明します。

まずは設定のネットワークとインターネットのところからイーサネットのところを開きます。
するとIPアドレスやそのほかいろんなものが書いてあると思います。
それのIP割り当ての欄を見てください
自動(DHCP)となっていたらそれを今から変更します

横の編集ボタンを押すと、
【IP設定の編集】という画面が出てきます。
そこの一番上が自動になっていると思うので手動に変えてください。

つぎにIPv4のところがオンになっていなければオンにしてください

そして下のIPアドレスサブネットマスクゲートウェイ優先DNSを入力していきます。

まずはルーターのIPアドレスを調べます。
色々な方法がありますが、コマンドプロンプトで調べる方法を教えます。
まず、以下のコマンドをコマンドプロンプトに打ち込みエンターキーを押し、実行します。

インターネット関係の情報が全部わかるコマンド

ipconfig

ここのデフォルトゲートウェイの欄にルーターのIPアドレスが表示されています。

ここではルータのIPアドレスが192.168.1.1だった場合で設定を行っていきます。

【IPアドレス欄】の末尾の数字はほかの機器と重ならない値を設定してください
ここでは192.168.1.10

つぎに【サブネットマスク】には255.255.255.0を入力してください

つぎに【ゲートウェイ】にはルーターのIPアドレス192.168.1.1を入力してください

最後に【優先DNS】もルーターのIPアドレス192.168.1.1を入力してください
全て入力し終わったら保存をしてください
設定が終わったらまたipconfigで設定が反映できているか確認してください

2つ目は、ファイアウォールの設定です

Windowsの環境によっては、ファイアウォールの設定を行わなくても通信できる場合があります。
ファイアウォールの設定をしておらず、Port開放の設定が上手くいかないという人は、こちらを試してみてください。
また別途セキュリティソフトを使用している場合は、そのやり方になるので各自調べてください。

まずWindowsの検索欄で
セキュリティが強化された Windos Defender ファイアウォールと検索して開いてください
開くと左の欄に
ローカルコンピューターのセキュリティが強化された Windows Defender ファイアウォール
受信の規則
送信の規則
接続セキュリティの規則
監視
とあるはずです。

この受信の規則送信の規則を操作していきます。

受信の規則を押し、右側の操作の欄の新しい規則を押します。
あとは以下の通りに進めていきます。

ポートを選択

次へをクリック

開放したいポートのプロトコルを選択 TCPかUDPか

特定のローカルポートを選択し、開放したいPort番号を入力

次へをクリック

接続を許可するを選択

次へをクリック

ルールを適用するネットワーク接続を選択

次へをクリック

追加する規則に分かりやすい名前を設定

完了をクリック

送信の規則も同じように設定していってください
これでPortがファイアウォールにブロックされなくなりました。

3つ目は、ルーターの設定です

ここは各ルーターによって違うので
ルーターの型番 + ポート開放 仕方などで検索してください

使いそうな情報だけ書いておきます。
NTTのルーターの場合これが使えるかも
基本はこれ

設定画面に飛べたら
IPv4パケットフィルタ設定っていうのと
静的IPマスカレード設定っていうのでPortを追加していく

IPv4パケットフィルタ設定では
種別は許可を選択
送信元IPはany
宛先IPは先ほど固定したIPアドレス192.168.1.10を入力
プロトコルは用途によって選択
送信元ポートと宛先ポートには開放したいポート番号を入力
方向はbothを選択

静的IPマスカレード設定では
変換対象プロトコルは用途によって選択
変換対象ポートと宛先ポートには開放したいポート番号を入力
宛先IPv4アドレスには先ほど固定したIPアドレス192.168.1.10を入力

この3つが正しくできていればポート開放成功です
最後に確認方法です。

ここで出来ます
ポートの開放を確認するには、そのポートが使われてなければなりません。
サーバーを立ち上げるなどして、使っている状態にしてから確認してください。


-おわり-

この記事を書いた人

this are me

ゲームプログラミングやウェブ開発、アプリ開発を主にしてます。

@slrte_sol

トップページへ