PHPで書かれたWebアプリのDB接続先を設定した後に、本当に設定したホストに接続されてるんかいなと思ってちょっと調べてみた。
netstat とかでだいたいわかるけど、厳密にプロセスがどのホストと通信しているか調べてみた。
httpd プロセスの PID を調べる。
# ps -ef|grep [h]ttpd root 650 1 0 2009 ? 00:15:39 /usr/local/apache/bin/httpd root 29147 1 0 2009 ? 00:07:42 /usr/local/apache2/bin/httpd -k start httpd 25157 650 0 May24 ? 00:00:33 /usr/local/apache/bin/httpd httpd 24441 29147 0 May27 ? 00:00:35 /usr/local/apache2/bin/httpd -k start httpd 25199 29147 0 May27 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 25479 29147 0 May27 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 10800 650 0 May29 ? 00:00:30 /usr/local/apache/bin/httpd httpd 15550 650 0 Jun01 ? 00:00:30 /usr/local/apache/bin/httpd httpd 4987 29147 0 Jun03 ? 00:00:02 /usr/local/apache2/bin/httpd -k start httpd 16948 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 22539 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 25499 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 25639 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 27384 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 29190 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 31901 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 915 29147 0 Jun03 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 3550 29147 0 00:25 ? 00:00:00 /usr/local/apache2/bin/httpd -k start httpd 3851 650 0 00:28 ? 00:00:00 /usr/local/apache/bin/httpd httpd 3853 650 0 00:29 ? 00:00:00 /usr/local/apache/bin/httpd httpd 3881 650 0 00:29 ? 00:00:00 /usr/local/apache/bin/httpd httpd 3883 650 0 00:29 ? 00:00:00 /usr/local/apache/bin/httpd httpd 3884 650 0 00:29 ? 00:00:00 /usr/local/apache/bin/httpd
PID が 25157 のプロセスがオープンしているソケットを調べる。
# ls -l /proc/25157/fd|grep [s]ocket lrwx------ 1 root root 64 Jun 4 00:33 20 -> socket:[1207] lrwx------ 1 root root 64 Jun 4 00:33 4 -> socket:[1583865686] lrwx------ 1 root root 64 Jun 4 00:33 47 -> socket:[1583892575]
inode番号 1583892575 が通信しているリモートホストのIPアドレスとポート番号を調べる。
# perl -lane 'print $F[2] if($F[9]==1583892575)' /proc/net/tcp
CB031DAC:05F1
IPアドレスを10進数に変換する。
# perl -le 'print join(q/./, map{hex} reverse unpack(qq/A2A2A2A2/,q/CB031DAC/))'
172.29.3.203
ポート番号を10進数に変換する。
# perl -le 'print hex q/05F1/' 1521