dnsmasq: відображення 2 MAC-адрес на ту саму IP-адресу


17

Чи можна зіставити 2 різні MAC адреси на одну і ту ж IP-адресу?

Для моєї резервної копії мені потрібно підключитися назад із сервера до портативного, і я хотів би мати однаковий IP і для бездротового, і для провідного інтерфейсу.

Веб-інтерфейс openwrt не приймає декілька записів dhcp з однаковою IP-адресою, але, можливо, існує рішення?

Роз'яснення додано 23 травня :

Я мав би дати зрозуміти, що тільки один з мережевих інтерфейсів портативного підключений до мережі в будь-який момент часу (отже, комутатори не повинні плутатись). Спочатку у мене було два чіткі IP-адреси, призначені інтерфейсам, з тим самим іменем DNS, але це не спрацювало дуже добре (тайм-аути, коли я отримав неправильний IP-адресу). Але я хочу використовувати те саме ім’я для обох, як це жорстко закодовано в моєму резервному скрипті.

Вибачте за непорозуміння.


Я впевнений, що шенагігани настануть, якщо спробувати це.
Холокриптик

ОС на клієнті (і, можливо, на сервері) також може бути германською тут
Norky

Відповіді:


29

(випадковий напівпереконливий коментар: рідко можна побачити цю велику кількість неконструктивних та очевидних неточних відповідей та коментарів на запитання)

На відміну від інших, я стверджую, що ваш запит насправді є елементарним і підтримується в dnsmasq з версії 2.46 , IIRC. Це було єдиною причиною переходу з dd-wrt . Приблизно через рік роботи OpenWRT я тепер знаю, що насправді є набагато більше причин для перемикання, але це вже не в цьому.

Я запускаю 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
Я б схвалив цю відповідь, тому що вона відповідає на моє запитання дуже детально, але ще не має карми.
соннийМонад

І додаткові точки брауні, оскільки, схоже, Luci (веб-інтерфейс) насправді підтримує цей формат.
соннийМонад

1
Минулої ночі у мене трапилася ситуація, коли я не знав, що wlan0 все ще є підключеним (постановка brcm80211 може бути крихітною b0rked) під час підключення eth0. dnsmasq не мав конкретної проблеми з цим, він просто призначив новий IP для eth0. Погано те, що потім вам доведеться перейти в маршрутизатор, зупинити dnsmasq і відредагувати / вбити /tmp/dhcp.leases, перезапустити dnsmasq, щоб речі повернулися до потрібного робочого режиму.
lkraav

2
Щоб вигнати те, що, на мою думку, є важливою частиною цього, ви можете включити декілька MAC-адрес в один запис (у цей файл або в інтерфейс Luci). Отже, замість того, щоб робити рядок з ab:cd:ef:01:02:03і інший з 04:05:06:07:08:09, просто зробіть один запис з одним пробілом, який розділяє два, наприклад ab:cd:ef:01:02:03 04:05:06:07:08:09.
teeks99

6

Я трохи провів дослідження.

Перше, що я дізнався, це те, що можна призначати оренду DHCP на основі критеріїв, відмінних від MAC-адреси.

З FAQ про dhcp :

Що таке ідентифікатор клієнта?

Ідентифікатор клієнта для цілей протоколу DHCP - це те, що використовується протоколом для ідентифікації клієнтського комп'ютера. За замовчуванням реалізація DHCP зазвичай використовує MAC-адресу клієнта для цієї мети, але протокол DHCP дозволяє інші варіанти. У деяких реалізаціях DHCP є опція настройки, щоб вказати потрібний ідентифікатор клієнта. Однією з альтернатив MAC-адреси є просто символьна рядок на ваш вибір. У будь-якому випадку, щоб DHCP функціонував, ви повинні бути впевнені, що жоден інший клієнт не використовує вибраний вами ідентифікатор клієнта, і ви повинні бути впевнені, що сервер DHCP прийме його.

Тоді, хоча це, мабуть, не підтримується веб-інтерфейсом luci на openWRT, сам dnsmasq підтримує client_id та кілька MAC-адрес (з певною обережністю).

Зі сторінки dnsmasq man :

-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, ім'я хоста] [, lease_time] [, ігнорувати] Вкажіть параметри хоста для сервера DHCP . Це дозволяє машині з певною апаратною адресою завжди мати однакове ім'я хоста, IP-адресу та час оренди. Ім'я хоста, вказане таким чином, переосмислює будь-яке, що надається клієнтом DHCP. Також можна опустити апаратну адресу та включити ім'я хоста, і в цьому випадку IP-адреса та терміни оренди застосовуватимуться до будь-якої машини, яка претендує на це ім’я. Наприклад --dhcp-host = 00: 20: e0: 3b: 13: af, wap, нескінченно повідомляє dnsmasq надати машині з апаратною адресою 00: 20: e0: 3b: 13: af імені wap та нескінченного Оренда DHCP. --dhcp-host = lap, 192.168.0.199 повідомляє dnsmasq завжди виділяти машині в колі IP-адресу 192.168.0.199.

(...)

Дозволяється використовувати ідентифікатори клієнтів, а не апаратні адреси для ідентифікації хостів за допомогою префіксації "id:". Таким чином: --dhcp-host = id: 01: 02: 03: 04, ..... посилається на хост з ідентифікатором клієнта 01: 02: 03: 04. Дозволено також вказати ідентифікатор клієнта як текст, наприклад: --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 на одну з апаратних адрес, коли інша вимагає оренди. Будьте уважні, що це небезпечна річ, вона надійно працюватиме лише в тому випадку, якщо в будь-який час буде активна лише одна з апаратних адрес і немає можливості dnsmasq виконати це. Наприклад, корисно виділити стабільну IP-адресу ноутбуку, який має дротовий та бездротовий інтерфейси.

Я обрав рішення для multi-mac (тому що я не намагався з’ясувати, як я міг би вказати ідентифікатор клієнта на стороні клієнта, що потрібно зробити для кожного окремого клієнта, а альтернатива multi-mac - це одне рішення для всіх портативних пристроїв у будинку.)

Я обійшов інтерфейс Luci і додав безпосередньо до /etc/dnsmasq.conf наступний рядок:

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

та /etc/dnsmasq-dhcphosts.conf містить рядки наступного формату:

mac1, mac2, ip

(Я зберігаю цю конфігурацію в окремому файлі, щоб запобігти перезапису наступного оновлення.)

Добре працює.


1

Ваша мета: щоб постійне ім'я хоста-ноутбука завжди вказувало на (активну IP-адресу / інтерфейс) ноутбука? Я б міг подумати, що комбінована служба DNS-і-DHCP dnsmasq зробить це, тобто, коли клієнт робить DHCPDISCOVER / DHCPREQUEST, він повідомляє своє ім'я хоста, а dnsmasq пов'язує ім'я хоста з тим, який IP-адреса призначено. Це був мій досвід, проте я мушу визнати, що я не намагався з'єднатись з однією мережею i / f, потім відключити (не роблячи явного випуску) та знову з'єднавшись з іншою.

Якщо припустити ім'я хоста "ноутбук", що відбувається, коли ви запитуєте пристрій OpenWRT на "ноутбук", перейшовши з одного інтерфейсу на інший?


1

Навіщо використовувати DHCP?

Ви можете вручну налаштувати статичну IP-адресу на обох інтерфейсах, а потім скористатись тим, який ви віддаєте перевагу (залишаючи, звичайно, інший відключений).


Ну, тому що це найпростіший метод, той конфігуратор, який відповідає всім мережам, до яких я підключаюся (або так, я принаймні сподівався).
соннийМонад

0

Я був би дуже здивований, якщо ваш перемикач може це підтримати. Можливо, вам пощастить дати обом мережевим інтерфейсам однакову MAC-адресу.

Кажучи це, я безумовно згоден з Холокриптиком, тут бути драконами.


дякую, що запропонували використовувати той самий MAC; хоча я не впевнений у тому, як це зробити. Можливо, це щось, що я можу налаштувати з BIOS ...
sleepyMonad

Зазвичай найпростіше просто встановити його в ОС, у Windows - це під властивостями мережевого інтерфейсу (встановити MAC-адресу вручну).
happyhairydude

0

Ні, це неможливо. Але більшість NIC дозволяють адміністративно встановити MAC, і ви можете встановити обидва NIC в одному MAC.

У більшості * nix boxen зазвичай ви можете це зробити, після чого встановіть інтерфейс LAGG для відключення обох (з перевагою дротового), щоб дозволити гарячому підключенню дротового з'єднання, не відключаючи сеанси TCP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.