国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Workerman DNS協(xié)議

EchoNoch

先上倉庫:
Repo
Github


相關:Webman插件

Webman插件市場

Repo

composer require laysense/dns
#注:這是webman用的不是workerman用的

截圖

截圖


Workerman-DNS

Workerman的DNS協(xié)議,實現(xiàn)了簡單的DNS協(xié)議解析和響應,通過本協(xié)議支持,您可以利用Workerman實現(xiàn)基于PHP的Dns服務器

您既可以實現(xiàn)遞歸服務器,進行DNS優(yōu)化、加速、抗污染

也可以作為權威服務器,進行任意的DNS響應,甚至DNS優(yōu)選,配合監(jiān)控實現(xiàn)CDN和負載均衡

目前支持以下DNS類型:

  • A
  • AAAA
  • CNAME
  • SOA
  • PTR
  • MX
  • TXT

本倉庫內(nèi)vendor文件夾為Workerman 您可以刪除,

直接將本倉庫根目錄下的 Dns.php 放置到您的Workerman項目中的 /vendor/workerman/workerman/Protocols 目錄下


使用方式:

詳見start.php 文件

注意:使用53端口需要root權限

1.監(jiān)聽端口

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/php-ipv6.php'; #IPv6支持
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('Dns://0.0.0.0:53');
$worker->transport = 'udp';

2.獲取查詢內(nèi)容

$worker->onMessage = function($connection, $data){
$data=json_decode($data);
$type=$data->type; #查詢類型
$name=$data->name; #查詢內(nèi)容(一般是域名,PTR時為倒序IP)
$rip=$connection->getRemoteIp(); #客戶端IP

#輸出信息
echo "\n Type:$type \n Domain: $name\n Client IP: $rip \n";

}

3.響應A記錄

$worker->onMessage = function($connection, $data){

$send['type']='A';
$send['detail'][1]='119.29.29.29';  #第一條記錄
$send['detail'][2]='8.8.8.8';       #第二條記錄
$send['ttl']=30;

#id和query一般情況下直接返回輸出即可
$send['id']=$data->id;
$send['query']=$data->query;

$send=json_encode($send);
$connection->send($send);

};
Worker::runAll();

4.響應其他記錄

見start.php 內(nèi)有所有記錄類型的響應方式

5.說明

您應當通過獲取query的 $name通過查詢數(shù)據(jù)庫等方式返回數(shù)據(jù),對于不存在的記錄應當返回SOA記錄

您需要的時候可以通過 dns_get_record()向上級DNS遞歸查找并緩存

這一系列操作,本協(xié)議不提供,您可以自行通過Redis等并利用workerman實現(xiàn)

不建議作為根域名的NS服務器使用 (如果作為必須提供自定義SOA)。

已知問題

本協(xié)議最早寫于鄙人剛學習php的階段,現(xiàn)在翻出來無疑是屎山一坨,代碼寫的和xxs一樣,性能不敢測試,還請各位大佬包容

目前已知問題是:

域名不存在時可能出現(xiàn)BUG

1800 4 1
4個評論

Tinywan

直接寫個webman的插件

aria

有計劃開發(fā)支持動態(tài)IP的功能嗎?

  • admin 2022-12-22

    完全可以自己實現(xiàn),這算業(yè)務層了,他已經(jīng)給你提供了協(xié)議層,過度分裝 其他人會不好

  • EchoNoch 2022-12-22

    如果想實現(xiàn)的是ddns,直接給一個子域名開ns,然后自己php去curl一個ip接口,自己實現(xiàn)下就行了

admin

如果有空,可以開發(fā)一個 ssh server偽服務端, go就有這個包。 可以自定義控制 ssh client發(fā)來的消息 和返回

  • EchoNoch 2022-12-22

    這個我想過來著,可以做蜜罐之類的好玩的東西,回頭有空研究下

  • EchoNoch 2022-12-22

    好吧淺看了下ssh協(xié)議的加密實現(xiàn)部分太復雜了(github上面好像有一個開源的php原生實現(xiàn))

  • admin 2022-12-25

    所以,拿過來改到workerman試試

gddd

這東西是干啥用的,沒接觸過

年代過于久遠,無法發(fā)表評論

EchoNoch

300
積分
0
獲贊數(shù)
0
粉絲數(shù)
2022-04-29 加入
??