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 Library miekg/dns ที่สวยงามและออกแบบมาอย่างดีของ miekg