2009年06月19日 GARP(Gratuitous ARP) [長年日記]
_ GARP(Gratuitous ARP)
今日、初めて知った。自身のIPアドレス対応するMACアドレスを問い合わせるARPのことをGARP(Gratuitous ARP)というらしい。
自分に関する事を問い合わせるARPパケットに意味が有るのかと思うが、
- IPアドレスのダブリをチェックしたり(別の場所から自分自身が返事したら恐いわな)
- 他ノードの持つARPテーブル内の自身の情報を強制的に更新させる
という意味がある。
_ request_module[net-pf-10]: waitpid(3788,...) failed, errno 1 (その8)
カーネルソースの書き換え(kernel/kmod.c)により、無理矢理エラーメッセージを出なくして、強引に解決させたと思われた、この一件。実は以下のような状況が発生していた。
501 m-ito@lib100 /home/m-ito> ps ax|egrep defunct 1276 ? Z 0:00 [modprobe.old] <defunct> 1411 ? Z 0:00 [modprobe.old] <defunct> 13756 ? Z 0:00 [modprobe.old] <defunct> 13815 ? Z 0:00 [modprobe.old] <defunct> 7973 ? Z 0:00 [modprobe.old] <defunct> 14710 ? Z 0:00 [modprobe.old] <defunct> 15028 ? Z 0:00 [smtp_wrapper] <defunct> 15153 pts/3 S+ 0:00 egrep defunct 502 m-ito@lib100 /home/m-ito>
modprobe.oldがいわゆるゾンビプロセスになっている。つまり、正しくwaitpid()が機能していないという、あの状況にはっきりと呼応する。
503 m-ito@lib100 /home/m-ito> pstree -p|egrep modprobe.old |-named(7972)---modprobe.old(7973) |-ntpd(1409)---modprobe.old(1411) |-sshd(1274)-+-modprobe.old(1276) | |-sshd(13755)-+-modprobe.old(13756) | |-sshd(13814)-+-modprobe.old(13815) | `-sshd(14709)-+-modprobe.old(14710) 504 m-ito@lib100 /home/m-ito>
named, ntpd, sshd は /usr/local/ 配下にあるのだけれど、Slackware-10.1から11.0にアップデートしたときには、リコンパイルせずに、既存の /usr/local/ をそのまま引き継いだ。
それが原因かと考え、とりあえずnamedをリコンパイルしてみたけれど、状況は変わらなかった。
心配の種は尽きまじ...
_ ruby(1.8.x)儂(わし)的解釈によるメモ(OSコマンドインジェクション対策)
シェルに渡す(外部から入力された)パラメータに関して、特殊文字とか、ややこしいことは考えずに全ての文字に対して、1文字ずつエスケープを行う。
#! /usr/bin/ruby input = "test5.rb';`echo CRACKED`; echo '\\" input.gsub!(/(.)/){'\\' + $1} command = "echo #{input}" p command system(command)
"echo \\t\\e\\s\\t\\5\\.\\r\\b\\'\\;\\`\\e\\c\\h\\o\\ \\C\\R\\A\\C\\K\\E\\D\\`\\;\\ \\e\\c\\h\\o\\ \\'\\\\" test5.rb';`echo CRACKED`; echo '\
これで良くないだろうか?