Ruka hadi kwenye maudhui makuu

Moduli asilia (kwa wasanidi)

Moduli hazihitajiki kwa matumizi ya kawaida. Mwongozo huu ni wa wasanidi na wasimamizi wanaotaka kupanua huduma ya Windows/Linux kwa maktaba asilia. Moduli huendeshwa ndani ya huduma kwa ruhusa zake. Sakinisha msimbo unaoaminika pekee; faili za moduli, vitegemezi na usanidi ziendelee kumilikiwa na msimamizi.

Kupakia moduli​

Huduma husoma faili za *.conf katika saraka ya modules.d iliyo karibu na faili ya usanidi. Maeneo ya msingi ni:

MfumoEneo la usanidi wa moduliUmbizo la maktaba
Linux/etc/mudfish-dns/modules.d/.so
Windows%ProgramData%\Mudfish DNS\modules.d\.dll

Katika kila faili, andika njia kamili ya maktaba moja kila mstari. Kwa mfano, /etc/mudfish-dns/modules.d/10-policy.conf inaweza kuwa:

/usr/lib/mudfish-dns/modules/policy.so

Faili husomwa kwa mpangilio wa majina, na mistari kwa mpangilio ndani ya faili. Mistari tupu na inayoanza na # hupuuzwa. Usizungushie njia kwa nukuu, kutumia vigezo vya mazingira au maoni mwishoni mwa mstari; havitafasiriwi. Katika Windows pia, andika njia kamili ndani ya faili, ikiwemo njia zilizo na nafasi.

Baada ya kuongeza, kubadilisha au kuondoa moduli, anzisha huduma upya. Katika Linux:

sudo systemctl restart mudfish-dns.service

Katika Windows, anzisha upya huduma ya Mudfish DNS kupitia usimamizi wa huduma. Anzisha DNS, Simamisha DNS na Tumia mipangilio havipakii moduli upya. Huduma haitaanza ikiwa faili ya usanidi haiwezi kusomwa, njia si sahihi au upakiaji/uanzishaji wa awali unashindwa. Saraka ya moduli ikikosekana au ikiwa tupu inaruhusiwa.

Wakati wa ukuzaji, unaweza kurudia hoja ya --module kupakia maktaba kwa mpangilio wa hoja. Hii huchukua nafasi ya upakiaji wa kiotomatiki wa modules.d. --config FILE pia hubadilisha eneo la saraka ya moduli karibu na faili ya usanidi. --restore-dns hurejesha DNS bila kupakia moduli.

Kutekeleza hook​

Soma header ya mudfish_dns_module.h au pakua mudfish_dns_module.h. Header hufafanua miundo, hook, vitendo na kanuni za muda wa matumizi ya data. Mwongozo huu unatumia C ABI v2. Toa alama ya mudfish_dns_module_init_v2() nje, na uhakikishe MUDFISH_DNS_MODULE_ABI_V2 na ukubwa wa muundo uliotumwa kabla ya kujaza hook. Rudisha 0 uanzishaji ukifanikiwa.

HookWakati wa kuitwa
on_dns_queryBaada ya kukubali swali lililochanganuliwa, kabla ya kutafuta akiba au kulipeleka.
on_dns_responseBaada ya kuchagua jibu, kabla ya kuhifadhi kwenye akiba au kurudisha kwa mteja. Majibu ya akiba pia hupitia hook hii.
on_web_helloBaada ya ukaguzi wa awali wa HTTP Host/TLS SNI, kabla ya kuunganisha au kushughulikia data ya awali.
on_web_dataBaada ya kusoma data inayofuata ya mteja au seva, kabla ya kuipitisha.

Vitendo vya DNS​

Hook za DNS za v2 hurudisha 0 zikifanikiwa na kuweka result->action.

KitendoAthari
MUDFISH_DNS_CONTINUEEndelea kwa moduli inayofuata na uchakataji wa kawaida.
MUDFISH_DNS_ALLOWMaliza mnyororo huu wa hook na uendelee na utafutaji wa kawaida au urudishe jibu lililochaguliwa.
MUDFISH_DNS_BLOCKRudisha REFUSED.
MUDFISH_DNS_DROPTupa bila kutuma jibu la DNS.
MUDFISH_DNS_ANSWERTengeneza jibu kwa IPv4/IPv6 na TTL iliyotolewa.
MUDFISH_DNS_REPLACETumia jibu kamili la DNS katika umbizo la waya lililotolewa na moduli.

Usirudishe konstanti za vitendo moja kwa moja katika hook za DNS za v2. Kazi ikirudisha kisicho 0 au matokeo si halali, husababisha SERVFAIL. ALLOW humaliza mnyororo wa sasa tu; haikwepi kanuni za vikoa, ruhusa za njia za mawasiliano au ukaguzi wa vyeti. Matokeo ya swali isipokuwa DROP hupitia pia hook za majibu.

Hook za wavuti hurudisha MUDFISH_DNS_CONTINUE au MUDFISH_DNS_REJECT moja kwa moja. Kukataa ombi hufunga muunganisho. Hook za wavuti zinahitaji ulinzi wa wavuti uwe umewashwa; maudhui ya HTTPS yaliyosimbuliwa hayatolewi.

Bafa, nyuzi na akiba​

Matukio na bafa za ingizo ni za kusoma pekee na ni halali wakati callback inaendeshwa tu. Jibu mbadala lazima litumie kumbukumbu inayomilikiwa na moduli na ibaki halali hadi callback inayofuata ya moduli hiyo au kuharibiwa kwake. Usirudishe kumbukumbu ya stack au pointer iliyoazimwa kutoka tukio. DNS ID, opcode na swali la jibu mbadala lazima zilingane na swali la awali. Callback za instansi moja huendeshwa kwa mfululizo lakini zinaweza kuitwa kutoka nyuzi tofauti. Zimalize haraka na usipitishe exceptions kuvuka mpaka wa ABI.

Matokeo yaliyotengenezwa, kubadilishwa, kuzuiwa au kutupwa hayahifadhiwi kwenye akiba ya host. Kubadilisha jibu la akiba hakubadilishi kipengee cha awali cha akiba. Host huondoa bendera ya AD ya majibu mbadala na haithibitishi wala kusaini upya DNSSEC. Moduli inayobadilisha data iliyosainiwa lazima ishughulikie sahihi zilizobatilika yenyewe.

Mfano na header​

Kurasa zifuatazo zina msimbo kamili wa mfano na header inayohitajika. Huhitaji kupakua mti wa chanzo wa Mudfish DNS kando.

FailiMaudhui
policy.c — mfano wa sera ya DNSKuruhusu, kuzuia au kutupa maswali, kutengeneza majibu ya IP, kubadilisha anwani na TTL. Pia amri za kujenga na kujaribu katika Linux.
mudfish_dns_module.h — header ya moduliMatamko ya ABI, saini za hook, konstanti za vitendo na kanuni za umiliki wa bafa.

Pakua policy.c na mudfish_dns_module.h katika saraka moja kabla ya kujenga. Amri ya mfano hutengeneza maktaba ya Linux ya .so.