1

CentOS 5.5 を使用しています。

ポート 9999 で実行されている Apache 2.x サーバーがあり、fuser を使用して検索しようとしています。

netstat を使用して見つけることができます。

netstat -an | grep 9999

出力:

tcp        0      0 :::9999                     :::*                        LISTEN  

質問 1: netstat が IPv6 構文を使用してポートを表示するのはなぜですか?

質問 2: サーバーの pid を見つけるには、どの fuser コマンドを使用できますか? 次のいずれも機能しません。

フューザー -n tcp :::9999

フューザー -n tcp 9999

フューザー -4 -n tcp 9999

フューザー -6 -n tcp 9999

フューザー -6 -n tcp :::9999

ありがとう!

4

2 に答える 2

0

IPv6 でリッスンしているのはなぜですか? Linux のデフォルトでは、[::]bind to は IPv6 にバインドするだけでなく、IPv4 互換アドレスにもバインドします。IPv6の::ffff:0.0.0.0/96スペースは、IPv4 互換の接続に使用されます。

これを行うソフトウェアの利点は、1 つのソケットにバインドするだけでよいことです。これにより、コーディングが少し簡単になります。

すべてのディストリビューションまたはオペレーティング システムがこれを行うわけではありません。たとえば、Windows では、IPv6 または IPv4 をサポートするために、両方[::]または明示的にバインドする必要があります。0.0.0.0Linux では、net.ipv6.bindv6onlysysctl が に設定されている場合 (Debian ではそうですが、CentOS や Ubuntu を含む他のほとんどのディストリビューションではそうではありません)、明示的にバインドして両方をサポート1する必要があります。[::]0.0.0.0

で調べる方法は、次のfuserようにします。

# fuser 80/tcp
80/tcp:               3052  3143  3144  3146  3147  3148

または、ポートにバインドされているプロセスを表示するには:

# fuser -v 80/tcp
                     USER        PID ACCESS COMMAND
80/tcp:              root       3052 F.... apache2
                     www-data   3143 F.... apache2
                     www-data   3144 F.... apache2
                     www-data   3146 F.... apache2
                     www-data   3147 F.... apache2
                     www-data   3148 F.... apache2
于 2011-04-01T04:46:10.613 に答える
0

修正の 1 つは、ipv6 を無効にすることでした。

/etc/modprobe.conf に追加:

エイリアス net-pf-10 オフ

フューザーはipv6が好きではないと思います。

于 2011-04-05T15:24:59.990 に答える