我的网络上有一台服务器。通过域名从网络外的设备访问它非常方便。但是有些设备(比如我的手机)通过 wifi 连接到网络,当它们这样做时,它们无法查找域名是否应该指向特定的内部 IP 地址。(这是因为我的 ISP 提供的路由器缺乏发夹功能)。
虽然可以在服务器上编辑 /etc/hosts,但我无法在通过 wifi 连接的设备上编辑 /etc/hosts。
为了尝试解决这个问题,我尝试用服务器上的 DNSmasq 替换路由器的默认 DNS 服务器。
我希望 DNSmasq 将对我的域名的所有请求转发到其自身,并将任何其他域名转发到公共 DNS 查找服务(例如 openDNS)。
本质上,我希望连接到我的 WiFi 的手机等设备仍然能够连接到我的域,尽管我的路由器上没有发夹弯,并且无法编辑手机的 /etc/hosts 文件。
目前,我唯一改变的是:
- 路由器的 DNS 服务器 IP 指向我的服务器的静态内部 IP。
- 该服务器的域名指向 /etc/hosts 中它自己的静态内部 IP
- 我已经打开了端口 52-54,并将它们指向我的服务器(尽管它目前也是 DMZ 的,因此不应该事情)
- /etc/host、/etc/resolv.conf 和 /etc/dnsmasq.conf 仍为默认设置。
目前,网络上任何设备对我的任何域的所有请求都会超时,而我尚未修改 /etc/hosts 文件。
有什么建议么?
顺便说一下,我在 Bell Smartstream 2000 调制解调器上运行带有 Nginx 的 Debian 8。
答案1
在域名系统,使用该address
选项。
-A, --address=/<domain>[/<domain>...]/[<ipaddr>]
指定要返回给定域中任何主机的 IP 地址。域中的查询永远不会被转发,并且始终使用指定的 IP 地址(可能是 IPv4 或 IPv6)进行回复。要为域提供 IPv4 和 IPv6 地址,请使用重复的 -A 标志。
例如:
address=/example.com/www.example.com/192.168.1.42
在未绑定,使用local-zone
和local-data
选项。例如:
server:
local-data: "example.com. A 192.168.1.42"
local-data: "www.example.com. A 192.168.1.42"