我在用作无线 AP 的计算机上运行 Ubuntu 服务器,但此 AP 应将所有 DNS 请求解析为内部 IP 地址,而不是实际执行查找。
我想做与付费公共 WiFi 热点相同的事情 - 您可以连接,但如果您尝试加载任何网站,它们会显示默认页面。我注意到他们通过将所有域解析为内部 IP 地址来做到这一点。
我已将这些行添加到/etc/dnsmasq.conf:
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
address=/com/192.168.2.1
address=/uk/192.168.2.1
address=/org/192.168.2.1
address=/gov/192.168.2.1
address=/net/192.168.2.1
address=/us/192.168.2.1
Run Code Online (Sandbox Code Playgroud)
这对那些 TLD 来说效果很好,但我希望能够对所有域都这样做,这样我就可以晚上睡觉了。
我正在使用大约 10 个 kubuntu 桌面(以及众多服务器和 IP 电话)的网络上工作,并试图让 dnsmasq 将另一个 dns 服务器指定为故障转移。我尝试使用
server=192.168.0.90
Run Code Online (Sandbox Code Playgroud)
但这只是将单个 dhcp/dns 服务器添加到我的测试机器上的 /etc/resolv.conf(动态 IP 并且在没有租约的情况下重新启动)。
现在我在 dnsmasq.conf 中有以下行,它可以很好地处理所有请求(/#/匹配任何域;这是必需的):
address=/#/127.0.0.1
Run Code Online (Sandbox Code Playgroud)
但是,有些域需要解析为 .ip 以外的 IP 地址127.0.0.1。
作为临时解决方案,它们已添加到/etc/hosts:
209.85.148.95 ajax.googleapis.com
207.97.227.245 underscorejs.org
72.21.194.31 s3.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个非常临时的解决方案:一旦任何目标域的 IP 地址发生变化,它就会停止工作。
我的问题是:如何强制 dnsmasq 使用上游 dns 服务器来解析某些(指定的)域名的 IP 地址?
我和一小群开发人员刚搬到一个新办公室,我想在我们的开发服务器上设置 dnsmasq,所以当我们在那里部署 Web 应用程序时,我们不必编辑我们自己的主机文件。我们在 192.168.3.1 有一个我们无法访问的路由器。我想我会在开发盒上安装一个 DNS 服务器,我们都将它的 IP 记录为辅助 DNS 服务器。不幸的是,我正在努力完成这项工作。
开发服务器名称为devbox,IP为192.168.3.99,运行的是最新的Ubuntu Server(Karmic)
我的电脑正在运行 Ubuntu Desktop (Karmic)
假设我在开发箱上运行了三个网站,网站 1、网站 2、网站 3。我想通过 URL 访问它们:
http://website1.devbox
http://website2.devbox
http://website3.devbox
Run Code Online (Sandbox Code Playgroud)
所以我已经在开发盒上配置了Apache,安装了dnsmasq,并将以下几行放入其hosts文件中:
192.168.3.99 website1.devbox
192.168.3.99 website2.devbox
192.168.3.99 website3.devbox
Run Code Online (Sandbox Code Playgroud)
并编辑了我自己的 resolv.conf 文件以将开发框包含为名称服务器:
nameserver 192.168.3.99
Run Code Online (Sandbox Code Playgroud)
它工作正常,我可以访问这些网站。问题是它不能很好地扩展。我希望所有以 .devbox 结尾的域名都转发到开发箱,这就是我正在努力解决的问题。
我试过把
192.168.3.99 devbox
Run Code Online (Sandbox Code Playgroud)
进入主机文件,并编辑 dnsmasq.conf 中的行:
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/devbox/
Run Code Online (Sandbox Code Playgroud)
但我无法让它工作。如果我尝试任何未明确存在于开发箱的主机文件中的 URL,DNS 查找将失败。
本地指令是否用于其他用途?我看错地方了吗?
我在 NAT 后面有一个网络,有几台机器。
这些机器是:
我也有 mydomain.com。
server.mydomain.com 指向我的连接的 IP(单一 IP),它是路由器,它将端口转发到服务器。
服务器,有一个 httpd 运行,它基于 vhosts 为不同的站点提供服务。
所以我有site1.server.mydomain.com,site2..
问题是所有流量都通过路由器,当我检查日志时,我总是看到路由器的所有 IP(因此很难看出谁在使用 while(1) 运行脚本)。
我只想使用 ServerAlias site1.server.local,但大多数站点都有一个根 URL 保存在其他 URL 之上,所以我不能这样做。
我的解决方案是告诉 dnsmasq 以某种方式用服务器的 IP 回答 *.mydomain.com。
这有可能吗?
我只想使用 dnsmasq 将所有 dns 请求转发到 google 的 dns 服务器并禁用 dhcp ...
我怎样才能达到这个结果?
我正在运行带有 DNSMasq 的 TomatoUSB 来为我的本地网络提供 DHCP 和 DNS 服务。
我想要实现的是根据 IP 或 MAC 为网络上的一两个特定客户端提供替代 DNS 服务器(这些客户端不接受 DNS 服务器的手动配置)。
这是否是 DNS Masq 为这些 IP 使用不同的 DNS 服务器或是否通过 DHCP 提供不同的 DNS 服务器都没有关系。
我想将域名解析为somedomain.comCNAME(AWS 负载均衡器,例如some-balancer-1213231237.ap-southeast-2.elb.amazonaws.com),但仅限于本地。
我的意思是要实现的是,每当我尝试访问时somedomain.com,我都希望得到上述负载均衡器的服务——这应该仅限于我自己的计算机。
这是不可能通过编辑来实现的,/etc/hosts因为在那里只能映射 A 记录(IP 地址)。我在某处读到dnsmasq了实现这一目标的最强大的解决方案。但是,文档对于如何实现这一点非常不清楚。我很感激你的建议,也许还有一个带例子的配置。谢谢!
我有一个看似简单的问题,但经过一番搜索却找不到确切的答案:
我知道,如果我想查找某个域名的 IP 地址,请键入,例如:
nslookup google.de
Run Code Online (Sandbox Code Playgroud)
并得到
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: google.de
Address: 172.217.18.3
Run Code Online (Sandbox Code Playgroud)
但是,我不知道我从哪里得到这个答案。据我所知,一开始我的解析器试图询问我的本地 DNS 服务器(在 Ubuntu dnsmasq 上),如果那个服务器没有答案,它会询问下一个服务器等等。但是我想知道到底是哪个服务器给出了答案。那可能吗?
我也试过
dig +trace www.google.com
Run Code Online (Sandbox Code Playgroud)
它提供有关已发布服务器的所有信息,但执行完全迭代查找。我基本上喜欢这样的答案,但需要正常查找。
dnsmasq ×10
linux ×3
dhcp ×2
cname-record ×1
dns-lookup ×1
dns-zone ×1
nat ×1
networking ×1
nslookup ×1
tomato ×1