Nine DNS هو خادم DNS مرن يوفر حل DNS بناءً على مصدر السؤال.
يهدف NineDNS
إلى توفير طريقة مرنة لحل سجلات DNS.
يمكنك مطابقة مصدر سؤال مختلف حسب cidr والمنفذ والبروتوكول وما إلى ذلك.
يمكن للعملاء استخدام حلول DNS مختلفة بناءً على بيئة الشبكة الخاصة بهم.
على سبيل المثال، يمكنك تصفية العملاء حسب cidr، وحل سجلات DNS المختلفة لهم.
علاوة على ذلك، يدعم NineDNS استرداد سجلات DNS من قواعد البيانات البعيدة مثل MySQL أو PostgreSQL.
من السهل إدارة سجلات DNS بطريقة مركزية.
يمكن دمج NineDNS
كجزء من المكونات السحابية الأصلية. وهو يدعم مشاركة ذاكرة التخزين المؤقت وموازنة التحميل وتتبع السجل.
السبب وراء إنشاء NineDNS
هو توفير طريقة مرنة لحل سجلات DNS وفقًا لمصدر السؤال.
على سبيل المثال، يمكنك مطابقة مصدر سؤال مختلف حسب cidr والمنفذ والبروتوكول وما إلى ذلك.
يمكن للعملاء استخدام حلول DNS مختلفة بناءً على بيئة الشبكة الخاصة بهم.
لديك خادمك منتشر على الإنترانت ومنفذ الخادم المكشوف عبر خادم القفز أو النفق.
وتريد تحويل مجال الخادم إلى عنوان IP للإنترانت عندما يكون العملاء في الشبكة الداخلية، والتحويل إلى عنوان IP العام عندما يكون العملاء بالخارج.
هذه حالة استخدام نموذجية لـ NineDNS
. يمكنك ببساطة NS
المجال الخاص بك إلى خادم NineDNS
، وتكوين NineDNS
لحل المجال بناءً على بيئة شبكة العميل، cidr على سبيل المثال.
لكي يكون خادم DNS كامل المواصفات، يدعم NineDNS
استرداد سجلات DNS من قواعد البيانات البعيدة مثل MySQL، والملفات، وما إلى ذلك.
تمامًا مثل أي من موفري Cloud DNS، يمكنك إدارة سجلات DNS بسهولة وبطريقة مركزية.
تحديد التكوين:
{
"addr" : " :53 " , // listen address
"debug" : true , // debug mode
"domains" : { // dns resolve domain key-value pairs. domain <===> resolve config
"example.com" : {
"authoritative" : true , // authoritative mode
"recursion" : false , // recursion mode
"upstream" : " 223.5.5.5:53 " , // upstream dns server, only works in recursion mode
"ttl" : 600 , // default ttl, attention: ttl is server level, not record level. server re-fetch record source ttl
"providers" : { // record source providers. Read [Record Provider](#record-provider) for more details
"mysql" : " root:123456@tcp(localhost:3306)/dns " ,
"sqlite" : " dns.db "
},
"rules" : { // dns resolve match rules. name <===> rule. Name is also used as table name in mysql record source
"all" : {
"cidrs" : [ // cidr match
" 0.0.0.0/0 "
],
"ports" : [
" 1-65535 " // port match
]
}
}
}
},
"redis" : { // redis config
"addr" : " localhost:6379 " ,
"db" : 8
}
}
عندما يأتي سؤال DNS، ستجد
NineDNS
قاعدة محددة تتطابق مع اسم المجال والقواعد. ثم ابحث عن السجلات في مصدر السجلات المحدد في القاعدة.
اقرأ موفر السجل للحصول على مزيد من التفاصيل حول providers
.
وهذا كل شيء! قم بتشغيل NineDNS
باستخدام ملف التكوين الآن:
$ ninedns -c config.json
يقوم
NineDNS
بتحميلninedns.json
تلقائيًا في الدليل الحالي إذا لم يتم تحديد-c
.
تحميل من صفحة الإصدارات.
اسم | وصف |
---|---|
ninedns-mini | ثنائي NineDNS بدون معظم مقدمي الخدمة. |
ninedns | NineDNS ثنائي مع مزود MySQL وموفري الملفات |
ninedns-full | NineDNS ثنائي مع جميع مقدمي الخدمة. |
شكر خاص لمكتبة go dns الرائعة والمصممة جيدًا من miekg miekg/dns