Joh*_*all 5 domain-name-system dhcp dnsmasq vmware-vsphere ubuntu-14.04
我对使用 dnsmasq 还很陌生,我想继续在我的实验室环境中使用它。但是,作为新手,我不确定要使用哪些命令/文件。我花了两天时间研究和了解我的环境是如何配置的,此时我愿意重做整个虚拟机。
结束状态:我想将运行 dnsmasq 的 vm 配置为能够同时充当三个 vlan 的 DNS 和 DHCP 服务器,每个 vlan 都有自己的子网。
我的环境:
有人可以逐步解释如何设置 dnsmasq 以达到所需的最终状态吗?这不仅可以帮助我,而且可以让其他人获得这些说明以备将来使用。
虽然我不希望有太多特定于环境的细节(以使其适用于更广泛的受众),但如果有什么我需要澄清的地方,请告诉我。
到目前为止我尝试过的:
在 /etc/networks/interfaces 文件中声明每个 nic 的 ip 地址、网络掩码、网络和广播。我在第一个界面中添加了网关和名称服务器选项,但这不起作用。
一个看起来很有希望的问题/答案建议我把它放在配置中: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,但是没有'也不行。
我在 dnsmasq 配置中尝试了两种类型的侦听,一种基于我分配给 nics 的静态 IP,另一种基于接口名称,这是我目前所拥有的:
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 子网上的一个虚拟机一个地址,它可以 ping 其他子网上的其他虚拟机。但是,当我尝试 ping 10.1.1.10(分配给该子网的 dnsmasq 网卡的 ip 地址)时,它无法解析。dnsmasq 服务器仍然适用于为其配置的第一个子网 (10.2.1.0/24),但我想让它适用于其他两个子网。
另外,澄清一下,当我说它不起作用时,我的意思是我在新子网之一上的测试虚拟机无法 ping 它的子网的 dns 地址并且无法访问互联网。
所以,重申一下,我想得到我所拥有的到上述最终状态,虽然我认为社区会从如何为他们的工程师设置这种类型的环境中获得更多好处,所有我需要的是弄清楚我需要做什么才能将我的当前状态移动到最终状态。
我在这里先向您的帮助表示感谢!
我和我的一个朋友谈过,他以前处理过这种类型的事情,这是我们为使环境达到最终状态所做的工作。
首先,我从来不需要使用 dnsmasq -y,只要我重新启动 dnsmasq 服务和测试虚拟机,它就起作用了
我们做的第一件事是修复 dnsmasq 服务器。在 /etc/network/interfaces 中,您为该网卡指定所需的 ip 地址,使用 255.255.255.0 的网络掩码,并为该网卡定义网络。它看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
唯一的变化是 eth0,其中这三行已经存在。不确定是否需要它们(希望其他人可以澄清这一点)但这是我添加的内容:
up route add default gw 10.2.1.1
dns-search my.lab
dns-nameservers <Corp-DNS-server>
Run Code Online (Sandbox Code Playgroud)
我还删除了两条后期路线,因为不需要它们。
最后,我需要修复 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
Run Code Online (Sandbox Code Playgroud)
那修复了服务器。实现最终状态的下一件事是配置您的路由器以允许跨 vlan 通信。在这个问题之前我已经这样做了,但这里有一篇文章来做这个配置:http : //www.cisco.com/c/en/us/support/docs/lan-switching/inter-vlan-routing/ 41860-howto-L3-intervlanrouting.html
最后,我发现测试虚拟机没有将名称服务器添加到它的 resolv.conf,所以我添加了一个名为 tail 的文件到 /etc/resolvconf/resolv.conf.d/ 并简单地添加了该子网的 dns 服务器的 ip:
nameserver 10.1.1.10
Run Code Online (Sandbox Code Playgroud)
完成后,我就可以运行apt-get update并 ping 我的 dns 名称。然后我还更改了测试虚拟机的接口文件,以便它获得一个 dhcp 地址,一旦我重新启动,它就能够收到 dhcp 地址。
我希望这对大家有帮助!如果您希望我澄清,请随时留下任何评论。