manie20/dns

一组用于维护DNS区域文件PHP类表示的类和服务。

v1.0 2016-01-31 21:33 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:42:09 UTC


README

此包包含用于映射DNS区域和DNS记录的模态和服务。它是 "manie20/rtr-dns-bundle" 的基础,后者提供了管理实时注册DNS区域的能力。

如何使用?

让我们通过编写对象来创建一个DNS区域,并输出一个可以用于DNS区域文件的字符串。

use Netcode\Dns\Modal\Zone;
use Netcode\Dns\Modal\Domain;
use Netcode\Dns\Modal\Email;
use Netcode\Dns\Modal\Records\SOA;
use Netcode\Dns\Modal\Records\A;
use Netcode\Dns\Modal\Records\CNAME;
use Netcode\Dns\Service\ZoneFileService;

首先,让我们创建一个新空区域。

$zone = new Zone();

SOA记录对于DNS区域是强制性的,并包含所有区域文件信息。

  • 名称包含此区域的顶级域名。
  • 电子邮件地址被转换为区域管理联系人。
  • 域名服务器是该区域所在的服务器地址。使用 'ns' 表示本地域名服务器。
  • 序列号是区域文件更改时的增量标识符。
$soaRecord = new SOA();
$soaRecord
    ->setName(
        new Domain('netcode.nl')
    )
    ->setEmailAddress(
        new Email('a.krijgsman@netcode.nl')
    )
    ->setNameServer(
        new Domain('ns')
    )
    ->setSerialNumber(
        $soaRecord->getNewSerial()
    );

// Add the SOA Record to the newly created Zone.
$zone->setSoaRecord($soaRecord);

现在让我们向区域添加一些DNS记录

$aRecord = new A();
$aRecord->setContent('127.0.0.1');
$zone->addRecord($aRecord);

$aRecord = new A();
$aRecord
   ->setName('www')
   ->setContent('127.0.0.1')
   ->setTTL(300);
$zone->addRecord($aRecord);


$cnameRecord = new CNAME();
$cnameRecord
    ->setName('mail')
    ->setContent('www')
    ->setTTL(7200);
$zone->addRecord($cnameRecord);

// And add the MX record:
$mxRecord = new MX();
$mxRecord
    ->setContent('mail')
    ->setPriority('10')
    ->setTTL(7200);
$zone->addRecord($mxRecord);

要测试您的完整区域,您可以使用ZoneFileService输出区域定义。如果您觉得需要更改,请与我联系;我实际上并没有在运行中的域名服务器上使用它。

$zoneFileService = new ZoneFileService();
$zoneFileService->getZoneText($zone)

结果输出如下

netcode.nl. IN SOA ns a.krijgsman.netcode.nl. ( 2016013101 86000 7200 1209600 600 ) IN A 127.0.0.1 www 300 IN A 127.0.0.1 mail 7200 IN CNAME www 7200 IN MX 10 mail