netstatはpidなしのリスニングポートを表示しますが、lsofは表示しません


21

この質問は、ネットワークポートを開くのに似ていますが、プロセスが接続されていませんか?

そこからすべてを試し、ログなどを確認しましたが、何も見つかりません。

私のnetstatには、TCPをリッスンするポートと、pidのないUDPポートが表示されます。これらのポートをlsofで検索しても、何も表示されません。

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:44231           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:55234           0.0.0.0:*                           - 

次のコマンドは何も表示しません。

lsof | grep 44231
lsof | greo 55234
fuser -n tcp 44231
fuser -n udp 55234

再起動後、これらの「同じ」2つの接続は、新しいポート番号を除いて存在します。

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:45082           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:37398           0.0.0.0:*                           - 

また、lsofコマンドとfuserコマンドには何も表示されません。

それらが何であるかのアイデア?それらについて心配する必要がありますか?

回答:


11

あなたが提供したデータから、それはいくつかのNFSマウントまたはRPCを使用した何かに関連していると思います。

rpcinfo -p一部のRPC関連サービスで使用される可能性のあるポートを確認できます。

これは私のシステムでどのように見えるかです

# netstat -nlp | awk '{if ($NF == "-")print $0}'
tcp        0      0 0.0.0.0:55349           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:18049           0.0.0.0:*                           - 

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  10249  status
    100024    1   tcp  10249  status
    100021    1   udp  18049  nlockmgr
    100021    3   udp  18049  nlockmgr
    100021    4   udp  18049  nlockmgr
    100021    1   tcp  55349  nlockmgr
    100021    3   tcp  55349  nlockmgr
    100021    4   tcp  55349  nlockmgr

1
この問題があり、nlockmgrに特定のポートを使用させる場合は、fclose.com / 39625 / fixing-ports-used-by-nfs-serverの解決策を試してください。
ライアンウォールズ14

13

一部のプロセス/ pidは、rootのみが使用できます。試してみる

sudo netstat -antlp

TIME_WAIT状態でないすべての開いているポートのPIDを返す必要があります


2
このコマンドでのみ開いているすべてのTCPポート。UDPポートは表示されません。
ペトリュス

8

@ user202173などからのヒントに基づいて-、netstatにリストされている場合でも、ポートを所有するプロセスを追跡するために以下を使用することができました。

これが私の出発時の状況でした。sudo netstatは、PID / Programのポートを示しています-lsof -i何も表示されません。

$ sudo netstat -ltpna | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  -
$ sudo lsof -i :8785
$

では釣りに行きましょう。まず-enetstat呼び出しに追加してiノードを取得しましょう。

$ sudo netstat -ltpnae | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      199179     212698803   -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  0          0           -

次にlsof、そのiノードに接続されているプロセスを取得します。

$ sudo lsof | awk 'NR==1 || /212698803/'
COMMAND      PID    TID                USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
envelope_ 145661 145766               drees   15u     IPv6          212698803        0t0        TCP *:8785 (LISTEN)

プロセスIDがわかったので、プロセスを確認できます。残念ながら、それは機能しなくなったプロセスです。また、PPIDは1なので、その親も強制終了できません(親がinitであるプロセスを強制終了するにはどうすればよいですか?を参照)。理論的には、initは最終的にクリーンアップする可能性がありますが、待機して再起動するのにうんざりしました。

$ ps -lf -p 145661
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z drees    145661      1  2  80   0 -     0 exit   May01 ?        00:40:10 [envelope] <defunct>

1
数か月前からこのソリューションを探していました。このジェムをありがとう
マニッシュプラサド

私はこのような解決策を何年も探していました。ありがとうございました!ここでの欠点の1つは、NFSクライアントまたはサーバーが動かなくなった場合、lsof | awk 'NR==1 || /212698803/'lsof -NNFSのみを表示する場合でも)応答が非常に遅くなり、タイムアウトになる可能性があることです。もう1つの欠点は、トラブルシューティング中にiノードが変更される可能性があることです。
ステファンラシエウスキー

4

これらの具体的な内容はわかりませんが、カーネルモジュール(NFSなど)には、これらのソケットに関連付けるPIDがありません。lsmodで疑わしいものを探します。


lsmodは何も返しません。このサーバーはNFSクライアントです。それは現在私の一番の容疑者です。
mhost

これは、カーネルの新しいインスタンスの後にクライアントポートが変更された理由を説明します。
-andyortlieb

これは完全に合法的な答えであるため、あなたはダウン投票されるべきではありませんでした。他の回答(rpcbindまたはlsofを使用)が役に立たない場合を見つけるのに役立ちました。(そして、はい、それはNFSでした。)ありがとう!
ピーターハンセン14

うーん、どうしてNFSクライアントにPIDを割り当てないのかと思うのですが、それで何が起こっているのかを見ることができます...ワーカースレッドなどが必要になると思いますか?
SamB

3

これが役立つかどうかはわかりません。私は同じ問題を抱えていて、次のことをしました。まず、オプション-a(all)と-e(extended)を指定してnetstatを呼び出しました。後者のオプションを使用すると、使用されているポートに関連付けられたiノードを確認できます。次に、取得したiノード番号でlsof | grepを呼び出し、そのiノードに関連付けられたプロセスのPIDを取得しました。私の場合はうまくいきました。


0

このポートから出入りするトラフィックはありますか。tcpdump -vv -x s 1500 port 37398 -w trace.outファイルtrace.outにキャプチャを保存して、wiresharkで開くことができることtcpdump -vv port 37398を確認するか、直接行われていることを確認してください。

udpソケットにnetcatを使用して、そのポートにTelnetで接続してみてください。おそらく、何らかの役立つバナーが表示されます。

rkhunterを入手して、システムのバックドアを確認します。

lsof / netstatのmd5ハッシュとインストールメディアのmd5ハッシュを比較します。ファイルがupdatetでないと仮定します。


両方のポートにローカルでnetcatを試みましたが、何も表示されません。tcpポートの場合、何か入力してから入力すると閉じます。Ctrl + Cを押すと、UDPが閉じます。私はiptablesを用意しており、それらのポートへの接続を許可していません。したがって、iptablesをバイパスしない限り、何かがそれらに接続しているとは想像できません。
mhost

どのようなサーバー、DB、APP ..どのソフトウェアを使用していますか?
イザック

これはApacheを実行しているWebサーバーであり、cronやsyslogのようなもの以外はほとんどありません。
mhost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.