サービスがipv4とipv6でリッスンしているかどうかを確認する方法は?

サービスがipv4とipv6でリッスンしているかどうかを確認する方法は?

httpsサービスがIPv6とIPv4の両方でリッスンしていることを確認したいと思います。

そして、ブラウザを介してURLにアクセスするときに要求がIPv4またはIPv6で提供されるかどうかを知りたいです。

ベストアンサー1

あなたはそれを使用することができますnetstat

# netstat -tlnp | grep httpd
# netstat -tlnp | grep apache
# netstat -tlnp | grep nginx
# netstat -tlnp | grep ...

次に、各IPプロトコルバージョン(tcpとtcp6)に1行があることを確認します。

#!/bin/bash

ns=$(netstat -tlnp | grep httpd)

if grep 'tcp ' <<< "$ns" >/dev/null; then
    echo "httpd has a listening IPv4 socket."
fi

if grep 'tcp6 ' <<< "$ns" >/dev/null; then
    echo "httpd has a listening IPv6 socket."
fi

netstatルートに属するプロセス(デフォルトのApacheプロセスなど)を表示するには、root権限が必要です。netstat標準ユーザーとして使用するには、この-pオプションを削除し、grep代わりにIPとポートを転送します。たとえば、

$ netstat -tln | grep '0.0.0.0:80'
$ netstat -tln | grep '127.0.0.1:80'
$ netstat -tln | grep '::1:80'

この場合、探しているIPはすでに探している情報を提供しているため、再度開いたり再開したりgrepする必要はありません。 127.0.0.1 または 0.0.0.0 を探す必要があるかどうかは、Web サーバーの構成によって異なります。tcptcp6grep

おすすめ記事