Linuxでプロセスが占有するポート番号を表示する

Linuxでプロセスが占有するポート番号を表示する

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッスンしているかどうかを知ることは非常に重要です。ポート関連の問題に対処する必要がある場合は、この記事が役立つかもしれません。

ポートは、物理ポートやソフトウェア ポートなど、Linux システム上の特定のプロセス間の論理接続の識別子です。 Linux オペレーティング システムはソフトウェアであるため、この記事ではソフトウェア ポートについてのみ説明します。ソフトウェア ポートは常にホストの IP アドレスと関連する通信プロトコルに関連付けられているため、ポートはアプリケーションを区別するために使用されることがよくあります。ネットワークに関わるほとんどのサービスは、着信ネットワーク要求をリッスンするためにソケットを開く必要があり、各サービスは個別のソケットを使用します。

ソケットは、IP アドレス、ソフトウェア ポート、およびプロトコルと組み合わせて使用​​されます。ポート番号は、伝送制御プロトコル (TCP) とユーザー データグラム プロトコル (UDP) の両方に適用されます。TCP と UDP はどちらも、通信に 0 ~ 65535 のポート番号を使用できます。

ポート割り当てのカテゴリは次のとおりです。

  • 0 - 1023: 共通ポートとシステムポート
  • 1024 - 49151: ソフトウェア登録ポート
  • 49152 - 65535: 動的ポートまたはプライベートポート

予約済みポートの詳細については、Linux の /etc/services ファイルを参照してください。

# /etc/services を減らす
# /etc/サービス:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
# ネットワークサービス、インターネットスタイル
# IANA サービス バージョン: 最終更新日 2013-04-10
# 現在、IANAのポリシーでは、1つのよく知られた
# TCPとUDPの両方のポート番号。したがって、ほとんどのエントリには2つのエントリがあります
# プロトコルが UDP 操作をサポートしていない場合でも同様です。
# RFC 1700、「割り当てられた番号」(1994年10月)から更新されました。すべてのポートが
# は、より一般的なものだけが含まれています。
# 最新のIANAポート割り当ては以下から取得できます。
# http://www.iana.org/assignments/port-numbers
# 既知のポートは 0 から 1023 までです。
# 登録ポートは1024から49151までです
# ダイナミックポートおよび/またはプライベートポートは49152から65535までです
# 各行は 1 つのサービスを表し、次の形式になります。
# サービス名 ポート/プロトコル [エイリアス ...] [# コメント]
tcpmux 1/tcp # TCP ポート サービス マルチプレクサ
tcpmux 1/udp # TCP ポート サービス マルチプレクサ
rje 5/tcp # リモートジョブエントリ
rje 5/udp # リモートジョブエントリ
エコー7/tcp
エコー7/udp
破棄 9/tcp シンク null
破棄 9/udp シンク null
systat 11/tcp ユーザー
systat 11/udp ユーザー
昼間 13/tcp
昼間 13/udp
qotd 17/tcp 引用
qotd 17/udp 引用
msp 18/tcp # メッセージ送信プロトコル (履歴)
msp 18/udp # メッセージ送信プロトコル (履歴)
チャージン 19/tcp ttytst ソース
チャージン 19/udp ttytst ソース
ftpデータ 20/tcp
ftpデータ 20/udp
# 21 は ftp に登録されていますが、fsp でも使用されます
FTP 21/TCP
ftp 21/udp fsp fspd
ssh 22/tcp # セキュア シェル (SSH) プロトコル
ssh 22/udp # セキュア シェル (SSH) プロトコル
テルネット 23/tcp
テルネット 23/udp
# 24 - プライベートメールシステム
lmtp 24/tcp # LMTP メール配信
lmtp 24/udp # LMTP メール配信

ポート情報を表示するには、次の 6 つの方法を使用できます。

  • ss: ソケット統計をダンプするために使用できます。
  • netstat: 開いているソケットのリストを表示できます。
  • lsof: 開いているファイルを一覧表示できます。
  • fuser: ファイルを開いているプロセスのプロセス ID を一覧表示できます。
  • nmap: ネットワーク検出ツールおよびポート スキャナーです。
  • systemctl: systemd システムの制御マネージャーおよびサービス マネージャーです。

次に、sshd デーモンが使用するポート番号を確認します。

方法1: ssコマンドを使用する

ss は通常、ソケット統計をダンプするために使用されます。 netstat と同様の出力を生成しますが、他のツールよりも多くの TCP 情報とステータス情報を表示します。

また、PACKET、TCP、UDP、DCCP、RAW、Unix ドメインなど、あらゆる種類のソケット統計を表示することもできます。

# ss -tnlp | grep ssh
LISTEN 0 128 *:22 *:* ユーザー:(("sshd",pid=997,fd=3))
LISTEN 0 128 :::22 :::* ユーザー:(("sshd",pid=997,fd=4))

ポート番号を使用して確認することもできます。

# ss -tnlp | grep ":22"
LISTEN 0 128 *:22 *:* ユーザー:(("sshd",pid=997,fd=3))
LISTEN 0 128 :::22 :::* ユーザー:(("sshd",pid=997,fd=4))

方法2: netstatコマンドを使用する

netstat は、ネットワーク接続、ルーティング テーブル、インターフェイス統計、マスカレード接続、およびマルチキャスト メンバーシップを表示できます。

デフォルトでは、netstat は開いているソケットを一覧表示します。アドレス ファミリを指定しない場合は、設定されているすべてのアドレス ファミリのアクティブなソケットが表示されます。しかし、netstat は時代遅れなので、代わりに ss が使用されるのが一般的です。

# netstat -tnlp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 997/sshd
tcp6 0 0 :::22 :::* 997/sshdをリッスン

ポート番号を使用して確認することもできます。

# netstat -tnlp | grep ":22"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1208/sshd
tcp6 0 0 :::22 :::* 1208/sshdを聴く

方法3: lsofコマンドを使用する

lsof は、開いているファイルを一覧表示したり、システム上のプロセスによって開かれたファイルに関する情報を一覧表示したりできます。

# lsof -i -P | grep ssh
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
sshd 11584 ルート 3u IPv4 27625 0t0 TCP *:22 (LISTEN)
sshd 11584 ルート 4u IPv6 27627 0t0 TCP *:22 (LISTEN)
sshd 11592 ルート 3u IPv4 27744 0t0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (確立済み)

ポート番号を使用して確認することもできます。

# lsof -i tcp:22
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
sshd 1208 ルート 3u IPv4 20919 0t0 TCP *:ssh (LISTEN)
sshd 1208 ルート 4u IPv6 20921 0t0 TCP *:ssh (LISTEN)
sshd 11592 ルート 3u IPv4 27744 0t0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (確立済み)

方法4: fuserコマンドを使用する

fuser ツールは、ローカル システム上でファイルを開いているプロセスのプロセス ID を標準出力に表示します。

# フューザー -v 22/tcp
ユーザー PID アクセス コマンド
22/tcp: ルート 1208 F....sshd
ルート 12388 F....sshd
ルート 49339 F....sshd

方法5: nmapコマンドを使用する

nmap (「Network Mapper」) は、ネットワーク検出およびセキュリティ監査用のオープン ソース ツールです。もともとは大規模ネットワークの高速スキャン用に設計されましたが、単一のホストのスキャンにも適しています。

nmap は、生の IP パケットを使用して、ネットワーク上で利用可能なホスト、それらのホストのサービス (アプリケーション名とバージョンを含む)、ホストが実行しているオペレーティング システム (OS バージョンなどの情報を含む)、使用中のパケット フィルターまたはファイアウォールの種類、およびその他の多くの情報を決定します。

# nmap -sV -p 22 ローカルホスト
2018-09-23 12:36 IST に Nmap 6.40 ( http://nmap.org ) を起動
ローカルホスト (127.0.0.1) の Nmap スキャン レポート
ホストは稼働しています (遅延 0.000089 秒)。
ローカルホストのその他のアドレス(スキャンされていません): 127.0.0.1
港湾国サービスバージョン
22/tcp オープン ssh OpenSSH 7.4 (プロトコル 2.0)
サービス検出が実行されました。誤った結果がある場合は、http://nmap.org/submit/ に報告してください。
Nmap 完了: 1 つの IP アドレス (1 つのホストが稼働中) を 0.44 秒でスキャンしました

方法6: systemctlコマンドを使用する

systemctl は、systemd システムの制御マネージャーおよびサービス マネージャーです。これは古い SysV init システム管理に代わるもので、現在ほとんどの最新の Linux オペレーティング システムで使用されています。

# systemctl ステータス sshd
● sshd.service – OpenSSH サーバーデーモン
ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)
アクティブ: 2018-09-23 02:08:56 EDT (日) からアクティブ (実行中)、6 時間 11 分前
ドキュメント: man:sshd(8)
man:sshd_config(5)
メイン PID: 11584 (sshd)
Cグループ: /system.slice/sshd.service
└─11584 /usr/sbin/sshd -D
9月23日 02:08:56 vps.2daygeek.com systemd[1]: OpenSSHサーバーデーモンを起動しています...
9月23日 02:08:56 vps.2daygeek.com sshd[11584]: サーバーは0.0.0.0ポート22でリッスンしています。
9月23日 02:08:56 vps.2daygeek.com sshd[11584]: サーバーはポート22でリッスンしています。
9月23日 02:08:56 vps.2daygeek.com systemd[1]: OpenSSHサーバーデーモンを起動しました。
9月23日 02:09:15 vps.2daygeek.com sshd[11589]: 103.5.134.167 ポート49899 によって接続が閉じられました [preauth]
9月23日 02:09:41 vps.2daygeek.com sshd[11592]: 103.5.134.167 ポート 49902 ssh2 から root のパスワードを受け入れました

上記の出力は、sshd サービスが前回開始されたときの ssh サービスのリスニング ポートを示しています。しかし、最新のログは出力に更新されません。

# systemctl ステータス sshd
● sshd.service – OpenSSH サーバーデーモン
ロード済み: ロード済み (/usr/lib/systemd/system/sshd.service; 有効; ベンダープリセット: 有効)
アクティブ: 2018-09-06 07:40:59 IST よりアクティブ (実行中)、2 週間 3 日前
ドキュメント: man:sshd(8)
man:sshd_config(5)
メイン PID: 1208 (sshd)
Cグループ: /system.slice/sshd.service
├─ 1208 /usr/sbin/sshd -D
├─23951 sshd: [承認済み]
└─23952 sshd: [ネット]
9月23日 12:50:36 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート51666からの無効なユーザーpi
9月23日 12:50:36 vps.2daygeek.com sshd[23909]: input_userauth_request: 無効なユーザー PI [preauth]
9月23日 12:50:37 vps.2daygeek.com sshd[23911]: pam_unix(sshd:auth): チェック合格; ユーザーは不明
9月23日 12:50:37 vps.2daygeek.com sshd[23911]: pam_unix(sshd:auth): 認証失敗; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142
9月23日 12:50:37 vps.2daygeek.com sshd[23909]: pam_unix(sshd:auth): チェック合格; ユーザーは不明
9月23日 12:50:37 vps.2daygeek.com sshd[23909]: pam_unix(sshd:auth): 認証失敗; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142
9月23日 12:50:39 vps.2daygeek.com sshd[23911]: 95.210.113.142 ポート 51670 ssh2 からの無効なユーザー pi のパスワードに失敗しました
9月23日 12:50:39 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート 51666 ssh2 からの無効なユーザー pi のパスワードに失敗しました
9月23日 12:50:40 vps.2daygeek.com sshd[23911]: 95.210.113.142 ポート51670 によって接続が閉じられました [preauth]
9月23日 12:50:40 vps.2daygeek.com sshd[23909]: 95.210.113.142 ポート51666 によって接続が閉じられました [preauth]

ほとんどの場合、上記の出力にはプロセスの実際のポート番号は表示されません。このとき、ログ ファイルの詳細情報を確認するには、次の journalctl コマンドを使用することをお勧めします。

# journalctl | grep -i "openssh|sshd"
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[997]: 信号15を受信しました。終了しています。
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを停止しています...
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを起動しています...
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[11584]: サーバーは0.0.0.0ポート22でリッスンしています。
9月23日 02:08:56 vps138235.vps.ovh.ca sshd[11584]: サーバーはポート22でリッスンしています。
9月23日 02:08:56 vps138235.vps.ovh.ca systemd[1]: OpenSSHサーバーデーモンを起動しました。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • プロセスのすべての情報を表示するLinuxメソッドの例
  • Linuxでプロセススタック情報を表示する方法
  • Linux でプロセスによって開かれたファイル ハンドルの数を表示する方法と、その数を変更する方法
  • Linux でのプロセス メモリ使用量の表示に関する詳細な理解
  • LINUX でプロセスを表示する 4 つの方法 (要約)

<<:  Vue プロジェクトをパッケージ化して Apache サーバーにデプロイする手順

>>:  シェルスクリプトを使用したMySQLデータベースの自動バックアップ

推薦する

Vue2 キューブUI 時間セレクターの詳細な説明

目次序文1. 需要と効果必要効果2. コードの実装index.vue(html)日付方法テスト結果3...

Webフロントエンド開発におけるエラーを見つけるための基本的な考え方

WEB開発は主に2つのインタラクション(B/Sデータ)から構成されますブラウザ: 1html、css...

セマフォによるTomcatの異常終了の解決方法

最近はビッグデータで遊んでいます。友人が私のところに来て、オンラインの Tomcat が不可解に終了...

HTML+CSS マージテーブル境界線サンプルコード

table タグと td タグに境界線を追加すると、デフォルトでは次のように二重境界線が使用されます...

MySQL サービスに iptables ファイアウォール ポリシーを追加するためのソリューション

MySQL データベースが Centos7 システムにインストールされており、オペレーティング シス...

IE8互換表示(IE7モード)とスタンドアロンIE7の違いの詳細な説明

1つ。 IE8 互換表示の概要<br />新しいバージョンのブラウザが古い Web サイ...

Linuxでテキスト比較を実現するコツを教えます

序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...

MySQL 8.0の新機能、隠しフィールドの詳細な説明

序文MySQL バージョン 8.0.23 では、新しい機能「Invisible Column (In...

CentOS7 環境で gcc (バージョン 10.2.0) をアップグレードする詳細な手順

目次簡単な紹介1. 現在のgccバージョンを確認する2. gccインストールパッケージ(バージョン1...

MySQL サーバーにおける SSD パフォーマンスの問題の詳細な分析とテスト

【質問】 HP サーバーを使用しています。SSD が IOPS 約 5000 を書き込むと、%uti...

ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明

Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...

HTML テーブルの境界線を設定する際のヒント

HTML を初めて使用する多くの人にとって、テーブル <table> は最もよく使用され...

Linux 型バージョン メモリ ディスク クエリ コマンド紹介

1. まず、Linux システムのバージョン内容について概要を説明します。 1. カーネルバージョン...

JavaScript で知らない Object.entries の使い方

目次序文1. 共通オブジェクトを反復処理するには for...of を使用します2. 通常のオブジェ...