dnsmasq:2つのMACアドレスを同じIPアドレスにマッピングする


17

2つの異なるMACアドレスを同じIPアドレスにマッピングすることはできますか?

バックアップのために、サーバーからポータブルに接続する必要があります。また、ワイヤレスインターフェイスと有線インターフェイスの両方に同じIPが必要です。

openwrt Webインターフェースは、同じIPアドレスを持つ複数のdhcpエントリを受け入れませんが、おそらく回避策がありますか?

5月23日に追加された説明

ポータブルのネットワークインターフェイスの1つだけが常にネットワークに接続されていることを明確にしておく必要があります(したがって、スイッチを混同しないでください)。最初は、同じDNS名で2つの異なるIPアドレスがインターフェイスに割り当てられていましたが、これはあまりうまくいきませんでした(間違ったIPを取得したときのタイムアウト)。それでも、バックアップスクリプトにハードコードされているため、両方に同じ名前を使用したいと思います。

混乱させて申し訳ありません。


あなたがこれを試みた場合、シェナンガンが起こると確信しています。
ホロクリプティック

クライアント(および場合によってはサーバー)のOSもここで
ジェマインで

回答:


29

(ランダムな半意見のコメント:質問に対するこの非建設的で明白な不正確な回答とコメントの数が多いことはまれです)

ここでの他の人とは対照的に、あなたのリクエストは実際には非常に基本的であり、バージョン2.46、IIRC 以降dnsmasqでサポートされていると主張しています。これが私がdd-wrtから切り替えた唯一の理由でした。OpenWRTを実行してから約1年後、実際に切り替える理由は他にもたくさんあることがわかりましたが、それは重要なことです。

Backfire 10.04-rc4を実行しています

May 23 17:45:16 gateway dnsmasq[1925]: started, version 2.55 cachesize 150

私の構成:

$ cat /etc/config/dhcp

config 'dnsmasq'
    option 'domainneeded' '1'
    option 'boguspriv' '1'
    option 'localise_queries' '1'
    option 'rebind_protection' '1'
    option 'rebind_localhost' '1'
    option 'expandhosts' '1'
    option 'authoritative' '1'
    option 'readethers' '1'
    option 'leasefile' '/tmp/dhcp.leases'
    option 'resolvfile' '/tmp/resolv.conf.auto'
    option 'enable_tftp' '1'
    option 'domain' 'domain.net'
    option 'local' '/domain.net/'

config 'dhcp' 'lan'
    option 'interface' 'lan'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' 'infinite'

config 'dhcp' 'wan'
    option 'interface' 'wan'
    option 'ignore' '1'
    option 'dynamicdhcp' '0'

config 'dhcp'
    option 'interface' 'dmz'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' '12h'

config 'host'
    option 'name' 'travelmate'
    option 'mac' '00:11:22:33:44:55 aa:bb:cc:dd:ee:ff'
    option 'ip' '192.168.1.111'

config 'host'
    option 'name' 'mobilitymac'
    option 'mac' '99:88:77:66:55:44 ff:ee:dd:cc:bb:aa'
    option 'ip' '192.168.1.104'

このセットアップが提供するシームレスな移行をお楽しみください。スイッチをあまり長く使用しなくても、既存のセッションはすべて生き続けます。


4
これは私の質問に非常に詳細な方法で答えますが、まだカルマを持っていないため、この答えに賛成します。
sleepyMonad

そして、追加のブラウニーポイントは、luci(Webインターフェイス)が実際にこの形式をサポートしているように見えるためです。
sleepyMonad

1
昨夜、eth0を接続するときにwlan0がまだ接続されていることを知らない状況が発生しました(brcm80211のステージングは​​少しb0rkedの場合があります)。dnsmasqにはこれに関する特別な問題はなく、eth0に新しいIPを割り当てただけです。悪いことは、ルーターに入り、dnsmasqを停止し、/ tmp / dhcp.leasesを編集/強制終了し、望ましい動作モードに戻るためにdnsmasqを再起動する必要があることです。
lkraav

2
私がその重要な部分だと思うものを抽出するために、1つのエントリ(このファイルまたはluciインターフェイス)に複数のMACアドレスを含めることができます。したがって、で行を作成しab:cd:ef:01:02:03、で別の行を作成する代わりに04:05:06:07:08:09、2つのスペースを1つのスペースで区切って1つのエントリを作成しab:cd:ef:01:02:03 04:05:06:07:08:09ます。
teeks99 16

6

私は少し研究をしました。

最初に学んだことは、MACアドレス以外の基準に基づいてDHCPリースを割り当てることができるということです。

dhcp FAQから:

クライアントIDとは何ですか?

DHCPプロトコルの目的でクライアントIDと呼ばれるものは、クライアントコンピューターを識別するためにプロトコルで使用されるものです。デフォルトでは、DHCP実装は通常、この目的のためにクライアントのMACアドレスを使用しますが、DHCPプロトコルは他のオプションを許可します。一部のDHCP実装には、必要なクライアントIDを指定するセットアップオプションがあります。MACアドレスの1つの代替手段は、選択した文字列です。いずれにせよ、DHCPが機能するためには、選択したクライアントIDを他のクライアントが使用していないことを確認する必要があり、DHCPサーバーがそれを受け入れることを確認する必要があります。

その後、明らかにopenWRTのluci Webインターフェースではサポートされていませんが、dnsmasq自体はclient_idと複数のMACアドレスをサポートしています(注意が必要です)。

dnsmasqのmanページから

-G、--dhcp-host = [hwaddr] [、id:client_id | *] [、set:tag] [、ipaddr] [、hostname] [、lease_time] [、ignore] DHCPサーバーのホストごとのパラメーターを指定します。これにより、特定のハードウェアアドレスを持つマシンに常に同じホスト名、IPアドレス、およびリース時間を割り当てることができます。このように指定されたホスト名は、マシン上のDHCPクライアントによって提供されたホスト名よりも優先されます。ハードウェアアドレスを省略してホスト名を含めることもできます。この場合、IPアドレスとリース時間は、その名前を要求するすべてのマシンに適用されます。たとえば、-dhcp-host = 00:20:e0:3b:13:af、wap、infiniteは、ハードウェアアドレス00:20:e0:3b:13:afを持つマシンにwapという名前と無限の名前を与えるようにdnsmasqに指示しますDHCPリース。--dhcp-host = lap、192.168.0.199は、マシンラップに常にIPアドレス192.168.0.199を割り当てるようにdnsmasqに指示します。

(...)

「id:」を前に付けることで、ハードウェアアドレスではなくクライアント識別子を使用してホストを識別することができます。したがって、--dhcp-host = id:01:02:03:04、.....は、クライアント識別子01:02:03:04のホストを指します。次のように、クライアントIDをテキストとして指定することもできます。--dhcp-host = id:clientidastext、.....

(...)

特別な場合として、複数のハードウェアアドレスを含めることができます。例:--dhcp-host = 11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2これにより、IPアドレスを複数のハードウェアアドレスに関連付けることができ、dnsmasq権限が付与されます。別のハードウェアアドレスがリースを要求したときに、いずれかのハードウェアアドレスへのDHCPリースを放棄する。これは危険なことであることに注意してください。ハードウェアアドレスの1つだけが常にアクティブであり、dnsmasqがこれを強制する方法がない場合にのみ、確実に動作します。たとえば、有線と無線の両方のインターフェースを持つラップトップに安定したIPアドレスを割り当てると便利です。

マルチMacソリューションを選択しました(クライアント側でクライアントIDを指定する方法を見つけようとしなかったため、個別のクライアントごとに行う必要があり、マルチMacの代替は家の中のすべての携帯用の1つのソリューション。)

luciインターフェースを回避し、次の行を/etc/dnsmasq.confに直接追加しました。

dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf

/etc/dnsmasq-dhcphosts.confには、次の形式の行が含まれています。

mac1、mac2、ip

(次の更新で上書きされないように、この構成を別のファイルに保存します。)

正常に動作します。


1

あなたの目的:constant-hostname-of-laptopが常にラップトップの(アクティブなIPアドレス/インターフェース)を指すようにしますか?DNSとDHCPを組み合わせたdnsmasqのサービスがそれを行うと考えていました。つまり、クライアントがDHCPDISCOVER / DHCPREQUESTを実行すると、ホスト名が報告され、dnsmasqはIPアドレスが割り当てられたホスト名を関連付けます。これは私の経験でしたが、1つのネットワークi / fに接続してから、(明示的なリリースを行うことなく)切断して別のネットワークに再度接続しようとしたことはありません。

ホスト名を「ラップトップ」と仮定すると、あるインターフェースから別のインターフェースに切り替えた後、OpenWRTデバイスに「ラップトップ」を照会するとどうなりますか?


1

DHCPを使用する理由

両方のインターフェースで静的IPアドレスを手動で構成してから、希望するものを使用できます(もちろん、他のインターフェースは切断したままにします)。


まあ、これは最も簡単な方法であるため、私が接続するすべてのネットワークに適合する1つの構成です(少なくとも私はそう望んでいました)。
sleepyMonad

0

あなたのスイッチがこれをサポートできるなら、私は非常に驚くでしょう。両方のネットワークインターフェイスに同じMACアドレスを割り当てると、さらに運が上がる場合があります。

それを言って、私は間違いなくHolocrypticに同意します、ここにドラゴンがいます。


同じMACの使用を提案してくれてありがとう。私はそれを行う方法についてはわかりませんが。おそらくそれはBIOSから設定できるものです
...-sleepyMonad

通常、OSで設定するのが最も簡単です。Windowsでは、ネットワークインターフェイスのプロパティの下にあります(手動でMACアドレスを設定します)。
happyhairydude

0

いいえ、できません。ただし、ほとんどのNICでは管理上MACを設定でき、両方のNICを同じMACに設定できます。

ほとんどの* nix boxenでは、通常これを行うことができ、その後、TCPセッションを切断せずに有線接続をホットプラグできるように、両方にフェールオーバーLAGGインターフェイスを設定します(有線を優先)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.