这是这个问题。
我的路由器无法正确支持发夹式连接,因此出现了问题。请参阅上面的链接了解详细信息。
现在我想设置一个本地 DNS 服务器,以便 LAN 中的主机可以使用它来解析公共主机名(通常的网页浏览...)。
此外,我想修改某些区域。
在我们的 LAN 中,有一些服务器提供公共 DNS 区域中无法提供的资源。
我们始终必须相应地配置我们的本地 LMHost 文件。
例如,我们有一个在本地 Web 服务器上运行新功能的暂存安装,并且我们无法直接使用 IP 访问它,因为该网站在命名虚拟主机容器中运行,我们必须配置 LMHost 文件以将某些域指向本地 IP 地址。
现在我们还遇到了 Hair pinning 问题。
所以我的问题是:我可以使用什么软件?bind 能完成这项工作吗?我只需要将一些 A 条目插入到区域中。尽可能简单。我们有本地 Linux/Ubuntu 服务器。
答案1
根据您网络的大小,绑定可能有点过头了。对于较小的网络,您可以使用dnsmasq
它将读取hosts
文件来配置地址。它还可以用作 DHCP 服务器和本地 DNS 缓存。
如果您以前没有做过绑定配置,那么绑定配置可能会有点困难。如果无法从互联网访问绑定,则不需要拆分配置,配置更简单。如果不是,您应该实施并测试拆分配置。
配置 DNS 服务器后,您需要更改用于解析地址的服务器列表,以将该服务器作为第一个要查询的服务器。如果您使用 DHCP 配置 IP 地址,那么您可能能够在续订地址时推送更改。通常,DHCP 配置为提供要使用的 DNS 服务器列表。DHCP 租约通常在其生命周期的一半后续订。如果您的租约时间很长,则可能需要相当长的时间才能推送更改。重新启动系统应该会导致它们从 DHCP 刷新其配置。
答案2
您可以使用 BIND 执行此操作,但如何执行取决于您要使用的 BIND 服务器是否已经公开提供 DNS 服务。
如果是,你需要使用view
陈述和多个区域文件:-
view "internal" {
match-clients { 192.168.0.0/24; };
recursion yes;
zone "your-domain.com" {
type master;
file "your-domain-internal.db";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "your-domain.com" {
type master;
file "your-domain-external.db";
};
};
(为了节省重复,两个视图共有的记录可以存储在另一个文件中,$INCLUDE
d 在两个区域中。)
如果不是(例如,它是仅限内部的服务器),您可以像平常一样为您的域设置一个区域,或者将您需要修改的特定主机设置为它们自己独特的区域,以便其他主机的 DNS 查询将回退到您的公共 DNS,而您无需在内部复制所有公共主机。
zone "www.your-domain.com" { ... }
尽管如此,如果你不依赖 BIND,你可能需要看看类似的东西域名系统相反,它支持“DNS修改”:-
-V, --alias=[<old-ip>]|[<start-ip>-<end-ip>],<new-ip>[,<mask>]
Modify IPv4 addresses returned from upstream nameservers; old-ip is
replaced by new-ip. If the optional mask is given then any address
which matches the masked old-ip will be re-written.
使用上一个问题中的 IP,修改起来非常简单,如下所示全部与您的公共 IP 地址匹配的 DNS 查询。
--alias=123.45.67.89,192.168.0.123
答案3
正如我joeqwerty
之前在 ServerFault 上所说的那样:您需要的是“水平分割”DNS服务,并且有几种方法可以设置,部分取决于您使用的软件。如您所见,您可以使用一系列软件来实现这一点,从 Microsoft 的 DNS 服务器和 ISC 的 BINDtinydns
到域名。
设置完成后,请不要忘记在外部视图中映射您希望在内部视图中原样存在的 DNS 命名空间部分。 有两种方法可以做到这一点, 也。
答案4
ubuntu 服务器作为 DNS 服务器或者 bind,它们都支持它