使用 BIND9 覆盖 DNS 记录?

Pat*_*ick 4 domain-name-system bind internal-dns

抱歉,如果之前有人问过这个问题,但我似乎找不到任何特定于我的案例的信息。

我运行一个服务器,如果用户将 DS 的主 DNS 服务器更改为我的盒子,则用户可以在其中连接 Nintendo DS 游戏。我目前正在使用一个简单的 python 脚本,它基本上将所有请求转发到它们的实际地址,除了一个: gamestats2.gs.nintendowifi.net,它转发到我的 IP。问题是这个脚本往往在一两天后停止工作,需要我重新启动它。

在将所有其他地址转发到正确的 IP 时,我是否能够覆盖 BIND9 中的单个主机?或者有其他更好的服务器吗?

lar*_*sks 17

为了记录:您也可以使用 BIND 执行此操作,但涉及的内容要稍微多一些。您需要将 bind 配置为要覆盖的特定资源记录的权威名称服务器。例如,如果你想将 gamestats2.gs.nintendowifi.net 重定向到你自己的主机,你需要在你的named.conf

zone "gamestats2.gs.nintendowifi.net" {
        type master;
        file "override.zone";
};
Run Code Online (Sandbox Code Playgroud)

在里面override.zone,一个像这样的区域定义:

$TTL 3600
$ORIGIN gamestats2.gs.nintendowifi.net.

@       IN SOA localhost. lars.localhost. (
        2010011800 ; sn = serial number
        172800     ; ref = refresh = 2d
        900        ; ret = update retry = 15m
        1209600    ; ex = expiry = 2w
        3600       ; min = minimum = 1h
        )

        ; we need one nameserver
        IN NS ns0

        ; and we're overriding the public ip address with
        ; this address.
        IN A 10.0.0.1

ns0     IN A 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

也就是说,您的区域文件必须SOA至少提供一条记录,至少一条 NS记录,并且必须存在A列出的名称服务器的有效记录……而且您可能需要一条A记录来提供您选择的地址。

有了这一切:

$ host gamestats2.gs.nintendowifi.net localhost
Using domain server:
Name: localhost
Address: 127.0.0.1#53
Aliases: 

gamestats2.gs.nintendowifi.net has address 10.0.0.1
Run Code Online (Sandbox Code Playgroud)

它当然不如使用dnsmasq方便,但值得了解。


Ess*_*obi 5

我会使用 dnsmasq 并在配置中设置特定的覆盖

address=/gamestats2.gs.nintendowifi.net/Yo.Ur.Ip.Ad
Run Code Online (Sandbox Code Playgroud)

指示...