我和一小群开发人员刚搬到新办公室,我想在我们的开发上设置dnsmasq
服务器,所以当我们在那里部署Web应用程序时,我们不必编辑自己的主机文件.我们有一台192.168.3.1的路由器
我们无权访问.我想我会在开发盒上安装一个DNS服务器,我们都会记录它的IP
作为辅助DNS服务器.不幸的是,我很努力地做这项工作.
服务器,所以当我们在那里部署Web应用程序时,我们不必编辑自己的主机文件.我们有一台192.168.3.1的路由器
我们无权访问.我想我会在开发盒上安装一个DNS服务器,我们都会记录它的IP
作为辅助DNS服务器.不幸的是,我很努力地做这项工作.
devel服务器的名称是devBox,它的IP是192.168.3.99,它正在运行最新的Ubuntu Server(Karmic)
我的电脑正在运行Ubuntu Desktop(Karmic)
我想要实现的目标
假设我在开发框上运行了三个网站:website1,website2,website3.
我想通过网址访问它们:
http://website1.devBox http://website2.devBox http://website3.devBox
所以我在开发盒上配置了Apache,安装了dnsmasq,并将以下行放入它的hosts文件中:
192.168.3.99 website1.devBox 192.168.3.99 website2.devBox 192.168.3.99 website3.devBox
并编辑了我自己的resolv.conf文件,将devel框包含为名称服务器:
nameserver 192.168.3.99
它工作正常,我可以访问这些网站.问题是它不能很好地扩展.我希望所有域名都以.结尾
.devBox转发到开发框,这就是我正在努力的方向.
我试过推杆
192.168.3.99 devBox
进入hosts文件,并在dnsmasq.conf中编辑行:
# Add local-only domains here,queries in these domains are answered # from /etc/hosts or DHCP only. local=/devBox/
但我无法让它发挥作用.如果我尝试任何未明确出现在开发框的hosts文件中的url,则dns查找失败.
是否有其他东西的本地指令?我在找错了地方吗?
解决方法
请参阅
DNSmasq documentation,尤其是
@L_502_1@和
sample configuration file.本地关键字告诉DNSmasq使用本地数据执行这些域查找.例如,这会影响发送到DNSmasq的foo.localnet和bar.localnet的请求.我不认为这是你想要的.
# Add local-only domains here,queries in these domains are answered # from /etc/hosts or DHCP only. local=/localnet/
要强制主机/子域查找解析到特定地址,您可能希望使用address关键字.下面的第二个示例应允许web1.devBox和web2.devBox以及web73872.devBox全部解析为指定的地址.
# Add domains which you want to force to an IP address here. # The example below send any host in doubleclick.net to a local # webserver. address=/doubleclick.net/127.0.0.1 # for your example address=/devBox/192.168.3.99
我在家里使用DNSmasq为我的局域网处理简单的DNS东西;在这种情况下,本地和关联的域以及expand-hosts关键字是合适的. DNSmasq服务器是我的主要名称服务器,因此所有请求都通过它;任何非本地地址都会传回ISP的名称服务器.如果可能,您可以考虑该配置.