anchor
なぜかDHCPサーバからIPアドレスを取得できなくなって、ネットにつながらなくなった
先日起きたトラブル。
何が弾みだったのかは結局わからずじまいだが、出先でイーサネットに繋いでもネットに接続できなくなった。
その時は再起動でクリアできたが、翌日また同じ現象が起きて今度は再起動しようが、アクセス権の補修などのメンテナンスの手順を一通りやろうが全くつながらなくなってしまった。
システム環境設定の「ネットワーク」で手動でIPアドレスを入力してもつながらない。
接続の設定が壊れたのかと思い、接続設定をイチからやり直したがやはりIPアドレスをDHCPから取得できないで、
169.254.49.184
というローカルアドレスを表示したままだった。
dolipoが悪さをしているのかと思い、dolipoを終了してプロキシの設定を解除してみるが変わらない。
有線だろうが無線だろうが関係なく接続できないので、外付けハードディスクのシステムから起動してみた。
そうすると今度は、有線、無線とも問題なく接続できる。
これでハードウエアの故障ではないことが切り分けられた。
今度はrootから起動してみた。
するとやはりIPアドレスを取得できない。
ユーザアカウントの問題ではなく、全体の設定のどこかがソフトウエア的に壊れているという可能性が強い。
そういえばこの数日、IMやファーストユーザスイッチ、iStat menus等が表示されなくなったり、Spacesの設定が勝手に初期化されたりシステム環境設定ペインがらみの不具合が続いていた。
これのひとつかと思い、
"/Library/Preferences"
をごっそりTime Machineボリュームから上書きしてみたりした。
しかし結果は全部ハズレ。
初日は解決できないまま過ぎてしまい、仕事にも支障が出ることになってしまった。
ところが二日目のしょっぱなにひらめくものがあってシステム環境設定の「セキュリティ」に入ってFirewallの設定をいじってみた。
まず「すべての受信接続を許可」にチェックを入れてみる、つまりFirewallを切る状態にしてみるとなんと一発でIPアドレスを取得して、ネットにもつながった。
これで原因はFirewallの設定だと判明。
Firewallの何が問題だったから不明だが、最近「kdb5なんとか」だとか「なんとかd」とかUNIX実行ファイルが接続許可を要求してきて、そのルールが残っていたのでそれらのよくわからないルールを削除して、再びFirewallの設定を
「特定のサービスおよびアプリケーションにアクセスを設定」
に設定を戻してみたところ、問題なく接続できるようになった。
結局何が原因なのかわからないが、IPアドレスを取得できなくなったらFirewallの設定もチェックしろというTipsだった。
こうして文章に書いてみると大したトラブルじゃないみたいだが、この二日間
「やっぱりシステム再インストールは避けられないか?」
と悩みまくった非常に重たいトラブルだった。
ある日突然ネットに全くつながらなくなった
システム環境設定の「ネットワーク」に入ってIPアドレスとを見ると
IPアドレスは169.254.49.184というローカルアドレスのまま
「DHCPリースを更新」で何度IPアドレス取得を再試行しても同じ結果だ
外付けハードディスクから起動すると接続に成功、rootからは接続に失敗という
テスト結果からハードウエアのトラブルではなく全体の設定ファイルの破損が疑わしい
そこで"/Library/Preferences"をTime Machineの
バックアップのトラブル以前のところからごっそり上書きした
しかしこれは改善につながらなかった
ひらめくところあってシステム環境設定の「セキュリティ」の
「ファイアウォール」に入って一旦Fire wallを外してみる
すると今度は一発でIPアドレスの取得に成功してネットにもつながるようになった
192.168.*.*というアドレスはDHCPから割り当てられる一般的なIPアドレスだ
このあとはFire wallの意味不明なルールをすべて削除することで何度接続し直しても
有線だろうが無線だろうが問題なく接続できるようになった
ネットに接続できなくなったらFirewallも疑えという教訓だ
anchor
Firewallをかけっぱなしだとネットに接続できないという問題がどうやら解決した
以前こちらで
なぜかDHCPサーバからIPアドレスを取得できなくなって、ネットにつながらなくなった
という問題が起きているということを書いた。
この問題を解決するには、新しいネットワークに接続するごとに、いちいちFire wallの設定を切ってDHCPサーバからIPアドレスを取得してからFire wallを元に戻すというものだった。
一度取得してしまえばネットワークを変えない限り何度でも最接続ができるので、そんなに問題がないといえば問題がないのだが、新しいネットワークに接続する度にネットに接続できませんといわれるのは鬱陶しいので解決策はないか探していた。
BBSに「shunbo」さんから
「/Library/Preferences/com.apple.alf.plistが壊れているのかも」
という情報をいただいた。
「生成されたplistの中身を書き換えてしまうという方法もあります。私の場合、CotEditorなどで中身を見て、不要だと思われる部分の記述を削除し、解決しました。
なお、PowerBook G4 12inchでトラブルに見舞われている人が多いようです。"mDNSResponder deny"といった言葉で検索をかけると、色々な提案がされていますので、ご参考になればと思います。」
という情報をいただいた。
ありがたいことだ。
そこで何よりも原因を切り分けたくて
Pref SetterやSmultronを使ってこの
/Library/Preferences/com.apple.alf.plist
を開いてみた。
私の場合は何をするにもSmultronなのだが、結局この両者を見てもmDNSResponderの項目に何かを拒否するような記述が見られない。
よくわからないので
/Library/Preferences/com.apple.alf.plist
を削除してみた。
それで数日テストしているのだが、今のところどこのネットワークにもいちいちFire wallを解除しなくてもスムーズに入れる。
どうやら結果は上々のようだ。
ところで原因を解明するために元のcom.apple.alf.plistを置いておいて何が変わったのか比較すれば良かったな、と気がついたのは後の祭りだった。
要するに原因はよくわからないが、こういう時には設定ファイルを削除せよというクラシックOS以来の解決法がOSXでも有効だということだ。
Fire wallがネットワーク接続を阻害する時には
/Library/Preferences/com.apple.alf.plistを開いてみよとのことだ
SmultronやPref Setterで覗いてみたがそれに該当するような項目は見当たらない
しかしcom.apple.alf.plistを削除してみたところ
DHCPサーバからIPを取得できないという問題は解決した
どうして解決したのか解明し損なったが解決したのでこういう方法もあるということで
2009年4月19日