web-dev-qa-db-ja.com

D-Link DIR-825がMACアドレスを受け入れないのはなぜですか?

デスクトップPCのIPアドレスをDIR-825で予約しようとしています。詳細をすべて入力して[保存]ボタンを押すと、MACアドレスが無効であることがわかります。

MACアドレスは1C:BD:B9:xx:xx:xxのようになります。

invalid mac address

他のネットワークデバイスから他のMACアドレスを追加して保存できますが、これはできません。したがって、セミコロンの代わりにダッシュを含めるようにフォーマットを変更しようとしましたが、それでも無効と表示されました。それから私は他のもののほとんどが00で始まるMACアドレスを持っていることに気づきました、それで私は01を00に変えようとしました、そしてそれは受け入れられました。

はい、MACアドレスは受け入れられてとてもかわいいですが、もちろんこれは間違ったMACアドレスです。アドレスが00で始まる場合に受け入れ、01で始まる場合に受け入れないのはなぜですか?

(興味深いことに、問題のある部分を含む最初の3バイトはD-linkに属しています)

FWを2.01EUから2.01EUに2回フラッシュしてから、2.06EUにアップグレードしましたが、問題は解決せず、ルーターは古い設定をインターフェイスに表示されていなくても記憶しています。

ルーターを任意のFWでフラッシュした後、Webインターフェイスは空のように見えますが、手順でフラッシュ手順により設定とデータが消去されると説明されていても、ルーターは同じ構成であるかのように動作します.

工場出荷時のデフォルトにリセットしても、設定は記憶されていました。

factory defaults

そのため、電源のオフとオンを繰り返しながら、RESETボタンを30秒間押し続ける「30/30/30手順」を実行することになりました。これにより、「ファームウェアアップデートシステム」が起動します。 FWファイルを選択し、フラッシュのためにルーターに送信します。

点滅が完了し、ようやく設定がすべてなくなり、一歩ずつ新しい設定を作成することができました。それから私はIP予約リストに来ました、そして私は再び立ち往生しています。

  1. なぜこれが起こっているのですか、なぜMACアドレスを受け入れないのですか?説明はありますか?

  2. どうすれば、そのアドレスを強制的に受け入れさせることができますか?

更新:

この問題は、クライアント側でcheck_macという関数を次のコードのいずれかで上書きするハックであると考えられます。

Code 1:
javascript:alert(check_mac=function (){return true;});

Code 2:
javascript:(function(){ window['check_mac'] = function() { return true; } })();

私はこれらの両方を試しましたが、うまくいきませんでした。とにかく、このコードをどのように実行しますか?入力してブラウザからEnterキーを押すだけで十分ですか?

ソース:

これについてD-Linkに尋ねると、ベータFWバージョン2.08EU、ベータ4だと思います。そして、彼らは私の知る限りではなく、2.06EUの正式な最終バージョンをリリースしていません。これはルーター自体を通じて提供されますが、ローカライズされた多くのD-Link Webサイトのいずれかから、またはグローバルな企業Webサイトからはダウンロードできません。それでも彼らは2.08に取り組んでいますか?意味がありません...

MAC予約機能のソースコードの抜粋を次に示します。

function save_reserved(){
    var index = 0;
    var ip = get_by_id("lan_ipaddr").value;
    var mask = get_by_id("lan_netmask").value;
    var reserved_name = get_by_id("reserved_name").value;
    var reserved_ip = get_by_id("reserved_ip").value;
    var reserved_mac = get_by_id("reserved_mac").value;
    var start_ip = get_by_id("dhcpd_start").value;
    var end_ip = get_by_id("dhcpd_end").value;

    var ip_addr_msg = replace_msg(all_ip_addr_msg,_ipaddr);
    var Res_ip_addr_msg = replace_msg(all_ip_addr_msg,"Reservation IP");
    var start_ip_addr_msg = replace_msg(all_ip_addr_msg,"Start IP address");
    var end_ip_addr_msg = replace_msg(all_ip_addr_msg,"End IP address");

    var temp_ip_obj = new addr_obj(ip.split("."), ip_addr_msg, false, false);
    var temp_mask_obj = new addr_obj(mask.split("."), subnet_mask_msg, false, false);
    var temp_res_ip_obj = new addr_obj(reserved_ip.split("."), Res_ip_addr_msg, false, false);
    var start_obj = new addr_obj(start_ip.split("."), start_ip_addr_msg, false, false);
    var end_obj = new addr_obj(end_ip.split("."), end_ip_addr_msg, false, false);

    if(reserved_name == ""){
        alert(GW_INET_ACL_NAME_INVALID);
        return false;
    }else if(!check_LAN_ip(temp_ip_obj.addr, temp_res_ip_obj.addr, TEXT033)){
        return false;
    }else if(!check_address(temp_res_ip_obj, temp_mask_obj, temp_ip_obj)){
        return false;
    }else if (!check_domain(temp_res_ip_obj, temp_mask_obj, temp_ip_obj)){
        alert(TEXT033+" " + reserved_ip + " "+GW_DHCP_SERVER_RESERVED_IP_IN_POOL_INVALID_a);

        return false;
    }else if (!check_mac(reserved_mac)){
        alert(KR3);
        return false;
    }

    if (check_resip_order(temp_res_ip_obj,start_obj, end_obj)){
            alert(TEXT033+" " + reserved_ip + " "+GW_DHCP_SERVER_RESERVED_IP_IN_POOL_INVALID_a);
            return false;
        }
    //check same ip/mac start   
        var index = parseInt(get_by_id("edit").value);
        var edit_tmp = get_by_id("edit").value;
        for(m = 1; m < DataArray.length; m++){
                        if (m==index){
                 continue;
                }else{
                if(get_by_id("reserved_name").value.length > 0){
                    if((get_by_id("reserved_name").value == DataArray[m].Name)){
                        alert(sp_name+" ("+ get_by_id("reserved_name").value +") "+sp_alreadyused); 
                        return false;
                    }
                }
                if(reserved_ip.length > 0){
                    if((reserved_ip == DataArray[m].IP)){
                    alert(TEXT033+" ("+ reserved_ip +") "+sp_alreadyused);  
                        return false;
                    }
                }
                if(reserved_mac.length > 0){
                    if((reserved_mac == DataArray[m].MAC)){
                        alert(GW_DHCP_SERVER_RESERVED_MAC_UNIQUENESS_INVALID_a+" "+ reserved_mac +" "+GW_DHCP_SERVER_RESERVED_MAC_UNIQUENESS_INVALID_b);
                        return false;
                    }
                }

    }
        }
    //check same ip/mac end

    update_DataArray();

    var is_enable = "";
    if(get_by_id("edit").value == "-1"){     //add
        var i = get_by_id("max_row").value;
        var tb1 = get_by_id("table1"); 
        var oTr = tb1.insertRow(-1);
        var oTd1 = oTr.insertCell(-1);
        var oTd2 = oTr.insertCell(-1);
        var oTd3 = oTr.insertCell(-1);
        var oTd4 = oTr.insertCell(-1);
        var oTd5 = oTr.insertCell(-1);
        var oTd6 = oTr.insertCell(-1);

        if(parseInt(DataArray[i].Enable)){
            is_enable = "checked";
        }else{
            is_enable = "";
        }
        oTd1.innerHTML = "<center><input type=checkbox id=r_enable" + i + " name=r_enable" + i + " onClick='set_reserved_enable(" + i + ")' " + is_enable + "></center>"
        oTd2.innerHTML = "<center>" + DataArray[i].Name +"</center>"
        oTd3.innerHTML = "<center>" + DataArray[i].MAC +"</center>"
        oTd4.innerHTML = "<center>" + DataArray[i].IP +"</center>"
        oTd5.innerHTML = '<center><a href=javascript:edit_row('+ i +')\><img src=edit.jpg border=0 alt='+_edit+'></a></center>';
        oTd6.innerHTML = '<center><a href=javascript:del_row('+ i +')\><img src=delete.jpg  border=0 alt='+_delete+'></a></center>';
    }else{                                      //update        
        var i = parseInt(get_by_id("edit").value);
        if(parseInt(DataArray[i].Enable)){
            is_enable = "checked";
        }else{
            is_enable = "";
        }
        get_by_id("table1").rows[i].cells[0].innerHTML = "<center><input type=checkbox id=r_enable" + i + " name=r_enable" + i + " onClick='set_reserved_enable(" + i + ")' " + is_enable + "></center>"
        get_by_id("table1").rows[i].cells[1].innerHTML = "<center>" + DataArray[i].Name +"</center>"
        get_by_id("table1").rows[i].cells[2].innerHTML = "<center>" + DataArray[i].MAC +"</center>"
        get_by_id("table1").rows[i].cells[3].innerHTML = "<center>" + DataArray[i].IP +"</center>"
        get_by_id("table1").rows[i].cells[4].innerHTML = '<center><a href=javascript:edit_row('+ i +')\><img src=edit.jpg border=0 alt='+_edit+'></a></center>';
        get_by_id("table1").rows[i].cells[5].innerHTML = '<center><a href=javascript:del_row('+ i +')\><img src=delete.jpg  border=0 alt='+_delete+'></a></center>';
    }
    clear_reserved();
}
6
Samir

別の解決策があります。DIR-825にベータファームウェアをインストールしたくない場合は、解決策があります。私はこれをDIR-825リビジョンで行いました。ファームウェアバージョンを実行しているBEUモデル:2.01EU、金、22、2009年5月。

  1. GoogleChromeを開く
  2. 管理者としてDIR-825にログインします。
  3. ネットワーク設定に移動します。
  4. 必要に応じて、[予約]をクリックし、コンピュータ名を変更します。
  5. F12を押すと、Chromeのプロンプトが開きます。
  6. [コンソール]タブ(正しくはデフォルトで開いているタブ)に、以下を貼り付けて、キーボードのENTERキーを押します。

    check_mac = function check_mac(mac){var error = true;エラーを返します。 };

  7. もう一度F12を押します。

  8. ネットワーク設定サイトで[保存]ボタンをクリックすると、デバイスが予約されます。

簡単な背景情報:検証はブラウザーでローカルに実行されるJavaScriptで行われるため、コードを変更することができます。この場合、JavaScript関数を変更しました。

4

問題が解決しました! 2.08EUベータ4でフラッシュしました。これにより、特定のMACアドレスが「無効」であるという問題が解決しました。しかし、それは最初の問題を解決しませんでした、そしてそれはまた他の問題ももたらしました。現時点でこの事実に驚かされていません。このデバイスを他のD-Linkデバイスと一緒に2年以上使用しています。

いつものように、私は小さな問題を解決するために着手し、結局、夜と週末をフラッシュして、一般的にデバイスをハッキングして物事を機能させるようにしました。長い間順調に稼働してきましたが、特にこのルーターは最近非常に稼働しています。まるでそれ自身の心を持っているかのように。それは終わりのない迷路です。

したがって、MACの「無効な」問題の解決策は次のとおりです。

  1. D-Linkから2.08EUベータ4をダウンロードします(注釈1、注釈2)。

  2. バイナリファイルを解凍します(注釈2)。

  3. コンピューターを接続します(備考2)。

  4. コンピューターを静的IPに設定します(備考3)。

  5. Webブラウザを開きます。

  6. ルーターに移動し、30/30/30の手順を実行します(備考4)。

  7. コンピューターに移動し、ブラウザーで192.168.0.1に移動します。 「d-linkファームウェアアップグレードシステム」ページが表示されます。新しいバイナリファイルを選択します(注釈5)。

  8. [送信]ボタンを1回クリックし、5分以上待ちます(備考6)。

  9. 次に、ブラウザで新しいタブを開くか、新しいブラウザウィンドウを開いて192.168.0.1に移動すると、通常のWebインターフェイスが表示されます。

私はこれらのステップについていくつかの発言をしました。自分が何をしているのかを知っていれば、それらを読む必要はありません。

備考開始

備考1:ファイル名はDIR825B1_FW208EUb04_beta.Zip。このファイルはまだ公開されていません。それで、彼らに電話するか、彼らに電子メールを送って、それを求めてください。このファイルは、HWリビジョンB1のDIR-825のヨーロッパバージョン用であることに注意してください。

備考2:必要に応じて、フラッシュ操作に使用する予定のコンピューターにファイルを転送します。そのコンピューターでインターネット接続が機能している場合は、手順1でファイルをそのコンピューターに直接ダウンロードできます。そうでない場合は、インターネットにアクセスできるコンピューターでファイルをダウンロードしてから、フラッシュ操作に使用する2番目のコンピューターにファイルを転送する必要があります。フラッシュに使用するコンピューターには有線接続が必要であることに注意してください。ワイヤレスなし!これが、私があなたにこれを言っている理由です。 2台目のコンピューターとフォルダーを共有してファイルを転送することも、USBドライブまたは別のメディアを使用することもできます。

備考3: IPに192.168.0.100(または設定のIP範囲で許可されているもの)を使用し、サブネットマスクを255.255.255.0に設定し、デフォルトゲートウェイを192.168.0.1(またはルーターのIPに設定)アドレスは)です。

備考4:オレンジ色に点滅する電源インジケータにより、正しいモードになっていることがわかります。これは、設定などの古いジャンクがすべてメモリから完全に消去されていることを確認するためだけのものです。なぜなら、すでに一度説明したように、このデバイスは、おそらく「出荷時設定へのリセット」を実行した後でも、以前の設定を記憶しているからです。そのため、Webインターフェイスで[Restore Factory Default]をクリックしても何の助けにもならず、デバイスの[RESET]ボタンを1回押すだけでも役に立ちません。これは設計上の欠陥であり、それらは単なる仕掛けであり、フロントエンド(インターフェース)とバックエンド(マシン)の間に実際の通信がないかのように、実際には何もしません。パスワードを削除し(忘れてしまった場合)、設定を表示から削除します(ただし、実際にはデバイスにプログラムされています)。したがって、30/30/30の手順を実際に実行する方がよいでしょう。

注釈5:ファイル名はDIR825B1_FW208EUb04_beta.bin

デバイスは新しいFWでフラッシュされ、デフォルト設定で完全に再プログラムされます。ルーターの通常のWebインターフェースを使用する場合は、これを達成できないことに注意してください。電源インジケータが他のインジケータとともに青色に点灯することで、操作が正常に実行されたことがわかります。

備考6:この種の操作を実行するときは、以前に表示していたページを更新しないのが常識です。

備考終了

このFWは2012年4月にリリースされたと思います。とにかくそれが日付に設定されたものです。そして、2013年を設定できないことに気づきました。年メニューは2002年から2012年までしかありません。これは非常に面白い「問題」です。 D-Linkに感謝します!新年には嬉しい驚きです。

years menu

これは本当に小さな問題です。ただし、特にログを確認したい場合や、ログをsyslogサーバーなどに送信する場合は、正しい日付と時刻を設定できると便利です。

しかし、このFWには、もう1つもっと厄介な問題があります。 WIFIのパスワードを変更することはできません。パスワードを変更して[保存]ボタンをクリックすると、保存しているふりをして15秒の待機ダイアログが表示されます。再度ログインすると、パスワードの長さから、変更が適用されていないことがわかります。

以下に、2.4GHz帯域のパスワードフィールドを示します。

change password for wifi on 2.4 GHz

デフォルトのパスワードは64桁の長さです。パスワードを長く入力するのは好きではありません。したがって、私がやりたいのは、デフォルトのパスワードを64桁から16桁に短くすることです。そして、これがどのように見えるべきかです。

change password for wifi on 2.4 GHz with 16 digit password

ここで、パスワードの長さが短いことがわかります。しかし、保存ボタンをクリックしてからログインして同じページに再度移動すると、フィールドに64桁の数字が再び表示されます。これが、新しく保存したパスワードで接続できない理由を説明しています。本当に救われなかったからです。

ここで古い16桁のパスワードを再利用してみました。ただし、デフォルトのパスワードである64桁を使用しても、16桁に短縮したり、任意のパスワードに変更したりすることはできません。変更して保存ボタンをクリックしても、以前の状態に戻ります。だから私はそれを本当に変えません。

それで、これがその解決策です。

  1. [設定]、[ワイヤレス設定]に移動し、[ワイヤレスネットワークの設定] Wizard]ボタンをクリックします。

  2. 「ネットワークキーを手動で割り当てる」を選択し、「次へ」をクリックします。

  3. それぞれ2.4GHz帯域と5GHz帯域のパスワードを入力し、[次へ]をクリックします。

  4. 新しいパスワードを書き留めて、[保存]をクリックします。

これは次のようになります。

wireless network setup wizard

これは、WIFIのパスワードを変更できる唯一のページ/ダイアログです。ただし、手動で設定する必要はありません。上記の手順2で[2.4GHz帯域と5GHz帯域の両方にネットワークキーを自動的に割り当てる]を選択すると、ルーターにパスワードを生成させることができます。ただし、(可能であれば)64桁すべてを覚えておくか、メモしておく必要があります。また、すべてのWIFIクライアントに対してそれを入力する必要があります。

この不具合と設定での2013年の欠如を除いて、このFWは安定しているようです。私はしばらくそれを使用し、それがどのように機能するかを見ていきます。日付を2012年12月31日に設定しました。その後どうなるか見ていきます。 2002年に戻りますか? 2000年問題のバグか何かですか?数十年前の前年であり、遠くない年である2012年にこのFWを使用していたときに、2013年のオプションを入力するのを忘れたのは驚くべきことです。

1
Samir

アドレスが00で始まる場合に受け入れ、01で始まる場合に受け入れないのはなぜですか?

アドレスはその位置に奇数があるため、マルチキャスト用に予約されます。エラーメッセージが示すように、01はinvalidです。あなたのコンピュータはそもそもそのようなMACアドレスを持つべきではありません。

から ウィキペディア

アドレスの最上位オクテットの最下位ビットが0(ゼロ)に設定されている場合、フレームは1つの受信NICのみに到達することを意味します。[5]このタイプの送信はユニキャストと呼ばれます。ユニキャストフレームは、衝突ドメイン内のすべてのノードに送信されます。これは通常、最も近いネットワークスイッチまたはルーターで終了します。一致するハードウェアMACアドレスを持つノードのみがフレームを受け入れます。デバイスが無差別モードでない限り、MACアドレスが一致しないネットワークフレームは無視されます。

最上位アドレスオクテットの最下位ビットが1に設定されている場合でも、フレームは1回だけ送信されます。ただし、NICは、一致するMACアドレスとは異なる基準に基づいて(たとえば、受け入れられたマルチキャストMACアドレスの構成可能なリストに基づいて)それを受け入れることを選択します。これはマルチキャストアドレス指定と呼ばれます。

最下位ビットと最上位ビットについていくつかの紛らわしいものがあることは知っていますが、次のアドレスを取る場合:

01:23:45:67:89:AB

最初の位置のアイテムを参照しています:01。このアイテムはevenである必要があります。または、アドレスがマルチキャスト用に予約されており、無効です

通常、デバイスのMACアドレスはハードウェアに組み込まれています。ただし、一部のデバイス、特別なソフトウェア、またはドライバユーティリティでは、このアドレスを変更できる場合があります。ご自身のコンピューターでこのMACアドレスを設定する場合は、コンピューターのMACアドレスを有効なものに変更する必要があります。コンピュータ/ネットワークカードがこのように来た場合、これは欠陥であり、保証がある場合はネットワークカードを修理または交換する必要があるため、販売者に連絡してください。ここでの欠陥は他の問題を示している可能性が高いため、簡単な回避策を見つけたとしても、これを行います。

1
Joel Coehoorn

タイプipconfig -allコマンドプロンプトで(検索コマンドを開始し、Enterキーを押します)。指定されたリストから、物理アドレスをコピーしてMACフィルターボックスに貼り付け、ダッシュをコロン(:)。

0
Sheikh Abrar