トップ «前の日記(2009年06月18日) 最新 次の日記(2009年06月23日)» 編集

Masa's blog

検索キーワード:

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 '\

これで良くないだろうか?