このコマンドを使用して、ポートがどのプロセスで使用されているかを確認します。
lsof -i:443
しかし、出力結果は私を混乱させます。
[root@k8smasterone ~]# lsof -i:443
lsof: no pwd entry for UID 65532
lsof: no pwd entry for UID 1001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
lsof: no pwd entry for UID 65532
traefik 13731 65532 10u IPv4 10157368 0t0 TCP k8smasterone:35756->k8smasterone:https (ESTABLISHED)
lsof: no pwd entry for UID 1001
operator 24351 1001 6u IPv4 515576 0t0 TCP k8smasterone:49222->k8smasterone:https (ESTABLISHED)
calico-ty 25072 polkitd 7u IPv4 523993 0t0 TCP k8smasterone:49648->k8smasterone:https (ESTABLISHED)
wget 25509 root 4u IPv4 9941865 0t0 TCP iZuf62lgwih3vksz3640gnZ:46538->cdn-185-199-110-154.github.com:https (ESTABLISHED)
ポート443が複数のプロセスで使用されることを意味しますか?これは正しいですか?なぜこれが起こるのですか?
答え1
いいえ、これはプロセス13731、24351、および25072がすべてこのホストのポート443に接続されていることを意味します。一度に1つの接続しか処理できないWebサーバーはそれほど良いサーバーではありませんか?
さらに、プロセス25509はgithub.comのポート443に接続されます。
このlsof
コマンドは、設定されたネットワーク接続を次のように表示します。
<local hostname/IP>:<local port> -> <remote hostname/IP>:<remote port>
したがって、フィールドで指定されたポートだけが<local port>
実際にその行にリストされているプロセスに属します。これは、それぞれ35756、49222、および49648でランダムな高番号のポートです。これは、これが発信接続である可能性が最も高いことを示します。
矢印の右側の部分は、接続の「リモート」端がどこにあるかを示します。つまり、別のホストのサービスに接続することも、同じホストのポートに接続することもできます。
矢印の方向は、接続の設定方法とは何の関係もありません。実際には、出力にはマルチスレッドを表す複数のPIDがある可能性があるlsof
HTTPSサーバープロセス(おそらくまたは他のサーバーソフトウェア)に関連する行も含める必要がありますhttpd
。nginx
/マルチプロセスHTTPSサーバーと次の領域NAME
:
*:https (LISTEN)
(*
さまざまな場合があります) - プロセスが着信接続を受信していることを示します。k8smasterone:https->k8smasterone:35756 (ESTABLISHED)
- プロセス13731接続のサーバー側k8smasterone:https->k8smasterone:49222 (ESTABLISHED)
- プロセス24351接続のサーバー側k8smasterone:https->k8smasterone:49648 (ESTABLISHED)
- プロセス25072接続のサーバー側
ただし、構成に一部のDNAT、ロードバランシング、またはクラウドネットワーキングトリックが含まれている場合、実際のHTTPSサーバーは他のホストにある可能性が高いため、lsof
これら3つのような行それホストに変更します。