web-dev-qa-db-ja.com

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

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

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

私の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コマンドは何も表示しません。

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

22
mhost

あなたが提供したデータから、それはいくつかの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
11
Hrvoje Špoljar

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

Sudo netstat -antlp

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

14
user1389651

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

これが私の最初の状況でした。 Sudo netstatは、PID /プログラムが-のポートを示しています。 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
$

さあ釣りに行きましょう。まず、netstat呼び出しに-eを追加して、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>
8
studgeek

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

4
andyortlieb

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

3
user202173

このポートとの間で送受信されるトラフィックはありますか。tcpdump -vv -x s 1500 port 37398 -w trace.outでキャプチャをファイルtrace.outに保存することを確認します。その後、wiresharkで開くか、tcpdump -vv port 37398でそれを開き、直接何が起こっているかを確認します。

そのポートにtelnetしてみてください。udpソケットにnetcatを使用してください。何らかのバナーが表示される場合があります。

Rkhunterを入手して、システムにバックドアがないか確認してください。

Lsof/netstatのmd5ハッシュを、インストールメディアのハッシュと比較して、ファイルが更新されていないことを前提とします。

0
Izac