dnsmasq: mapeando 2 endereços MAC para o mesmo endereço IP

14

É possível mapear 2 endereços MAC diferentes para o mesmo endereço IP?

Para o meu backup, eu preciso me conectar de volta do servidor para o portátil, e gostaria de ter o mesmo IP tanto para a interface sem fio quanto para a interface com fio.

A interface web openwrt não aceita várias entradas dhcp com o mesmo endereço IP, mas talvez haja uma solução alternativa?

Clarificação adicionada em 23 de maio :

Eu deveria ter deixado claro que apenas uma das interfaces de rede do portátil está conectada à rede a qualquer momento (portanto, os switches não devem ficar confusos). Inicialmente eu tinha 2 endereços IP distintos atribuídos às interfaces, com o mesmo nome DNS, mas isso não funcionou muito bem (tempos limite quando recebi o IP errado). No entanto, quero usar o mesmo nome para ambos, pois ele é codificado no meu script de backup.

Desculpe pela confusão.

    
por sleepyMonad 20.05.2011 / 12:43

6 respostas

25

(comentário semi-opinativo aleatório: é raro ver essa alta contagem de respostas e comentários imprecisos e sem base em uma pergunta)

Em contraste com outros aqui, eu reivindico que o seu pedido é realmente elementar e tem sido suportado no dnsmasq desde a versão 2.46 , IIRC. Esta foi a única razão pela qual eu mudei de dd-wrt . Após cerca de um ano de execução do OpenWRT, agora sei que existem muitas outras razões para mudar, mas isso não vem ao caso.

Estou usando o Backfire 10.04-rc4 :

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

Minha configuração:

$ 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'

Aprecie a transição perfeita que essa configuração oferece, todas as sessões existentes permanecem ativas se você não demorar muito para fazer a troca.

    
por 24.05.2011 / 12:42
4

Eu fiz um pouco de pesquisa.

A primeira coisa que aprendi é que é possível atribuir concessões de DHCP com base em critérios diferentes de um endereço MAC.

A partir do FAQ do dhcp:

What is a Client ID?

What is termed the Client ID for the purposes of the DHCP protocol is whatever is used by the protocol to identify the client computer. By default, DHCP implementations typically employ the client's MAC address for this purpose, but the DHCP protocol allows other options. Some DHCP implementations have a setup option to specify the client ID you want. One alternative to the MAC address is simply a character string of your choice. In any case, in order for DHCP to function, you must be certain that no other client is using the client ID you choose, and you must be sure the DHCP server will accept it.

Em seguida, embora aparentemente não seja suportado pela interface da web do luci no openWRT, o próprio dnsmasq suporta client_id e vários endereços MAC (com alguns avisos).

Na página man do dnsmasq :

-G, --dhcp-host=[hwaddr][,id:client_id|*][,set:tag][,ipaddr][,hostname][,lease_time][,ignore] Specify per host parameters for the DHCP server. This allows a machine with a particular hardware address to be always allocated the same hostname, IP address and lease time. A hostname specified like this overrides any supplied by the DHCP client on the machine. It is also allowable to ommit the hardware address and include the hostname, in which case the IP address and lease times will apply to any machine claiming that name. For example --dhcp-host=00:20:e0:3b:13:af,wap,infinite tells dnsmasq to give the machine with hardware address 00:20:e0:3b:13:af the name wap, and an infinite DHCP lease. --dhcp-host=lap,192.168.0.199 tells dnsmasq to always allocate the machine lap the IP address 192.168.0.199.

(...)

It is allowed to use client identifiers rather than hardware addresses to identify hosts by prefixing with 'id:'. Thus: --dhcp-host=id:01:02:03:04,..... refers to the host with client identifier 01:02:03:04. It is also allowed to specify the client ID as text, like this: --dhcp-host=id:clientidastext,.....

(...)

As a special case, it is possible to include more than one hardware address. eg: --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2 This allows an IP address to be associated with multiple hardware addresses, and gives dnsmasq permission to abandon a DHCP lease to one of the hardware addresses when another one asks for a lease. Beware that this is a dangerous thing to do, it will only work reliably if only one of the hardware addresses is active at any time and there is no way for dnsmasq to enforce this. It is, for instance, useful to allocate a stable IP address to a laptop which has both wired and wireless interfaces.

Eu optei pela solução multi-mac (porque eu não tentei descobrir como eu poderia especificar o id do cliente no lado do cliente, que é algo que tem que ser feito para cada cliente separado, e o multi- A alternativa mac é uma solução para todos os portáteis da casa.)

Contornei a interface do luci e adicionei diretamente ao /etc/dnsmasq.conf a seguinte linha:

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

e /etc/dnsmasq-dhcphosts.conf contém linhas com o seguinte formato:

mac1,mac2,ip

(Eu mantenho esta configuração em um arquivo separado para evitar que seja sobrescrita pela próxima atualização).

Funciona bem.

    
por 24.05.2011 / 17:17
1

Seu objetivo: ter o hostname constante de laptop sempre aponta para o laptop (interface / endereço IP ativo do)? Eu teria pensado que o serviço DNS-e-DHCP combinado do dnsmasq faria isso, ou seja, quando um cliente faz um DHCPDISCOVER / DHCPREQUEST ele relata seu nome de host e o dnsmasq associa o nome do host com qualquer endereço IP atribuído. Essa tem sido minha experiência, no entanto devo admitir que não tentei me conectar com uma rede i / f, depois desconectar (sem fazer uma liberação explícita) e conectar novamente com outra.

Assumindo um nome de host de "laptop", o que acontece quando você consulta o dispositivo OpenWRT por "laptop", depois de ter mudado de uma interface para outra?

    
por 23.05.2011 / 19:46
1

Por que usar o DHCP?

Você pode configurar manualmente um endereço IP estático em ambas as interfaces e, em seguida, usar o que preferir (deixando o outro desconectado, é claro).

    
por 23.05.2011 / 20:02
0

Eu ficaria muito surpreso se o seu switch puder suportar isso. Você pode ter mais sorte em dar às duas interfaces de rede o mesmo endereço MAC.

Dizendo isso, eu definitivamente concordo com Holocryptic, aqui são dragões.

    
por 23.05.2011 / 18:31
0

Não, não é possível. Mas a maioria dos NICs permite que você administre ativamente o MAC, e você pode configurar ambos os NICs para o mesmo MAC.

Na maioria dos * nix boxen, você pode fazer isso, então configure uma interface LAGG de failover para ambos (com preferência para o com fio) para permitir que você conecte a conexão com fio sem desconectar as sessões TCP.

    
por 23.05.2011 / 20:22

Tags