パスワードを忘れた? アカウント作成
459819 journal

yuriの日記: MACアドレス重複 7

日記 by yuri
不可解現象メモ。

Linux1(192.168.1.1)とLinux2(192.168.1.2)とPC(192.168.1.3)をHUBにつないで、Linux1とLinux2を何回か再起動していたら、telnet 192.168.1.1しているのにLinux2につながる場合がある。
#3回に1回くらい、かなりの頻度

で、PCのコマンドラインで、"arp -a"したら、192.168.1.1と192.168.1.2に同じMACアドレスが割り当てられている。。。。おかしい。。。。イミフ。。。。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by messier42 (36151) on 2008年09月20日 8時43分 (#1423199) ホームページ 日記
    MACアドレスは、NICのROMに書いてあるのですが、ドライバが読み出す場所
    を間違えると、誤ったMACアドレスや、同じ種類のNICは全て同じMACアドレス
    になったりします。新しいドライバをメーカー等からダウンロードして更新
    すると治る事が多いです。スペックシートが手に入るなら、ドライバ書き換え
    て正しい値を読みとるよう変更してしまうのも有りかと思います。

    これはLinuxだけの話かと思ってたのですが、Windowsでも似たような事例を
    経験した事があります。ASUS製のマザーのOnboard NICはRealTek製だったの
    ですが、WindowsXP SP1ではMACアドレスのOUIがRealTekでした。しかしSP2
    になったらMACアドレスが変わってしまいました。今度はOUIがASUSになって
    しまいましたよ。推測ですが、当初はRealTekが付けたMACアドレスをドライバ
    が読み込んでいたのだが、SP2になり今度はASUSが付けたMACアドレスが読み
    出されたのだと思います。
    • コメントありがとうございます。

      Linux1と2はifconfigで見てみるとちゃんと正しいIPアドレス-MACアドレスを表示しているので、PC側の何かがおかしいのかな~と思っていました。
      ドライバかあ。。。試してみます。
      親コメント
    • その前にLinux2にエイリアスが当たってる可能性をチェックすべ。

      確かにNICのMACアドレスはドライバ次第で何でも設定できるけどね。例えばRealTekの8139はデバイスが自分でROMを読んで設定するので余計な事をしない限りそれはない。RtkのGbEの石も資料をざっと見ただけだけど同様だった気がする(あやふやだが)。ただ、NE2000だと自分で設定する必要があるのと、その頃のふるーいNICにはROMがないのもあったりするのでおそらく昔はそういう事もあったかもだ。

      # 窓についてはよく知らんし蟹は蟹でも100なのか1000なのか知らんけど、SP2でASUSのドライバが余計な事をしてる可能性が高いなー。MACアドレスはセグメント内でユニークでありさえすれば用は足りるのでその動作は完全に無意味なんだけど。

      --
      以下、参考までに>yuriさめ
      talosでは0.2のツリーのdrivers/netにある8139.ccとne2k.ccがNICのドライバで、ne2kの方は288行あたりで読んで318行あたりで書き込んでいるのに対し、8139の方は220行あたりで読んでるだけになってるです。
      親コメント
      • コメントありがとうございます。

        Linux2にエイリアス…調べてみます。
        #Linux1とLinux2はもともとオリジナルディスクからコピーして
        #作ったマシンで、変えなければいけないところ(ifcfg-eht*)
        #だけをいじっています。
        #マシン名も同じだけど…マシン名は使わず常にIPアドレスを
        #使って通信してるから問題にはならないと思ってます…

        ちなみに、ハブに繋がっているPC、Linux1、Linux2のケーブルを、いざ通信が始まるまで引っこ抜いておいて、PC→Linux1→Linux2 と繋ぐとPCの
        ARPテーブルはちゃんとLinux1、Linux2に別々のMACアドレスを割り当てているのですが、繋ぎ順をPC→Linux2→Linux1とすると、PCのARPテーブルが間違って(Linux1にもLinux2にもLinux2のMACアドレスが)割り当てられてしまいます。

        あと、8139はデバイスが自分でROMを読んで設定する~NE2000だと自分で設定する必要があるという説明と、それに対応するソース行の解説、ありがとうございます!!なるほど~~☆
        親コメント
  • by Anonymous Coward on 2008年09月20日 20時42分 (#1423445)
    telnetかよ、ssh使え、というツッコミが入らないのは何故だ。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...