基本上我的问题是,我运行VM开发网站。的dnsmasq,服务于不同的IP地址的基础上使用的接口
该主机具有其DNS在其运行的dnsmasq从而解决各种开发网站的地址指向虚拟机,即test.mysite.vm等
的问题是,当我从我的工作网络去我的家庭网络全部因为虚拟机IP改变而中断。是否可以根据请求来自哪个接口来提供不同的IP地址?或者我应该试图以完全不同的方式解决这个问题?
感谢您的帮助!
基本上我的问题是,我运行VM开发网站。的dnsmasq,服务于不同的IP地址的基础上使用的接口
该主机具有其DNS在其运行的dnsmasq从而解决各种开发网站的地址指向虚拟机,即test.mysite.vm等
的问题是,当我从我的工作网络去我的家庭网络全部因为虚拟机IP改变而中断。是否可以根据请求来自哪个接口来提供不同的IP地址?或者我应该试图以完全不同的方式解决这个问题?
感谢您的帮助!
您可以用不同的接口,它监听上运行的dnsmasq
两个实例,每个。您可以使用--interface=X
和--bind-interfaces
选项。默认情况下,它还会绑定回环设备lo
,如果两个进程尝试绑定它,则会失败。使用--except-interface=lo
来避免这种情况。
dnsmasq --interface=eth0 --except-interface=lo --bind-interfaces --dhcp-range=192.168.0.2,192.168.0.10,12h
dnsmasq --interface=eth1 --except-interface=lo --bind-interfaces --dhcp-range=10.0.0.2,10.0.0.10,12h
确定您的配置文件在测试时为空,因为它总是覆盖命令行。您也可以使用--conf-file=/dev/null
。
正如我在评论中提到的,我也不太清楚如何帮助您的情况,但它可能会帮助别人谁试图让两个不同的接口,两个不同的地址范围。
虽然@ kichik的答案可能会奏效,但更好的方法可能是使用localise-queries
指令和单个dnsmasq
服务器实例。
我会假设你已经配置了DHCP范围为不同的接口,并结合dnsmasq
那些。
(部分记录)localise-queries
选项添加到您的dnsmasq.conf
文件。
# /etc/dnsmasq.conf
localise-queries
然后,请确保该文件的一个dnsmasq
读取你的主机(如/etc/hosts
)中包含两个网络的IP地址的条目,如:
# /etc/hosts
127.0.0.1 dev-vm
192.168.1.1 dev-vm
10.0.0.1 dev-vm
的替代方法改变/etc/hosts
文件在dnsmasq.conf
文件,而不是到指定地址:
# /etc/dnsmasq.conf
localise-queries
host-record=dev-vm,127.0.0.1
host-record=dev-vm,192.168.1.1
host-record=dev-vm,10.0.0.1
如b A结果超视距情况下,dnsmasq
将只能是该接口的针对特定接口上收到的查询IP地址和子网掩码相匹配的IP。
按照man page,该执行以下操作:
-y,--localise查询
返回答案,从/ etc/hosts中的DNS查询依赖的接口在其上查询已收到。如果/ etc/hosts中的名称具有多个与之关联的地址,并且这些地址中的至少一个与发送查询的接口位于同一子网上,则只返回该子网上的地址(es) 。这允许服务器在每个接口对应的/ etc/hosts中有多个地址,并且主机将根据它们所连接的网络来获取正确的地址。目前该设施仅限于IPv4。
在每个参数的开头添加接口对我来说工作正常。 例子(dnsmasq.conf):
dhcp-host=eth0,00:22:43:4b:18:43,192.168.0.7
dhcp-host=eth1,00:22:43:4b:18:43,192.168.1.7
我使用的版本:
$ dnsmasq --version
Version de Dnsmasq 2.68 Copyright (c) 2000-2013 Simon Kelley
当使用'dhcp-range'而不是'dhcp-host'时也适用于我。这应该是当前dnsmasq版本的可接受解决方案。 – Dyna 2015-04-06 10:17:56
@Dyna它的作品,但它没有记录或我错过了什么? – Murmel 2016-03-18 09:05:36
@ user1885518我一直在努力解决同一个问题,直到我在[man page]中找到它(http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html):'The tag“bootp “被设置为BOOTP请求,并且名称是请求到达的接口的名称的标签也被设置。所以总是有一个以请求到达的接口命名的标签。对于多vlan dhcp非常有用。 – GnP 2016-08-01 19:51:02
另外,您还可以创建多个配置文件下/etc/dnsmasq.d/
,一个是你要投放的每个接口DHCP。
例如,如果你有一个名为wlan0
和wlan1
两个无线接口,并且要服务于他们DHCP感谢的dnsmasq,您可以/etc/dnsmasq.d/
下创建两个文件来配置每个接口:
/etc/dnsmasq.d/dnsmasq-wlan0.conf
:
interface=wlan0 # Use interface wlan0
listen-address=10.0.0.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=10.0.0.50,10.0.0.150,12h # Assign IP addresses between 10.0.0.50 and 10.0.0.150 with a 12 hour lease time
/etc/dnsmasq.d/dnsmasq-wlan1.conf
:
interface=wlan1 # Use interface wlan0
listen-address=20.0.0.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=20.0.0.50,20.0.0.150,12h # Assign IP addresses between 20.0.0.50 and 20.0.0.150 with a 12 hour lease time
对我牛逼帽子是配置系统的一种非常干净的方式,并且配置在重新启动之间保持不变。
不同界面在哪里起作用?你的家庭网络和工作网络使用两种不同的接口吗?为什么虚拟机的IP更改? – kichik 2012-11-08 18:59:49
是的,它是2个不同的家庭(192.168.0。*)和工作(10.0.0。*)接口。工作IP和家庭IP之间的变化。 – 2012-11-13 10:10:00