Назад | Перейти на главную страницу

dnsmasq: сопоставление 2 MAC-адресов одному IP-адресу

Можно ли сопоставить 2 разных MAC-адреса одному IP-адресу?

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

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

Разъяснение добавлено 23 мая:

Я должен был дать понять, что только один из сетевых интерфейсов портативного устройства подключен к сети в любой момент времени (следовательно переключатели не должны путаться). Первоначально у меня было 2 разных IP-адреса, назначенных интерфейсам с одинаковым DNS-именем, но это не сработало (таймауты, когда я получил неправильный IP-адрес). Тем не менее, я хочу использовать одно и то же имя для обоих, так как оно жестко запрограммировано в моем сценарии резервного копирования.

Извините за путаницу.

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

В отличие от других здесь, я утверждаю, что ваш запрос на самом деле довольно прост и был поддерживается в dnsmasq с версии 2.46, IIRC. Это была единственная причина, по которой я переключился с dd-wrt. Примерно через год использования OpenWRT я теперь знаю, что на самом деле есть еще много причин для перехода, но это не относится к делу.

я бегу Обратный огонь 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'

Наслаждайтесь плавным переходом, который обеспечивает эта настройка, все существующие сеансы останутся в живых, если вы не потратите слишком много времени на переключение.

Я провел небольшое исследование.

Первое, что я узнал, это то, что можно назначать аренду DHCP на основе критериев, отличных от MAC-адреса.

С dhcp Вопросы-Ответы:

Что такое идентификатор клиента?

Идентификатор клиента для протокола DHCP - это то, что используется протоколом для идентификации клиентского компьютера. По умолчанию реализации DHCP обычно используют для этой цели MAC-адрес клиента, но протокол DHCP допускает другие варианты. Некоторые реализации DHCP имеют параметр настройки, позволяющий указать нужный идентификатор клиента. Альтернативой MAC-адресу является простая строка символов по вашему выбору. В любом случае, чтобы DHCP работал, вы должны быть уверены, что ни один другой клиент не использует выбранный вами идентификатор клиента, и вы должны быть уверены, что DHCP-сервер его примет.

Затем, хотя он явно не поддерживается веб-интерфейсом luci в openWRT, сам dnsmasq поддерживает client_id и несколько MAC-адресов (с некоторыми предупреждениями).

Из dnsmasq страница руководства:

-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 указывает 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-адрес портативному компьютеру, который имеет как проводные, так и беспроводные интерфейсы.

Я выбрал решение с несколькими Mac (потому что я не пытался выяснить, как я могу указать идентификатор клиента на стороне клиента, что должно быть сделано для каждого отдельного клиента, а альтернативой с несколькими Mac является одно решение для всех портативных устройств в доме.)

Я обошел интерфейс luci и добавил непосредственно в /etc/dnsmasq.conf следующую строку:

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

и /etc/dnsmasq-dhcphosts.conf содержит строки следующего формата:

mac1, mac2, ip

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

Работает отлично.

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

Предполагая, что имя хоста - «портативный компьютер», что произойдет, когда вы запросите устройство OpenWRT для «портативного компьютера» после переключения с одного интерфейса на другой?

Зачем использовать DHCP?

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

Я был бы очень удивлен, если бы ваш коммутатор мог это поддерживать. Возможно, вам повезет, если вы предоставите обоим сетевым интерфейсам одинаковый MAC-адрес.

Сказав это, я определенно согласен с Holocryptic, вот драконы.

Нет, это невозможно. Но большинство сетевых адаптеров позволяют вам административно устанавливать MAC, и вы можете установить для обоих сетевых адаптеров один и тот же MAC.

На большинстве * nix boxen вы обычно можете это сделать, а затем настроить аварийный интерфейс LAGG для обоих (с предпочтением для проводного), чтобы вы могли оперативно подключать проводное соединение без отключения сеансов TCP.