区分来自本地网络和互联网的 DNS 请求

区分来自本地网络和互联网的 DNS 请求

我正在为本地客户和一些互联网服务使用 DNSmasq。我提供的一项服务是 dynDNS 服务器。它通过 HTTP 接收 IP 更新并将其写入简单的 hosts 文件,但不包含域名。DNSmasq 附加域名的最低配置如下:

interface=eth0          # internal
interface=eth1          # external
no-dhcp-interface=eth1
dhcp-range=192.168.1.2,192.168.1.254,12h

domain=mydomain.eu
no-hosts
addn-hosts=/etc/hosts.dyndns         # hosts file created by my dynDNS server
expand-hosts

# Server/VMs
host-record=server,192.168.1.1
host-record=server.mydomain.eu,<externalIP>
cname=dns.mydomain.eu,server.mydomain.eu
address=/mydomain.eu/<externalIP>    # wildcard subdomains

问题是:DHCP 也会将域名传递给我的本地客户端。如果其中某些客户端要求将请求扩展到DNSmasq 回答为的server域。由于我与互联网的连接拓扑涉及几个问题。相反,它应该被解析为。server.mydomain.eu<externalIP>192.168.1.1

如何让 DNSmasq 区分本地网络和互联网的请求?或者是否可以domain仅用于扩展 hosts 文件?

答案1

ISC DHCP 服务器有区域,这可以解决您的问题,但我怀疑您是否希望离开 dnsmasq。

但是您可以启动两个具有略微不同配置的 dnsmasq 实例。内部:

bind-interfaces
interface=eth0          # internal
dhcp-range=192.168.1.2,192.168.1.254,12h

domain=mydomain.eu
no-hosts
addn-hosts=/etc/hosts.dyndns         # hosts file created by my dynDNS server
expand-hosts

# Server/VMs
host-record=server,192.168.1.1
host-record=server.mydomain.eu,192.168.1.1
cname=dns.mydomain.eu,server.mydomain.eu
address=/mydomain.eu/<externalIP>    # wildcard subdomains

和外部:

bind-interfaces
interface=eth1          # external

no-hosts
addn-hosts=/etc/hosts.dyndns         # hosts file created by my dynDNS server

# Server/VMs
host-record=server.mydomain.eu,<externalIP>
cname=dns.mydomain.eu,server.mydomain.eu
address=/mydomain.eu/<externalIP>    # wildcard subdomains

答案2

如果你能 ping 157.166.224.26,但不能 ping cnn.com

那么您遇到了 DNS 问题。

[如果两者都无法 ping 通,则表明网络存在问题;如果两者都可以 ping 通,则表明没有问题]

然后,您可以使用 nslookup 找到一个可以正确解析“cnn.com”到其 IP 地址的备用内部或外部 DNS 服务器,并将工作站的 NIC 配置为此静态 DNS 服务器,直到 DHCP 问题得到解决

相关内容