问题
我在本地网络上设置了 Raspberry Pi 4。此设备既是 Web 服务器,也是(现在,必然是)DNS 服务器。此设备需要从网络内部和外部访问。我有一个公共域名正在通过更新动态域名系统接收路由器公共 IP 的服务。当我使用指向我的 IP 的域时,我会使用端口转发将所有传入的 Web 流量通过端口 80 路由到 PI 的私有 IP。当我使用此配置在浏览器中访问我的域时(同时连接到除 PI 之外的其他网络)有用!。也就是说;我进入域名,它解析为我的路由器的公共 IP,端口转发将端口 80 请求发送到 PI,它为页面提供服务。瞧!
问题是当我尝试从里面网络。当我使用相同的域名时,它会超时并且无法解析(因为它解析为我的路由器的公共 IP,而不是此 Web 服务器的私有 IP)。
使用水平分割 DNS,我的计划是将此 Web 服务器也用作 DNS 服务器,以强制内部网络上的所有设备将此域名解析为其私有 IP 而不是公共 IP。一旦我离开我的网络,该域名将由其他名称服务器解析,因此它将解析为公共 IP(所以没问题)。
我做了什么
- 我已经设置了没有桌面、只有 CLI 的 PI
- 我将树莓派连接到路由器的 LAN 连接
- 我已经设置了 SSH 并打开了 ufw 端口 22
- 下载、安装并设置 DNSMasq
- 在我的服务器防火墙(ufw)中打开端口 53
- 进入 ISP 给我的框中的路由器管理页面。我将主 DNS 服务器和辅助 DNS 服务器从其默认值都指向我的 PI 服务器的私有 IP
- 从 ISP 路由器管理页面(上一步)复制了主 DNS 服务器和辅 DNS 服务器的 IP 地址,并将它们放在我的 DNSMasq 配置文件(位于 /etc/dnsmasq.conf)的键下
server=ip.ip.ip.ip
。我不会提供这些 IP 地址,因此这可以作为我如何输入主 DNS 服务器和辅 DNS 服务器的模拟,每个地址都在一行中,紧接着一行。 - 我使用了以下 DNSMasq 配置设置:domain-needed、bogus-priv、cache-size=750、log-queries、log-faciliy=/var/log/dnsmasq.log、server=isp.ip.primary.0、server=isp.ip.secondary.0、server=8.8.8.8、server=8.8.4.4、dhcp-mac、dhcp-reply-delay
- 我的 dnsmasq.log 文件中没有错误
- 没有错误
sudo service dnsmasq status
- 似乎无法进入我的 ISP 路由器的日志。我可以看到它们,但日志太多了,以至于在尝试滚动浏览它们时整个网页都会崩溃
结果
现在,整个网络上的任何设备都无法解析任何域名,除非我改回默认 ISP 主/辅
我遗漏了什么或者做错了什么?
答案1
如果您将dnsmasq
其用作权威和递归 DNS 服务器,则您忘记显示dnsmasq
区域配置中的相关行。
看https://www.onderka.com/computer-und-netzwerk/autoritativer-dns-server-mit-dnsmasq
当然,最基本的是了解本地 DNS 设置。在下一个示例中,我模拟拥有www.example.com,并使用拆分DNS进行与本地网络不同的解析。
$ nslookup www.example.com 8.8.4.4
Server: 8.8.4.4
Address: 8.8.4.4#53
Non-authoritative answer:
Name: www.example.com
Address: 93.184.216.34
Name: www.example.com
Address: 2606:2800:220:1:248:1893:25c8:1946
$ nslookup www.example.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Name: www.example.com
Address: 192.168.1.2
(我不使用dnsmasq
但这不是问题。)