DNS服務(wù)器插件

dev-master
版本
2024-02-06
版本更新時(shí)間
20
安裝
0
star
簡(jiǎn)介
Webman的DNS服務(wù)器插件,可以實(shí)現(xiàn)Webman啟動(dòng)時(shí)運(yùn)行一個(gè)DNS服務(wù)器
注意:默認(rèn)為udp53端口,需要ROOT權(quán)限
客觀來(lái)說(shuō),相比bind9(named)等成熟的C語(yǔ)言的DNS服務(wù)器來(lái)說(shuō),具有一定的差距,但勝在開(kāi)發(fā)便捷,拓展容易。
當(dāng)前僅供測(cè)試玩耍,建議不要用于關(guān)鍵用途
支持的DNS類(lèi)型:
- A
- AAAA
- CNAME
- SOA
- PTR
- MX
- TXT
最新版本已經(jīng)增加了CNAME+A和CNAME+AAAA方式
安裝
composer require laysense/dns
配置
配置文件位于 /config/plugin/laysense/dns/process.php
<?php
return [
'Dns' => [
'handler' => process\DnsProcess::class,
'listen' => 'Dns://0.0.0.0:53', #使用的端口,53端口需要root權(quán)限
'transport' => 'udp',
'count' => cpu_count() * 4 #線(xiàn)程數(shù)量
],
];
使用
為了方便您的使用,本插件(不要臉地)導(dǎo)入了一個(gè)Controller
位于 /app/controller/DnsController.php
【如果這影響到了您的項(xiàng)目和您的開(kāi)發(fā)習(xí)慣,請(qǐng)修改/process/DnsProcess.php 文件】
安裝前請(qǐng)先保障文件不沖突
本DNS插件只提供了一個(gè)DNS請(qǐng)求和響應(yīng)的接口,其余的數(shù)據(jù)庫(kù)、DNS查詢(xún)、多級(jí)緩存、遞歸等需要您自行實(shí)現(xiàn)
該Controller名存實(shí)亡,其實(shí)就是一個(gè)class
<?php
namespace app\controller;
include_once base_path().'/vendor/laysense/dns/src/resource/ipv6.php';
use dnstools\ipv6; #用于IPv6相關(guān)
/**
* $ipv6=new IPv6;
* $ipv6->ip2bin($ip);
*/
class DnsController
{
public function DNS($type,$name,$rip,$id,$query)
{
#輸出信息
#echo "\n Type:$type \n Domain: $name\n Client IP: $rip \n";
#此處請(qǐng)根據(jù)業(yè)務(wù)需要,通過(guò)判斷$name和$rip返回正確的數(shù)據(jù)
#詳情請(qǐng)參見(jiàn) https://github.com/ywnsya/workerman-dns 尤其是 https://github.com/ywnsya/Workerman-DNS/blob/master/start.php 中的用法
$send['detail']='dns.laysense.com';
$send['ttl']=30;
$send['type']='PTR';
#此處無(wú)需修改
$send['id']=$id;
$send['query']=$query;
$return=json_encode($send);
return $return;
}
}
具體的使用方式請(qǐng)參照 Workerman-DNS (Github) 下的start.php