socket APIのトレースを見ていて妙なことに気が付いたことがあったのでメモ。
connect の第2引数にポインタでわたってくるstruct sockaddr_in の中身が
sin_family = 1
port = 12150
sin_addr = 97.114.47.114
なんていうコネクション確立要求が出ているらしい。
完全孤立した外部につながらない環境だったし、8.8.8.8 みたいなコネクティビティチェックに無造作に使われるアドレスでもないので、「これはっ!?」と思って色めきだったのだった。
まずは「このIPって何?」ということで調べてみると...
| nslookup 97.114.47.114
| Server: 8.8.8.8
| Address: 8.8.8.8#53
|
| Non-authoritative answer:
| 114.47.114.97.in-addr.arpa name = 97-114-47-114.roch.qwest.net.
うーん、なんだかよくわからない。
じゃあ…ということで、IPとportでググってみると、
こんなの↓とか、
http://comments.gmane.org/gmane.os.freebsd.devel.sparc/479
こんなの↓とか、
http://sourceforge.jp/projects/ultramonkey-l7/lists/archive/develop/20081208/000221.html
出てきた。
しかも2つめは日本語の L7-UltraMonkey のコミュニティの記事な上に、ずばありこんな記述が...
| ○ 原因
|
| UNIX ドメインソケットなので sun_path を表示すべきところを,sin_addr と
| sin_port を表示していた.
そう。
上記のログは、自前で socket()まわりの動きを確認していたつもりが、sin_family の値をきちんとチェックしていなかったために、こんなことになっていたのだった。
実際、冒頭で書いた sin_family = 1 は AF_UNIX でずばり。見落としてました...orz
なお、97.114.47.114:12150 というのは、どうも resolver 系で典型的に使う UNIXドメインソケットのパス名(の一部)に対応しているらしい。
大騒ぎする前に、ちゃんと追いかけておいて良かった...orz
Thank you for this post - I was searching around when i saw this in my logs.
ReplyDelete