Diary of Sacred Fox - November 21, 2005

The Quintetには通算 179068 人(今日:0, 昨日:0)のお客様が来場しています

2005/11/21

madwifiのLinuxドライバを使っている人に質問

こんなことが起こるのは私の環境だけ?

私は研究室ではw/WEP研究室内無線を, 家ではCAT5の有線LANを使っているので, Linuxでは起動時にはどちらのインタフェースも有効にする という意味, 某掲示板とかそういうものとは関係ない上げないで, 必要に応じてログイン後に上げることにしている
研究室で無線を使うときには, 周囲にはWEPが必要な電波しか飛んでいないので, WEP Keyが無い状態で単にifupしても当然上がらない
研究室の無線と学科の無線を単に102で使うときには研究室のLANが届いていないから仕方なく…という程度の使い分けだが使い分けるため, ESSIDとKEYの各環境変数をセットした上でifupを呼ぶラッパーをそれぞれ用意して, それを叩くことにしている
ちょっと長いけど, ここまでが一応の背景説明

で, このマシンを寮の部屋にもって帰って起動すると不思議なことが起こるのである
Windows xpだと, 暗号化されていないネットワークに接続するときには文句を言ってきて, 勝手にはつながないので無線をデフォルトオンにしているのだが, Linux…というよりifupスクリプトにはそんな仕掛けが無いから…というのも理由の一つなんだけど, rcでネットワークを有効にする作業って他の作業と並列にはやってくれないので接続が無い環境でのタイムアウト待ちがウザイという理由の方が大きいのではあるが無線をデフォルトオフにして使っているのである
それなのに, 何故かrunlevel 3と5という意味で, 1では発生しない3以上正確には起動後初めてという条件がつくがしたときに, 勝手に無線があがってしまい, WEP保護の無い悪名高き一応伏字…にはなってないかもしれないけどYah○○ BB何処の部屋の奴が開けっ放しにしているかは不明だし調べる気もしない屋内無線LANのアクセスポイントに繋ぎにいってしまうのである
その状態に気づかずに有線側でifupを叩いたとしても, ifupのスクリプトはデフォルトゲートウェイが既に設定されているときにはDHCPでもらったゲートウェイを使わないように書かれているので, その後のoutgoingも無線側から, 気が付いて無線を落としたらゲートウェイが無くなって通信不可, 有線も上げなおしという無線をそのまま使うのは気持ちが悪いし, 不正アクセスがどうのこうのといわれたくも無いし, そもそも遅いので却下なのである切ない事態になってしまうのである

で, 何処のどいつが無線を勝手に上げてご丁寧にもdhclientまで叩いてくれているのかを, その辺のスクリプトに変なそもそもそのプログラムが呼ばれているのかを確認echoとかスクリプトの遷移や条件判断を逐一確認できるset -xvとかいつインタフェースが上がったかを調べるifconfig madwifiのドライバを使うとデバイス名がこうなるath0 | grep UPとかそのプログラムがどういう経緯でどういう引数で呼ばれたのかを確認pstree -ah > /testとかhotplugの呼び出してpstreeを記録するために, 本体を一時的にmvして換わりにスクリプトからexecexec /sbin/hotplug.org $@とか書き込みまくって調べてみた
どうやら発生のタイミングはsshdのここで起動後と書かなかったのは, sshdがトリガーになっているらしいのではあるが, S55sshdの末尾にifconfigをしても上がっていない, 理由は後述のとおりで明らかといえば明らか起動の数瞬後であるらしい, 紛らわしいタイミングだったので一瞬S56xinetdを疑ってしまったが…
で, 発生元をたどるとどうやらsshdとは別に, khelperからhotplug経由でifupが呼ばれていることが判明, 要するに初めてネットワークデーモンプログラムを上げた瞬間に無線Lanチップがhotplugに認識されたことになって, ifupしてくれるという余計なお世話の所為だったみたいである

何でe1000ではこんなことが起きずにmadwifiではこうなるのかとかはこれ以上追求する気も起きなかったので, ~/bin/に有線のifup wrapperを作っておしまい
やることは単純にifdown ath0; ifup eth0必要なところに適宜sudoをつけて, 最後にntpdを起動するおまけつきみたいなこと
個人的にはむしろhotplugみたいに非同期的にネットワークを裏であげてくれるとタイムアウト待ちの時間を他の起動処理に費やせそうな気もするというところに興味があったり, でもifupのスクリプトって見るからに再入可能, 要するに同時実行可能かどうか, 複数のインタフェースを同時に上げるだけでも結構時間節約になる気がリエントラントでは無いんだよなぁ

Comments (0):