在DNS区域绑定10内运行PHP

在DNS区域绑定10内运行PHP,php,linux,dns,bind,Php,Linux,Dns,Bind,我正在使用linux CentOS 6.64和BIND 10.1.2 我在主DNS(example.com)中有一个附加区域(list.example.com) 绑定(命名)配置文件/etc/named.conf包含以下区域: zone "list.example.com" IN { type master; file "list-example-com.zone"; allow-query { localhost; };

我正在使用linux CentOS 6.64和BIND 10.1.2

我在主DNS(example.com)中有一个附加区域(list.example.com)

绑定(命名)配置文件/etc/named.conf包含以下区域:

zone "list.example.com" IN {
            type master;
    file "list-example-com.zone";
        allow-query { localhost; };
            allow-transfer { 127.0.0.1; };
    };
区域文件列表-example-com.Zone如下:

$TTL 86400      ; 1 day
@               IN SOA  ns1.example.com. hostmaster.example.com. (
                        2004032201 ; serial
                        7200       ; refresh (2 hours)
                        5400       ; retry (1.5 hours)
                        1814400    ; expire (3 weeks)
                        86400      ; minimum (1 day)
                        )
                IN NS   ns1.example.com.
;
                IN A    192.168.177.22
;
; -----------------------------------------------------------------
49.30.22.66       IN A    127.0.0.3
44.63.20.10       IN A    127.0.0.2
64.42.10.5        IN A    127.0.0.2
14.3.6.8          IN A    127.0.0.3

// AND OTHER 1000S OF RECORDS LIKE THAT!
让我们选择一个重新编码的IP作为示例

IP 44.63.20.10的“DNS查找”将是:

44.63.20.10.list.example.com并将从DNS返回127.0.0.2

好的,现在我想做的是,我不想列出1000条IP记录,我只想在named.conf、zone file或任何其他文件中运行PHP文件来执行一些代码,并为IP 44.63.20.10的“DNS”返回127.0.0.2

myfile.php:

<?php

// Just need to get the required IP (44.63.20.10) and the DNS_TYPE of the request (A, TXT,...ect) then:
// Execute some PHP codes to do some stuff (including connect to mysql database..ect)
// If the IP is TRUE, then return: (44.63.20.10     IN DNS_TYPE    X)

?>

我希望你明白

我有自己的PHP文件,只需要知道是否有可能做到这一点?如果是的话,怎么办? 有什么想法吗


谢谢。

就我所知,这是不可能的

我推荐的解决方案是使用

PowerDNS更灵活,能够使用数据库。例如,我将其用于MySQL数据库。

也许这正是你想要的,也许不是。但是,由于使用数据库的灵活性,您可以创建一个PHP脚本,将所有内容插入数据库,并对其进行检查,等等。

如果必须使用
bind
,那么类似于以下解决方案的方法应该可以工作

  • 生成一个脚本以输出区域文件。可以使用php或任何语言来实现这一点
  • 生成文件后,重新加载绑定以加载更新的文件
  • 如果此数据定期更改,请使用cron以5分钟的间隔或适合您的数据的方式运行这两个命令

  • 您必须使用BIND完整函数API,该API允许“插件”替换指定区域和BIND的BIND内部数据库函数

    您需要编辑绑定源文件和makefile.in,然后重新构建绑定,包括源文件和头文件

    要从API开始,请查找位于bind release/lib/dns/include/dns/db.h目录中的db.h文件,其中bind release应替换为解压源发行版的位置和版本号,例如/usr/src/bind/10.1.2

    这是一份