切入正题:
我的一个具体问题是:10.0.3.X/24 网络上的客户端无法访问subdomain.site.com
. 如何让 10.0.2.X/24 和 10.0.3.X/24 上的客户端在调用时能够解析 10.0.1.4 subdomain.site.com
?
我想让我的 DNS 解析使用 WAN 端域名为我的 Web 服务器 LAN 工作,例如subdomain.site.com
,任何 LAN 子网络上的n 个客户端可以只键入subdomain.site.com
或site.com
适当地路由(可扩展,所以/etc/hosts
不在问题)。
我的 LAN 有多个使用LEDE(网络 .1)和OpenWRT(网络 .2 和网络 .3)创建的子网:
10.0.1.X/24 Main puppy with WAN interface facing internet and NAT, web server fixed at 10.0.1.4 with ports forwarded
10.0.2.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)
10.0.3.X/24 Auxiliary router with WAN interface facing 10.0.1.X/24 (routed)
我不想要任何发夹式 NAT/环回 NAT 解决方案。我更喜欢使用 DNS 的解决方案,原因如下:
- 来自客户端的呼出调用权威 DNS 来查找 IP(用于路由!),然后将数据包发送到该目的地,
- 到达后,将其 DNATed 到服务器。
- 源 IP 是客户端的本地地址,因此服务器直接调用客户端(使用数据包的源 IP)。
- 客户端拒绝这个包,因为它希望它来自网关,间接来自网关的分机。地址。由上面的 DNS 提供。
- NAT 环回通过将出站源 IP 转换为网关的 LAN 端地址来解决此问题。使得
- 然后服务器响应网关,而不是直接响应客户端。凉豆。
此数据流的问题在于离开 LAN 并联系全球 DNS 服务器以获取 IP 地址的效率不高。当服务器是本地对等点时(在 NAT 的同一侧,在我的情况下不一定在同一个本地子网中)。当客户端和服务器是本地对等点时,为什么还要离开局域网?可以在这里找到环回 NAT 流的一个很好的解释, https://unix.stackexchange.com/a/282094/33386。
我知道可以使用DNS 水平分割或最近一些人称之为的任何时髦术语来实现我想要的。在某些情况下优先于全局命名服务器的本地命名服务器也可以解决这个问题。使用多个子网(多个 DHCP+DNS 服务器)时,如何在 OpenWRT 或 LEDE 中实现这一点?必须有人已经这样做了。
目前,10.0.1.X/24 上的客户端可以subdomain.site.com
通过相应的 dnsmasq 设置访问,/etc/config/dhcp
但我不知道为什么,因为我认为这不包括子域:
config domain
option name 'site.com'
option ip '10.0.1.4' # LAN address of web server
您需要水平分割或本地名称服务器。
将 10.0/16 后面的客户端指向对该
subdomain.example.com
区域具有权威性的本地名称服务器,否则将递归。这可以通过独立的名称服务器或水平分割来实现。下面的两个示例都包含执行其任务的最低要求。安全问题和其他配置细节不在此问题的范围内。
我强烈建议按顺序阅读DNS HOWTO和DNS 和 BIND。
水平分割
独立名称服务器
这是一个普通的 BIND 实例,但配置为对内部区域具有权威性。
第一个缺失元素
我必须在文件中的辅助路由器
/etc/config/dhcp
上的 dnsmasq 配置中添加两件事:使
list server
dnsmasq 将 dns 查询转发到 10.0.1.1 的服务器(主路由器 dnsmasq 服务器)。允许重新绑定特定站点,list rebind_domain
以便可以保留 dns 重新绑定保护。谢谢你在这里“jow”。另一种选择是完全禁用 dns 重新绑定保护。或者,也可以使用option rebind_localhost 1
,但我没有对此进行测试。没有这一步,我无法 pingsubdomain.site.com
。第二个缺失元素
/etc/dnsmasq.conf
在主路由器上添加以下条目。.
请注意任何子域的占位符。这种变化也可能在 中/etc/config/dhcp
,但我不确定如何。原始的第二个缺失元素(有限)
这是我最初的解决方案,后来我放弃了。我在主路由器的文件中添加了一个条目 (
10.0.1.4 subdomain.site.com
)/etc/hosts
,它的限制是没有子域或扩展 URL 的占位符,例如使用 webdav 时。通过添加
logqueries 1
以/etc/config/dhcp
记录所有 DNS 查询来对此进行测试。将显示类似于以下内容的内容,这表明这/etc/hosts
是来源:什么没有奏效
令我惊讶的是
/etc/config/dhcp
,主路由器上的以下配置仅在10.0.1.X/24
子网内有效:如果有人可以阐明这一点,我很想知道为什么!也许有问题?
似乎在辅助路由器上添加
option dns 10.0.1.1
到/etc/config/network
也没有真正帮助我的情况。添加此选项会使条目显示在
cat /tmp/resolv.conf.auto
. 但是,list server 10.0.1.1
如上所述,添加nameserver 10.0.1.1
了 WAN 接口。在辅助路由器上添加
dhcp_option
s/etc/config/dhcp
没有帮助。