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
lsof
netstat を使用する以外にも、開いているファイル (ストリーム、ソケット、ブロック ファイルなど) を一覧表示するためにも使用できます。
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)。