Usando o dnsmasq para atender várias sub-redes

2

Sou muito novo no uso do dnsmasq e gostaria de continuar utilizando-o em meu ambiente de laboratório. No entanto, sendo novo, não tenho certeza de quais comandos / arquivos usar. Eu passei dois dias pesquisando e aprendendo como meu ambiente estava configurado, e estou disposto a refazer toda a VM neste momento.

Estado final: gostaria de configurar o vm executando o dnsmasq para poder servir como servidor DNS e DHCP para três vlans, cada uma com sua própria sub-rede.

Meu ambiente:

  • VMware vm com o servidor do Ubuntu 14.04 com três NICs vituais
  • Cada NIC é atribuída a um grupo de portas de switch distribuído do vmware e o switch distribuído tem as vlans troncalizadas para ele
  • Cada grupo de portas é atribuído a uma vlan
  • As três sub-redes (amostras) são 10.1.1.0/24, 10.2.1.0/24 e 10.2.2.0/24
  • O roteador é um Cisco Catalyst 3560

Alguém pode explicar passo-a-passo como configurar o dnsmasq para alcançar o estado final desejado? Isso não apenas me ajudará, mas permitirá que outras pessoas tenham essas instruções para uso futuro.

Embora eu não queira que haja muitos detalhes específicos do ambiente (para mantê-lo aplicável a um público mais amplo), deixe-me saber se há algo que eu precise esclarecer.

O que tentei até agora:

  • Declarando o ip addr, netmask, network e broadcast de cada nic no arquivo / etc / networks / interfaces. Eu adicionei as opções gateway e nameserver à primeira interface, mas isso não funciona.

  • Uma pergunta / resposta que parecia promissora sugeriu que eu colocasse isso na configuração: post-up route add 10.2.2.10 via 10.2.2.1 dev eth1, post-up route add 10.1.1.10 via 10.1.1.1 dev eth2, mas isso também não funcionou.

  • Eu tentei dois tipos de escuta na configuração do dnsmasq, uma baseada no IP estático que atribuí as nics e a outra nos nomes da interface, que é o que tenho atualmente:

    interface=eth0 no-dhcp-interface=eth0 interface=eth1 interface=eth2 no-dhcp-interface=eth1 no-dhcp-interface=eth2

  • Eu configurei a opção três para especificar cada gateway, bem como o intervalo para cada interface: %código% dhcp-range=eth0,10.2.1.121,10.1.1.249,24h

  • Eu tinha a opção 6 definida, mas me disseram para executar o comando dhcp-option=eth0,3,10.2.1.1 e continuei recebendo erros de ligação. então eu comentei essa opção. No entanto, isso é o que eu tinha: dnsmasq -y

A partir de agora, se eu der staticamente um vm na sub-rede 10.1.1.0/24, um addr pode pingar as outras vms nas outras sub-redes. No entanto, quando eu tento pingar 10.1.1.10 (o ip addr atribuído ao dnsmasq nic para essa sub-rede) ele não resolve. O servidor dnsmasq ainda funciona para a primeira sub-rede para a qual ele foi configurado (10.2.1.0/24), mas eu quero que ele funcione para as outras duas sub-redes.

Além disso, para esclarecer, quando eu disser que não funciona, quero dizer que o teste que eu tenho em uma das novas sub-redes não pode pingar o DNS da sub-rede e não consigo acessar a Internet.

Então, para reafirmar, quero ter o que eu tenho para o estado final descrito acima, e enquanto eu acho que a comunidade se beneficiaria mais de ter um passo-a-passo sobre como definir esse tipo de ambiente para o seu engenheiros, tudo que preciso é descobrir o que preciso fazer para mover meu estado atual para o estado final.

Obrigado pela ajuda antecipadamente!

    
por John Quicksall 22.07.2015 / 04:47

1 resposta

2

Eu conversei com um amigo meu que já lidou com esse tipo de coisa antes e aqui está o que fizemos para colocar o ambiente no estado final.

Primeiro, eu nunca tive que usar o dnsmasq -y, isso funcionou assim que eu reiniciei o serviço dnsmasq e a VM de teste

A primeira coisa que fizemos foi consertar o servidor dnsmasq. Em / etc / network / interfaces, você especifica o ip addr que deseja para isso, use uma máscara de rede de 255.255.255.0 e defina a rede para esse nic. Será assim:

auto eth1
iface eth1 inet static
 address 10.2.2.10
 netmask 255.255.255.0
 network 10.2.2.0
 broadcast 10.2.2.255

A única mudança é para a eth0, na qual essas três linhas já estavam lá. Não tenho certeza se eles são necessários (espero que alguém possa esclarecer isso), mas é isso que eu tinha acrescentado:

up route add default gw 10.2.1.1
dns-search      my.lab
dns-nameservers <Corp-DNS-server>

Eu também removi as duas linhas de rota de post-up, já que elas não eram necessárias.

Finalmente, eu precisava consertar o dnsmasq.conf; aqui adicionei a interface e comentei a interface no-dhcp:

interface=lo
interface=eth0
interface=eth1
interface=eth2
#no-dhcp-interface=eth0
#no-dhcp-interface=eth1
#no-dhcp-interface=eth2

Isso consertou o servidor. A próxima coisa a atingir o estado final é configurar seu roteador para permitir a comunicação entre vlan. Eu já tinha feito isso antes desta questão, mas aqui está um artigo para fazer essa configuração: link

Por fim, achei que o teste vm não estava adicionando o nameserver ao seu resolv.conf, então eu adicionei um arquivo chamado tail ao /etc/resolvconf/resolv.conf.d/ e simplesmente adicionei o ip do servidor dns para essa sub-rede:

nameserver 10.1.1.10

Quando terminei isso, consegui executar apt-get update e pingar meus nomes de DNS. Eu também alterei o arquivo de interface do teste vm para obter um dhcp addr e assim que eu reiniciei, ele foi capaz de receber dhcp addrs.

Espero que isso ajude a todos! Sinta-se à vontade para deixar comentários se quiser esclarecer.

    
por 23.07.2015 / 20:51