ฉันจะจัดการโดเมนทั้งหมดของฉันด้วยการกำหนดค่าขั้นต่ำได้อย่างไร


10

นี่เป็นคำถามเกี่ยวกับการจัดการเซิร์ฟเวอร์ DNS ของCanonical

ฉันมีโดเมนหนึ่งร้อยหรือมากกว่านั้น โดเมนทั้งหมดเหล่านี้จำเป็นต้องกำหนดค่าเหมือนกัน แต่ดูเหมือนว่าจะเสียเวลามากในการกำหนดค่าโซนใหม่และ / หรือ zonefile สำหรับโดเมนเหล่านี้ทุกโดเมน จะต้องมีวิธีที่ดีกว่าในการทำสิ่งนี้โดยอัตโนมัติ!

ฉันคิดว่าฉันกำลังจะทำอะไรบางอย่าง ... ถ้าฉันสร้างโซนที่เรียกว่า.หรือใช้คุณสมบัติอื่น ๆ ในซอฟต์แวร์ DNS ของฉันเพื่อส่งคืน IP เฉพาะเสมอเมื่อมีการAร้องขอบันทึกนี้ดูเหมือนว่าจะทำให้ฉันใกล้ถึงจุดสิ้นสุดที่ต้องการ ผลลัพธ์. เซิร์ฟเวอร์ของฉันตอบสนองต่อคำขออย่างเป็นทางการและง่ายต่อการจัดการ!

สิ่งนี้ใช้งานได้ดีจนกระทั่งซอฟต์แวร์ตรวจสอบชื่อเซิร์ฟเวอร์เริ่มตรวจสอบโดเมนเหล่านี้ ฉันพบว่าฉันสามารถทำให้ข้อผิดพลาดส่วนใหญ่หายไปได้โดยการเพิ่มNSระเบียน แต่ซอฟต์แวร์ของฉันจะไม่ให้ฉันใส่มากกว่าหนึ่งSOAระเบียนในไฟล์โซนเดียวกัน

ฉันจะSOAแก้ไขปัญหาหลายระเบียนนี้ได้อย่างไร

คำตอบ:


12

เว้นแต่ฉันเข้าใจผิดคำถามที่ฉันทำเช่นนี้อย่างสม่ำเสมอด้วยการผูกและมันดูเหมือนว่าจะดีตราบเท่าที่แต่ละโซนเป็นอย่างที่เหมือนกัน

ในเนมเซิร์ฟเวอร์หลักของฉันฉันมีnamed.confรายการที่ชี้ไปที่ไฟล์โซนทั่วไปเช่น

zone "example.com" {
        type master;
        file "primary/example.GENERIC";
};

zone "example.co.uk" {
        type master;
        file "primary/example.GENERIC";
};

จากนั้นไฟล์ zonefile primary/example.GENERICที่ระบุเช่น

;; Start of Authority
@       IN      SOA     ns.teaparty.net. dns.gatekeeper.ltd.uk. (
                        2004091201      ; serial number YYYYMMDDNN
                        28800           ; refresh  8 hours
                        7200            ; retry    2 hours
                        864000          ; expire  10 days
                        3600 )          ; min ttl  1 day
;;
;;      Name Servers
                IN      NS      ns.teaparty.net.
                IN      NS      ns2.teaparty.net.

และฉันไม่ได้ตระหนักถึงปัญหาใด ๆ กับโซนเหล่านี้เลย ฉันถูกเปิดให้รับการบอกกล่าวว่าฉันเข้าใจผิดคำถามหรือความจริงแล้วโดเมนของฉันใช้งานไม่ได้ แต่จนกระทั่งฉันคิดว่ามันใช้ได้กับฉัน

โปรดทราบว่าคุณจะไม่สามารถดึงเคล็ดลับเดียวกันกับรอง ; แต่ละโซนจะต้องเก็บไฟล์ที่แตกต่างกัน แต่เนื่องจากเนื้อหาของไฟล์นั้นจะถูกเติมและอัปเดตโดยโซน xfers จากหลักดังนั้นนี่จึงไม่ใช่เรื่องใหญ่


4

มีทางลัดจำนวนมากที่คุณสามารถใช้เพื่อทำให้ชีวิตของคุณง่ายขึ้น:

หากคุณใช้ Bind หรือซอฟต์แวร์ที่คล้ายกันที่ใช้ไฟล์ในการจัดเก็บข้อมูลโซน: ชี้โซนของคุณเป็นไฟล์เดียวกันเช่น:

zone "example.net" {
    type master;
    file "/etc/bind/zone/default.zone";
};

zone "example.org" {
    type master;
    file "/etc/bind/zone/default.zone";
};

เนื่องจากคุณสามารถใช้ประโยชน์จาก DNS บางอย่างได้คุณจึงสามารถสร้างไฟล์โซนสากลได้:

$TTL 1h      ; default expiration time of all resource records without their own TTL value
@  IN  SOA   ns1.example.com. username.example.com. ( 
                               20140218131405 ; Serial number YYYYMMDDHHMMSS
                                        28800 ; Refresh     8 hours
                                         7200 ; Retry       2 hours
                                       604800 ; Expire      7 days
                                        86400 ; Minimum TTL 1 day )
@             IN  NS    ns1.example.com.      ; ns1.example.com is a primary nameserver
@             IN  NS    ns2.example.com.      ; ns2.example.com is a backup nameserver
@             IN  MX    10 mail.example.com.  ; mail.example.com is the mailserver
@             IN  MX    20 mail2.example.com. ; the secondary mailserver
@             IN  A     192.0.2.1             ; IPv4 address for the bare domain
              IN  AAAA  2001:db8:10::1        ; IPv6 address for the bare domain
www           IN  A     192.0.2.1             ; www.domain
              IN  AAAA  2001:db8:10::1        ; IPv6 address for www.domain - note by starting the line with a blank it becomes the continuation of the previous record and this IPv6 record applies to www
wwwtest       IN  CNAME www                   ; wwwtest is an alias for www

สิ่งนี้ทำให้การใช้ความจริงที่ว่าชื่อโฮสต์ในไฟล์โซนที่ไม่ได้ลงท้ายด้วยจุด.จะถูกขยายด้วยเสมอ$ORIGINซึ่งจะถูกตั้งเป็นชื่อโซนโดยปริยาย และ@ย่อมาจาก $ ORIGIN


แทนที่จะบำรุงรักษาแต่ละไฟล์โซนด้วยมือให้เปิดใช้งานวิธีการโต้ตอบโดยทางโปรแกรมกับเซิร์ฟเวอร์ชื่อของคุณ

ฉันใช้ PowerDNS ซึ่งช่วยให้ RDMS เป็นแบ็คเอนด์ที่เข้ากันได้ดีกับ LAMP stack ที่เราใช้ในขณะนั้น บริการคลาวด์เช่น Amazon Route 53 ก็เปิดเผยของ web-API เช่นกัน

แต่ Bind ที่น่าเคารพก็ยังรองรับDynamic Updateซึ่งเป็นวิธีการเพิ่มแทนที่หรือลบบันทึกในเซิร์ฟเวอร์หลักด้วยการส่งรูปแบบพิเศษของข้อความ DNS รูปแบบและความหมายของข้อความเหล่านั้นระบุไว้ในRFC 2136

การอัพเดทแบบไดนามิกถูกเปิดใช้งานโดยการรวมallow-updateหรือupdate-policyประโยคในคำสั่งโซน สำหรับข้อมูลเพิ่มเติมตรวจสอบด้วยตนเองผูก Administrator อ้างอิง


2
ครึ่งแรกของคำตอบของคุณตายไปแล้ว แต่ฉันไม่แน่ใจว่า DDNS จะใช้งานที่นี่ ... มันไม่สามารถใช้เพื่อเพิ่มหรือลบโซนซึ่งเอาชนะสิ่งที่คนส่วนใหญ่ในสถานการณ์นี้กำลังพยายามทำให้สำเร็จ (ไม่ต้องไปสัมผัส named.conf สำหรับทุก ๆ โซนที่เพิ่ม) สิ่งที่ใกล้เคียงที่สุดที่ฉันรู้จักใน BIND land คือrndc addzoneตัวเลือกใหม่แต่ก็ยังเป็นเรื่องที่น่าเกลียดเพราะมันจบลงด้วยการสร้างไฟล์ปรับแต่งด้วยชื่อแฮชในไดเรกทอรีทำงานสำหรับ เพิ่มทุกโซน
Andrew B

ในการทำความเข้าใจสิ่งที่คุณกำลังจะพูด แต่การตีความที่แตกต่างกันก็คือความยากลำบากของโดเมนจำนวนมากคือการบำรุงรักษาและการทำงานซ้ำ การทำ / DNS สคริปต์อัตโนมัติเป็นสิ่งที่ไม่ได้รับการบันทึกไว้อย่างดี
HBruijn

4

คำตอบสั้น ๆ

หากคุณกำลังมองหาการตั้งค่า "ศูนย์การตั้งค่า" ใน BIND มันจะไม่มี การตั้งค่ารูทโซน ( .) ดูเหมือนจะเป็นความคิดที่ดี แต่ไม่ใช่และคุณจำเป็นต้องหาโซลูชันที่ไม่เกี่ยวข้องกับการทำลาย DNS เพื่อให้เหมาะกับความต้องการของคุณ

คำตอบยาว ๆ

เราได้รับความหลากหลายของคำถามนี้หลายครั้งในปีที่ผ่านมา

คำตอบนั้นง่ายมากที่นี่: คุณไม่สามารถตั้งคำจำกัดความของโซนเดียวได้ ซอฟต์แวร์ใด ๆ ที่ให้คุณกำหนดหรือสังเคราะห์หลาย ๆSOAระเบียนในบริบทนี้เป็นซอฟต์แวร์ที่เสียหายและการทำสิ่งที่เสียหายไม่ได้อยู่ในหัวข้อสำหรับ ServerFault คุณต้องเลือกซอฟต์แวร์ DNS ที่ทำให้การจัดการนี้ง่ายสำหรับคุณหรือคุณจำเป็นต้องมีกลยุทธ์ที่แตกต่างกันซึ่งไม่เกี่ยวข้องกับทางลัดนี้

มีเทคนิคบางอย่างที่คุณสามารถใช้เพื่อทำให้ชีวิตง่ายขึ้น ... โดยใช้ BIND เป็นตัวอย่างเป็นเรื่องธรรมดาที่จะกำหนดหลายโซนซึ่งทั้งหมดอ้างอิงไฟล์เทมเพลตโซนเดียวกัน นี่เป็นซอฟต์แวร์ทางกฎหมายและการตรวจสอบที่สมบูรณ์แบบซึ่งจะไม่พบสิ่งผิดปกติ แต่อย่างใด: ดูคำตอบของ MadHatter คนส่วนใหญ่ส่งผ่านโซลูชันนี้เพราะยังคง "ทำงานมากเกินไป" เพื่อเพิ่มการประกาศโซนทุกครั้งที่มีการซื้อโดเมนใหม่ แต่ไม่มีตัวเลือก "กำหนดค่าหนึ่งครั้งและเดินออกไป" สำหรับโฮสต์ประเภทนี้

รุ่นที่ใหม่กว่าของ BIND สนับสนุนตัวเลือกที่เรียกallow-new-zonesว่าจะช่วยให้คุณสร้างคำจำกัดความของโซนแบบไดนามิกได้ทันทีผ่านrndc addzoneฟังก์ชันการทำงานใหม่ คุณอาจต้องการที่จะดูที่นี้และดูว่ามันเหมาะกับความต้องการของคุณ

นอกเหนือจากที่แนะนำวิธีแก้ไขตัวเลือกของคุณจะค่อนข้าง จำกัด บางครั้งคุณก็ติดขัดกับการทำงานหากซอฟต์แวร์ไม่ทำสิ่งที่คุณต้องการ


-2

เมื่อคุณพูดว่า "โดเมนจำเป็นต้องกำหนดค่าเหมือนกัน" คุณหมายถึงพวกเขาต้องเก็บบันทึกทรัพยากรเดียวกันหรือไม่ ในกรณีนี้จะไม่DNAMERR สำหรับทุกคน แต่โดเมนเดียวจะเป็นโซลูชันที่สะอาดกว่านี้ไหม

ฉันไม่สามารถเอาชนะเคล็ดลับโดย @MadHatter การนำเข้าไฟล์เทมเพลตเดียวกันในขณะที่อยู่ในขอบเขตคำถามของคุณอย่างเคร่งครัด ฉันสามารถเสนอวิธีการที่คล้ายกันสำหรับLDAPแบ็กเอนด์ (ในกรณีของฉันใช้กับ powerDNS): เพิ่มassociatedDomainคุณสมบัติสำหรับบันทึก SOA และ NS ที่เกี่ยวข้องเช่น:

dn: dc=vanitydomains,ou=DNS,dc=myDIT
objectClass: dNSDomain2
objectClass: domainRelatedObject
dc: vanitydomains
associatedDomain: vanitydomain.ORG
associatedDomain: vanitydomain.NET
associatedDomain: vanitydomain.COM
associatedDomain: vanitydomain.INFO
sOARecord: NS1.example.com  sysadmin.example.com 2011100701 28800 1800 2592000 10800
dNameRecord: example.com
nSRecord: NS1.example.com
nSRecord: NS2.example.com

น่าเศร้าที่เทคนิค DNAME พลาดจุดสูงสุดของโซนเนื่องจากข้อ จำกัด ของ RFC การสังเคราะห์ CNAME ที่เป็นผลมาจากระเบียน DNAME ยังคงอยู่ภายใต้ข้อ จำกัดเดียวกันของระเบียน CNAME ที่ไม่สังเคราะห์ ไม่เหมือนกับโซลูชันของ MadHatter ผลลัพธ์นั้นห่างไกลจาก RRsets ที่เหมือนกัน 100%
Andrew B
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.