使用dnsmasq来服务多个子网

我是使用dnsmasq的新手,我想继续在实验室环境中使用它。 但是,新的,我不确定什么命令/文件使用。 我花了两天时间研究和了解我的环境是如何configuration的,而且我愿意在这个时候重做整个虚拟机。

结束状态:我想configuration运行dnsmasq的vm可以作为三个vlan的DNS和DHCP服务器,每个vlan都有自己的子网。

我的环境:

  • 带有三个虚拟网卡的VMware vm与ubuntu 14.04服务器
  • 每个NIC分配给一个vmware分布式交换机端口组,分布式交换机具有vlan集群
  • 每个端口组都分配一个vlan
  • 这三个(样本)子网是10.1.1.0/24,10.2.1.0/24和10.2.2.0/24
  • 路由器是Cisco Catalyst 3560

有人可以一步一步解释如何设置dnsmasq达到所需的最终状态? 这不仅会帮助我,而且会让其他人得到这些指示供将来使用。

虽然我不希望有太多的环境具体细节(为了使它适用于更广泛的受众),请告诉我是否有任何我需要澄清。

我到目前为止所尝试的:

  • 在/ etc / networks / interfaces文件中声明每个NIC的IP地址,networking掩码,networking和广播。 我在网关和名称服务器选项中添加了第一个界面,但这不起作用。

  • 看起来有希望的一个问题/答案build议我把它放在configuration中:post-up route add 10.2.2.10 dev eth1,post-up route add 10.1.1.10 via 10.1.1.1 dev eth2,不pipe怎么样

  • 我在dnsmasqconfiguration中尝试了两种types的监听,一种是基于静态IP分配的nics,另一种是接口名称,这是我目前使用的:

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

  • 我已经设置了选项三来指定每个网关以及每个接口的范围: dhcp-range=eth0,10.2.1.121,10.1.1.249,24h dhcp-option=eth0,3,10.2.1.1

  • 我有选项6设置,但后来我被告知运行命令dnsmasq -y ,我不断收到绑定错误。 所以我评论了这个选项。 但是,这是我所拥有的: dhcp-option=eth0,6,10.2.1.10

到目前为止,如果我在10.1.1.0/24子网上静态地给vm一个addr,它可以ping其他子网上的其他vms。 但是,当我尝试ping 10.1.1.10(ip addr分配给该子网的dnsmasq nic)它不解决。 dnsmasq服务器仍然适用于为其configuration的第一个子网(10.2.1.0/24),但是我想让它为其他两个子网工作。

另外,为了澄清,当我说它不起作用,我的意思是testing虚拟机我有一个新的子网不能ping它的子网的DNS地址,不能上网。

所以,为了重申一下,我想得到上面描述的最终状态,而我认为社区会从如何为工程师设置这种types的环境逐步获得更多好处,所有我需要的是要确定我需要做什么来将当前状态移动到最终状态。

我在这里先向您的帮助表示感谢!

我之前和一个处理过这种事情的朋友聊过,这就是我们为了使环境到达最终状态所做的。

首先,我从来没有使用dnsmasq -y,只要我重新启动dnsmasq服务和testingVM

我们做的第一件事是修复dnsmasq服务器。 在/ etc / network / interfaces中,你指定了你想要的ip addr,使用255.255.255.0的networking掩码,并为该networking定义networking。 它看起来像这样:

 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 

eth0是唯一的变化,这三行已经在那里了。 不知道他们是否需要(希望其他人可以澄清),但这是我补充说:

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

我也删除了两条后路线,因为他们不需要。

最后,我需要修复dnsmasq.conf; 这里我添加了lo界面,并注释掉了no-dhcp-interface:

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

修复了服务器。 接下来要实现的最终状态是configuration您的路由器以允许跨VLAN通信。 在这个问题之前,我已经完成了这个工作,但是这里有一篇文章来做这个configuration: http : //www.cisco.com/c/en/us/support/docs/lan-switching/inter-vlan-routing/ 41860-HOWTO-L3-intervlanrouting.html

最后,我发现testingvm并没有在名称服务器中join到resolv.conf中,所以我在/etc/resolvconf/resolv.conf.d/中添加了一个名为tail的文件,并简单地为该子网添加了dns服务器的ip:

 nameserver 10.1.1.10 

一旦我完成了,我能够运行apt-get update和ping我的DNS名称。 我也改变了testingvm的接口文件,所以它会得到一个dhcp地址,一旦我重新启动,它能够接收DHCP地址。

我希望这可以帮助大家! 如果您希望我澄清,欢迎留下任何意见。