Làm cách nào tôi có thể quản lý tất cả các tên miền của mình với cấu hình tối thiểu?


10

Đây là một câu hỏi Canonical về quản trị máy chủ DNS.

Tôi có một trăm tên miền. Tất cả các tên miền này cần phải được định cấu hình giống hệt nhau, nhưng có vẻ như rất lãng phí thời gian để phải định cấu hình một vùng mới và / hoặc vùng tệp cho mỗi một trong các miền này. Phải có một cách tốt hơn để tự động hóa điều này!

Tôi nghĩ rằng tôi đang làm gì đó ... nếu tôi tạo một vùng được gọi .hoặc sử dụng một số tính năng khác trong phần mềm DNS của mình để luôn trả về một IP cụ thể khi một Abản ghi được yêu cầu, điều này dường như khiến tôi khá gần với kết thúc mong muốn của mình kết quả. Máy chủ của tôi đang phản hồi có thẩm quyền đối với các yêu cầu và việc quản lý dễ dàng hơn nhiều!

Điều này đã hoạt động rất tốt cho đến khi phần mềm xác thực máy chủ tên bắt đầu kiểm tra các tên miền này. Tôi nhận ra rằng tôi có thể làm cho hầu hết các lỗi biến mất bằng cách thêm NScác bản ghi, nhưng phần mềm của tôi sẽ không cho phép tôi đặt nhiều hơn một SOAbản ghi trong cùng một tệp vùng.

Làm thế nào để tôi làm việc xung quanh SOAvấn đề nhiều kỷ lục này?

Câu trả lời:


12

Trừ khi tôi hiểu nhầm câu hỏi, tôi thường xuyên làm điều này với BIND và dường như mọi thứ đều ổn miễn là mỗi khu vực hoàn toàn giống nhau.

Trên máy chủ tên chính của tôi, tôi có named.confcác mục trỏ đến tệp vùng chung, vd

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

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

và sau đó là một vùng dữ primary/example.GENERICliệu nói, ví dụ

;; 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.

Và tôi không nhận thấy bất kỳ vấn đề với các khu vực này. Tôi sẵn sàng được thông báo rằng tôi đã hiểu nhầm câu hỏi hoặc thực tế là tên miền của tôi không hoạt động, nhưng cho đến lúc đó tôi nghĩ rằng nó hoạt động với tôi.

Lưu ý rằng bạn không thể kéo cùng một mẹo trên phụ ; mỗi khu vực sẽ yêu cầu một tệp khác nhau được lưu trữ. Nhưng vì nội dung của tệp đó sẽ được điền và cập nhật theo các lần chuyển vùng từ chính, đây không phải là vấn đề lớn.


4

Có một số phím tắt bạn có thể sử dụng để làm cho cuộc sống của bạn dễ dàng hơn:

Nếu bạn sử dụng Bind hoặc phần mềm tương tự sử dụng các tệp để lưu trữ dữ liệu vùng: hãy trỏ các vùng của bạn vào cùng một tệp chẳng hạn:

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

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

Vì bạn có thể sử dụng một số tốc ký DNS nhất định, bạn có thể tạo tệp vùng phổ quát:

$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

Điều này sử dụng thực tế là tên máy chủ trong các tệp vùng không kết thúc bằng dấu chấm .luôn được mở rộng với $ORIGINlần lượt được đặt ngầm định thành tên vùng. Và @là viết tắt của $ ORIGIN.


Thay vì duy trì các tệp vùng riêng lẻ bằng tay, hãy kích hoạt một phương thức tương tác theo chương trình với các máy chủ tên của bạn.

Tôi đã sử dụng PowerDNS cho phép RDMS làm back-end rất phù hợp với ngăn xếp LAMP mà chúng tôi đang sử dụng vào thời điểm đó. Các dịch vụ đám mây như Amazon Route 53 cũng hiển thị API của web.

Nhưng ngay cả Bind đáng kính cũng hỗ trợ Cập nhật động , đây là phương pháp để thêm, thay thế hoặc xóa các bản ghi trong máy chủ chính bằng cách gửi cho nó một dạng tin nhắn DNS đặc biệt. Định dạng và ý nghĩa của những thông điệp được chỉ định trong RFC 2136 .

Cập nhật động được kích hoạt bằng cách bao gồm một allow-updatehoặc một update-policymệnh đề trong câu lệnh vùng. Để biết thêm thông tin, hãy xem Hướng dẫn tham khảo quản trị viên Bind .


2
Nửa câu trả lời đầu tiên của bạn đã hết, nhưng tôi không chắc rằng DDNS áp dụng ở đây ... nó không thể được sử dụng để thêm hoặc xóa các vùng, điều này đánh bại những gì hầu hết mọi người trong kịch bản này đang cố gắng thực hiện. (không phải chạm vào tên.conf cho mọi khu vực thêm) Điều gần nhất tôi biết trong vùng đất BIND là rndc addzonetùy chọn mới , nhưng điều đó vẫn hơi xấu vì cuối cùng nó tạo ra một tệp cấu hình có tên băm trong thư mục làm việc cho mỗi khu vực được thêm vào.
Andrew B

Để hiểu những gì bạn đang cố gắng nói, nhưng một cách giải thích khác là khó khăn với nhiều lĩnh vực là trong việc duy trì và sao chép công việc. Tự động hóa / kịch bản DNS là một cái gì đó không được ghi chép tốt.
HBruijn

4

Câu trả lời ngắn

Nếu bạn đang tìm kiếm thiết lập "cấu hình không" trong BIND, thì nó không tồn tại. Thiết lập vùng gốc ( .) có vẻ là một ý tưởng hay, nhưng thực tế không phải vậy và bạn cần tìm một giải pháp không liên quan đến việc phá DNS cho phù hợp với nhu cầu của bạn.

Câu trả lời dài

Chúng tôi đã nhận được các biến thể của câu hỏi này nhiều lần trong năm qua.

Câu trả lời khá đơn giản ở đây: bạn không thể thiết lập một định nghĩa vùng duy nhất. Bất kỳ phần mềm nào cho phép bạn xác định hoặc tổng hợp nhiều SOAbản ghi trong ngữ cảnh này đều là phần mềm bị hỏng và thực hiện những việc bị hỏng không thuộc chủ đề cho ServerFault. Bạn cần phải chọn phần mềm DNS giúp việc quản lý này đơn giản hơn cho bạn hoặc bạn cần đưa ra một chiến lược khác không liên quan đến lối tắt cụ thể này.

Chắc chắn có một số thủ thuật bạn có thể sử dụng để làm cho cuộc sống dễ dàng hơn ... sử dụng BIND làm ví dụ, khá phổ biến để xác định nhiều vùng mà tất cả tham chiếu cùng một tệp vùng mẫu. Điều này là hoàn toàn hợp pháp và phần mềm xác nhận sẽ không có gì sai với nó: xem câu trả lời của MadHatter. Hầu hết mọi người đều vượt qua giải pháp này bởi vì vẫn còn "quá nhiều công việc" để thêm một khai báo vùng mỗi khi có được một tên miền mới, nhưng không có tùy chọn "cấu hình nó một lần và bỏ đi" cho loại lưu trữ này.

Các phiên bản mới hơn của BIND hỗ trợ một tùy chọn được gọi là allow-new-zonessẽ cho phép bạn tự động tạo các định nghĩa vùng một cách nhanh chóng thông qua rndc addzonechức năng mới . Bạn có thể muốn xem cái này và xem nó có phù hợp với nhu cầu của bạn không.

Ngoài ra, các giải pháp được đề xuất, các tùy chọn của bạn có phần hạn chế. Đôi khi bạn bị mắc kẹt với công việc nếu phần mềm không làm mọi thứ theo cách bạn muốn.


-2

Khi bạn nói "các miền cần được cấu hình giống hệt nhau", bạn có nghĩa là chúng phải giữ các bản ghi tài nguyên giống nhau không? Trong trường hợp đó, DNAMERR sẽ không phải là một giải pháp sạch hơn?

Tôi không thể đánh bại mánh khóe bằng cách @MadHatter nhập cùng một tệp mẫu trong khi vẫn nằm trong phạm vi câu hỏi của bạn. Tôi chỉ có thể cung cấp cách tiếp cận tương tự cho LDAPphụ trợ (trong trường hợp của tôi, được sử dụng với powerDNS): thêm các associatedDomainthuộc tính cho các bản ghi SOA và NS có liên quan, như vậy:

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

Đáng buồn là kỹ thuật DNAME bỏ lỡ đỉnh của khu vực do những hạn chế của RFC. Quá trình tổng hợp CNAME từ các bản ghi DNAME vẫn phải chịu các ràng buộc tương tự của các bản ghi CNAME không tổng hợp. Không giống như giải pháp của MadHatter, kết quả rất xa so với các RR giống nhau 100%.
Andrew B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.