Eu gostaria de dar a clientes desconhecidos um endereço IP em um intervalo e clientes conhecidos em outro (que é estático).
Eu tentei bastante agora e não parecem fazê-lo funcionar. Tudo o que recebo é um erro "sem endereço disponível".
Minha rede é 10.1.0.0/22 (<-!!!) Os convidados devem receber um endereço no intervalo 10.1.3.1-10.1.3.254 Os endereços estáticos estão no intervalo 10.1.2.1-10.1.2.254
então esta é a minha configuração:
iface eth0 inet static
address 10.1.0.2/22
gateway 10.1.0.1
eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.1.0.2/22 brd 10.1.3.255 scope global eth0
valid_lft forever preferred_lft forever
e
dhcp-range=tag:guests,10.1.3.1,10.1.3.254,255.255.252.0,12h
dhcp-range=tag:known,10.1.2.0,static,24h
dhcp-option=option:router,10.1.0.1
dhcp-option=option:dns-server,10.1.0.3
dhcp-option=option:ntp-server,10.1.0.1
dhcp-host=aa:bb:cc:dd:ee:ff,10.1.2.1
dhcp-host=11:22:33:44:55:66,10.1.3.2
Hosts conhecidos recebem seus endereços (independentemente de ser um endereço .2 ou .3), mas desconhecidos não recebem nada.
Você não está fornecendo uma máscara de rede para o
tag:known
intervalo, então o dnsmasq assumirá que é o /22 inteiro, cobrindo completamente otag:guests
intervalo.Parece que a parte problemática era: tag:known. Por algum motivo, o dnsmasq não mostra algo diferente nas mensagens de log de inicialização quando eu o removo, mas agora parece funcionar. (Não posso dizer se funciona com /22 porque parei de usá-lo.)
Para usar uma tag, ela precisa ser definida em algum lugar. Eu faço isso para solicitações retransmitidas de outra sub-rede:
No caso do OP, a entrada dhcp-host seria o local para definir a
known
tag, assim:No entanto (da página de manual do dnsmasq): Quando um host corresponde a qualquer diretiva --dhcp-host (ou uma implícita em /etc/ethers), a tag especial "known" é definida.
Então isso
set:known
está implícito. Usando ! para negar essa tag, podemos aplicar um intervalo diferente a hosts 'desconhecidos':