Apache で使用されている IP とポートを見つける

Apache で使用されている IP とポートを見つける

Apache Web サーバーが監視している IP:PORT を見つけるにはどうすればよいですか? いくつかのネットワーク コマンドがありますが、それらは使用中の TCP ポートを表示します。マシンには複数のネットワーク インターフェイスがあり、Listenのセクションhttpd.confはコメント化されています。したがって、そのうちの 1 つがデフォルトで使用され、どれがデフォルトとして設定されているかはわかりません。

たとえば、次のコマンドはポート番号のみを表示します。

root@cluster:~# netstat -pat | grep httpd
tcp        0      0 *:ulistproc     *:*      LISTEN      3940/httpd
tcp        0      0 *:https         *:*      LISTEN      3940/httpd

また、正しいポート番号は 3940 ではなく 80 であるはずです。

それを見つけるためのアイデアはありますか?

答え1

最後の列はプロセス (プロセス番号 / プロセス名) であり、ポートではありません。ポートは 4 番目の列にあります。この場合は、2 つのポート (ulistproc と https) が開いていることがわかります。両方のポートは、マシン上のすべてのアドレスを意味するアドレス "*" で開いています (これはほとんどのデーモンの通常のデフォルトですが、制限する構成があります)。実際のポート番号が必要な場合は、シンボリック変換が行われないように "netstat -pant" を使用します。

答え2

ルートとして入力

netstat -pat | grep httpd

(またはgrep apacheディストリビューションによって異なります)

答え3

nmap localhost

cat httpd.conf | grep port

答え4

lsofnetstat を使用する以外にも、開いているファイル (ストリーム、ソケット、ブロック ファイルなど) を一覧表示するためにも使用できます。

root@host: lsof -i -n -P |grep httpd
COMMAND  PID  USER   FD   TYPE DEVICE  SIZE/OFF   NODE  NAME
httpd    4291 root   3u   IPv4 124715  0t0        TCP   *:80 (LISTEN)

lsof (8) - 開いているファイルを一覧表示する

-i = IPv4/6 ファイルを表示
-n = ホスト名を解決しない (つまり、IP を表示)
-P フレンドリ名の代わりにポート番号を表示 (つまり、HTTP の代わりに 80)。

関連情報