djbdns vs ràng buộc [đóng]


20

Tôi là người mới muốn tìm hiểu cách thiết lập máy chủ tên DNS. Tôi nên sử dụng djbdns, BIND, hoặc cái gì khác?

Các yêu cầu mạng hiện tại bao gồm hỗ trợ tên miền phụ, SSL và dịch vụ thư, tất cả đều có lưu lượng rất nhẹ. Tôi muốn một giải pháp một ngày nào đó có thể mở rộng lưu lượng truy cập nặng hơn và có thể yêu cầu phức tạp hơn (như cân bằng tải). Tại thời điểm này tôi sẽ chạy trên Linux.

Tôi đã đọc rằng BIND có vấn đề bảo mật nếu không được cấu hình đúng và cấu hình của nó có thể khó khăn. Tôi cũng đã đọc rằng djbdns dễ cấu hình hơn, an toàn hơn và bằng với tải nặng. Các đối số cho djbdns có vẻ hợp lý, nhưng tôi không có chuyên môn để đánh giá chúng đúng. Nếu BIND tốt hơn, tôi sẽ đánh giá cao một cuộc thảo luận về những tuyên bố đó cho djbdns.

Cảm ơn.


Dịch vụ có thẩm quyền hay đệ quy?
bortzmeyer

Có thẩm quyền, tôi nghĩ.
chernevik

Câu trả lời:


14

Tôi đã làm việc với djbdns trong quá khứ và hiện đang điều hành một loạt các máy chủ BIND.

Vấn đề lớn nhất với djbdns là tốt nhất là cách giáo viên lớp một của tôi đưa nó vào thẻ báo cáo của tôi: "không chơi tốt với người khác". Nó chỉ đơn giản là không hoạt động như bất cứ thứ gì khác trên hộp unix theo mọi cách rất nhỏ có thể cắn bạn sau này. Nó sử dụng cú pháp cho các tệp vùng mà bạn sẽ không thấy ở bất kỳ nơi nào khác.

Ưu điểm lớn nhất của djbdns là nó được thiết kế từ đầu với bảo mật là mục tiêu số 1.

Nếu bạn định thiết lập một máy chủ DNS, hãy đưa nó ra internet và sau đó không bao giờ duy trì nó, djbdns sẽ là cách tốt nhất.

Trong thế giới thực, hầu hết các quản trị viên tốt hơn nên sử dụng các gói BIND từ nhà cung cấp hệ điều hành và vá nó kịp thời khi có bản cập nhật. Nhưng chạy nó chroot là một ý tưởng tốt và giữ cho các máy chủ DNS có thẩm quyền của bạn tách biệt với các máy chủ DNS trình phân giải đệ quy của bạn là một ý tưởng tốt.

Nếu bạn tìm thấy tài liệu cho một cái gì đó với DNS, BIND sẽ được bao gồm và djbdns dường như không được bao gồm. Nếu bạn sử dụng dig, định dạng mà nó trả về có thể được dán vào tệp vùng BIND và hoạt động. Nó hoạt động như bất kỳ daemon unix bình thường thay vì một cái gì đó từ hành tinh khác.

Chúng tôi sử dụng một số bộ cân bằng tải phần cứng và cân bằng tải các máy chủ BIND phân giải đệ quy của chúng tôi; làm việc tuyệt vời Chỉ cần đảm bảo rằng người dùng nhận được IP nguồn giống như họ đã gửi yêu cầu của họ và mọi thiết lập cân bằng tải có khả năng UDP và TCP sẽ hoạt động. Nếu bạn đang thực hiện DNS có thẩm quyền, việc cân bằng tải cũng đơn giản như có nhiều máy chủ và xuất bản tất cả chúng trong thông tin whois; các máy chủ DNS khác sẽ tải cân bằng một cách thông minh.


2
Tôi thích nghĩ về nó như thể djdns không hoạt động, đó là lỗi của bạn, nếu có, thì đó là DJ của nó.
Dave Cheney

2
Toàn bộ cuộc thảo luận là hữu ích, và đưa ra bất kỳ câu trả lời nào có vẻ hơi bất công cho những người khác. Đây là kết luận gần nhất với bản thân tôi đã đạt được: bất kể sự khác biệt về công nghệ của họ, BIND được hỗ trợ tốt hơn bởi tài liệu và cộng đồng. Như một câu trả lời khác đã lưu ý, hiểu rằng dường như có thể đơn giản hóa các tương tác DNS trong tương lai. Những lợi thế đó có vẻ quan trọng hơn bất kỳ lợi ích nào mà djbdns mang lại dễ dàng cho cấu hình.
chernevik

9

Đối với một dịch vụ có thẩm quyền, nsd .

Đối với một đệ quy, không ràng buộc .

Cả hai đều nhỏ (vì vậy có lẽ có ít lỗ hổng bảo mật đang chờ được phát hiện), được duy trì tích cực và hỗ trợ tất cả những thứ DNS gần đây (DNSSEC, IPv6, v.v.).

Nếu không, BIND là phần mềm tốt.

djbdns là một dự án một người đàn ông, không được biết đến trong một thời gian dài, không an toàn hơn (tác giả chỉ nói như vậy), và trang web chính thức đầy lỗi. (Bây giờ, tôi chắc chắn rằng tôi sẽ nhận được rất nhiều lượt tải xuống từ djbboys, đại diện của tôi quá cao so với sở thích của tôi :-)


8

Nếu nó là dành cho chính bạn và nếu bạn muốn tìm hiểu cách DNS hoạt động, tôi sẽ sử dụng djbdns.

Nếu bạn muốn hiểu cách mọi người khác làm DNS và cách hỗ trợ triển khai doanh nghiệp điển hình, hãy tìm hiểu liên kết.

Nếu mục tiêu của bạn là nỗ lực và hỗ trợ tối thiểu và bạn có năng lực hợp lý, djbdns có chi phí hỗ trợ thấp hơn nhiều.

Nếu bạn ở bên hàng rào mới hơn, có lẽ bạn sẽ dễ dàng bị trói buộc hơn và chạy, nhưng hãy nhớ rằng nó có nhiều khả năng phát nổ theo những cách kỳ lạ và lập dị.

Nếu tôi chưa biết djbdns (và ràng buộc), tôi cũng sẽ xem xét các powerdns và maradns, nhưng tôi nghi ngờ rằng đối với các cài đặt nhỏ, nó tốt hơn bộ djbdns.

Bất kể, ngay cả khi bạn sử dụng liên kết để quảng cáo DNS của mình lên internet, bạn vẫn nên chạy dnscache (một phần của bộ djbdns) chạy trên localhost cho trình phân giải hệ thống của bạn.


6

Bỏ qua djbdns. Mặc dù djb là một anh hùng, anh ta mang theo sự kiêu ngạo của một nhà toán học đối với phần mềm. Thực tế là nó không hoạt động như các phần mềm khác liên quan đến việc bắt đầu / dừng nó có thể là một minh chứng tốt cho một kỹ thuật quản lý daemon thông minh. Nhưng bạn sẽ phải rút tài liệu ra nếu bạn không sử dụng nó thường xuyên, bởi vì mọi thứ đều khác nhau. Nếu bạn cũng thiết lập nó trên các hệ thống mà người khác duy trì, bạn sẽ cần viết cho họ tài liệu rõ ràng - họ sẽ cần đọc toàn bộ để thực hiện các thao tác đơn giản. Chạy công cụ ra khỏi init là dễ thương, thậm chí thông minh. Nhưng nó cũng đáng ghét, đáng ngạc nhiên và không chuẩn.

Ngoài ra, tôi đã gặp vấn đề với djbdns gây ra vấn đề nghiêm trọng do khăng khăng chỉ tôn trọng các tiêu chuẩn chứ không phải khả năng tương tác phần mềm. Khắc phục sự cố những vấn đề này là một sự lãng phí lớn thời gian, bởi vì nó có những khác biệt nhỏ trong các gói DNS.

Ngoài ra, djbdns có hành vi lạ trong một số trường hợp sẽ khiến mọi người khắc phục sự cố máy chủ DNS của bạn bằng các công cụ không phải là djb (ví dụ với nslookup) để có kết quả đáng ngạc nhiên. Bạn sẽ lãng phí thời gian để giải thích "thực ra, tôi chỉ sử dụng máy chủ DNS tối nghĩa có tên là djbdns. Vấn đề là các công cụ chẩn đoán của bạn đang cung cấp cho bạn một tin nhắn lạ, nhưng nó hoạt động tốt. Nếu bạn nhìn vào gói chụp này, bạn có thể biết Điều này không liên quan đến vấn đề chúng tôi đã gặp cách đây vài tháng khi djbdns không hoạt động chính xác với máy chủ DNS của bạn. Nó cũng không liên quan đến vấn đề chúng tôi gặp phải vài tuần trước khi tôi rời khỏi văn phòng và nó đã đưa tôi đến đồng đội một giờ để khởi động lại máy chủ DNS. "

Các vấn đề tương tự với qmail tất cả xung quanh.

Có một số giá trị giáo dục trong việc thiết lập djbdns, nếu bạn đang đặt câu hỏi và có thời gian để giết. Bạn cũng có thể học được nhiều thứ chỉ bằng cách đọc trang web của djb.

Có hai bộ vấn đề bảo mật. Các lỗ hổng bảo mật cho phép kẻ tấn công truy cập vào hệ thống - djbdns gần như chắc chắn không có bất kỳ lỗi nào trong số này. Vài năm trước, bind có khá nhiều thứ đáng xấu hổ được phát hiện trong một thời gian ngắn, cũng làm lộ ra một thiết kế tồi. Tôi hy vọng rằng trong nhiều năm qua, nó đã được viết lại hoàn toàn. Nếu bạn thực sự muốn an toàn về mặt này, hãy chạy nó dưới một máy ảo (ví dụ Xen). Ngoài ra, hãy xem xét, nếu bạn đang chạy trên một hệ thống Linux với SELinux ở chế độ được nhắm mục tiêu, bạn sẽ có một thiết lập cho liên kết và có thể sẽ không bận tâm với một cho djbdns. Hệ thống bind + SELinux có khả năng an toàn hơn.

Vấn đề khác là bảo mật chống nhiễm độc bộ nhớ cache. Tôi đoán là djbdns đã tốt hơn khi nó được phát hành, và ràng buộc có lẽ tốt hơn bây giờ do sự chú ý lớn hơn. Đây có lẽ là nguyên nhân khiến thính giác của bạn bị ràng buộc là không an toàn trừ khi "được cấu hình đúng". Bạn ít nhất nên nghiên cứu và hiểu vấn đề này. Trong quá trình có thể bạn sẽ tìm ra những rủi ro cấu hình tồn tại cho cả hai máy chủ DNS.

Hành vi dưới tải nặng là một tiêu chí vô nghĩa đối với hầu hết người dùng. Coi chừng hiệu suất được sử dụng như một tiêu chí để đánh giá phần mềm hiếm khi bị nghẽn cổ chai hiệu năng. Bạn không lưu trữ máy chủ DNS lưu trữ cho một cơ sở người dùng khổng lồ, nơi bạn có thể nhận được yêu cầu ở một tỷ lệ đáng kể. Bạn đang chạy DNS có thẩm quyền để cung cấp các dịch vụ có thể đang chạy trên cùng một hệ thống. Các dịch vụ này đắt hơn hàng ngàn lần so với DNS. Liên kết Internet của bạn thậm chí có thể không đủ để tải nặng máy chủ DNS của bạn, nhưng nếu bạn nhận được tải nặng như vậy đối với các dịch vụ bạn cung cấp, DNS sẽ không phải là nút cổ chai.


5

Bạn có thể muốn có một cái nhìn về MaraDNS , một máy chủ DNS nhận biết bảo mật.

  • Đảm bảo. MaraDNS có một lịch sử bảo mật tốt hơn hoặc tốt hơn bất kỳ máy chủ DNS nào khác. Ví dụ, MaraDNS luôn luôn ngẫu nhiên, sử dụng trình tạo số ngẫu nhiên an toàn, ID truy vấn và cổng nguồn của các truy vấn DNS; và không bao giờ dễ bị tổn thương trước cuộc tấn công ngộ độc bộ nhớ cache "mới".

  • Được hỗ trợ. MaraDNS có một lịch sử lâu dài được duy trì và cập nhật. MaraDNS ban đầu được tạo ra vào năm 2001. MaraDNS 1.0 được phát hành vào năm 2002 và MaraDNS 1.2 được phát hành vào tháng 12 năm 2005. MaraDNS đã được thử nghiệm rộng rãi, cả với quy trình SQA và hơn bốn năm sử dụng trong thế giới thực. MaraDNS tiếp tục được hỗ trợ đầy đủ: Bản phát hành gần đây nhất được thực hiện vào ngày 13 tháng 2 năm 2009. Deadwood, mã sẽ trở thành một phần của MaraDNS 2.0, đang được tích cực phát triển.

  • Dễ sử dụng. Một cấu hình đệ quy cơ bản chỉ cần một tệp cấu hình ba dòng duy nhất. Một cấu hình có thẩm quyền cơ bản chỉ cần một tệp cấu hình bốn dòng và một tệp vùng một dòng. MaraDNS được ghi lại đầy đủ, với cả hướng dẫn dễ làm và hướng dẫn tham khảo đầy đủ và cập nhật.

  • Nhỏ bé. MaraDNS rất phù hợp cho các ứng dụng nhúng và các môi trường khác trong đó máy chủ phải sử dụng số lượng tài nguyên tối thiểu tuyệt đối có thể. Hệ nhị phân của MaraDNS nhỏ hơn bất kỳ máy chủ DNS đệ quy nào hiện đang được duy trì.

  • Mã nguồn mở. MaraDNS là nguồn mở hoàn toàn, Giấy phép là giấy phép BSD hai điều khoản gần giống với giấy phép FreeBSD.

Xem trang vận động của maraDNS nơi có so sánh một số phần mềm máy chủ DNS có thể giúp bạn chọn.


MaraDNS không còn được duy trì bởi tác giả, như đã lưu ý trên trang chủ của dự án: maradns.org
Joseph Holsten

1
Như một sự điều chỉnh, trong khi tôi không còn tích cực phát triển MaraDNS, tôi vẫn đang duy trì nó (sửa lỗi, cập nhật cho các trình biên dịch mới và các bản phân phối Linux, v.v.). Trên thực tế, tôi vừa phát hành một bản phát hành mới của MaasDNS trong năm nay (2014) và có thể sẽ thực hiện một năm tới: maradns.samiam.org/doad.html
samiam

4

Nếu bạn đang chạy DNS cho riêng mình, djbdns là gói phần mềm tốt hơn. Đây là một trong số ít các gói phần mềm đã xác định được sự cố bảo mật DNS chính từ năm ngoái và đã được xây dựng / vá để sửa lỗi nhiều năm trước. Để lưu bộ đệm DNS, tôi cài đặt dnscache (một phần của djbdns) trên tất cả các máy chủ không chạy như máy chủ DNS có thẩm quyền. Nó thực sự hoạt động tốt hơn BIND cho hầu hết các mặt hàng, nhưng với phần cứng ngày nay, trọng lượng tăng thêm và tốc độ chậm hơn của BIND là không thành vấn đề.

Để có kinh nghiệm, tôi sẽ tìm hiểu những điều cơ bản về BIND, bất kể bạn chọn chạy gói nào.

Djbdns được thiết lập để thực sự dễ dàng để quản trị từ dòng lệnh. Tất cả các thay đổi đối với dữ liệu DNS được thực hiện dưới dạng các lệnh. Trong BIND, bạn chỉnh sửa một loạt các tệp văn bản.

Bạn có thể nhận được gói cho cả hai. Tôi xem sự khác biệt là IE so với các trình duyệt khác. IE được tích hợp sẵn và hoạt động cho nhiều thứ và không phải là bạn thay đổi từ mặc định. Djbdns là khác nhau và đòi hỏi một bộ đánh đổi khác nhau. Đối với một ISP, việc chuyển từ BIND sang djbdns có thể hơi khó khăn, bởi vì BIND theo mặc định thực hiện lưu trữ bộ đệm và tên, trong khi djbdns chia phần này thành hai phần. Giải pháp bảo mật ưa thích này, nhưng khó cài đặt hơn, vì vậy nhiều cài đặt BIND không làm phiền.


3

Cá nhân tôi muốn nói rằng bạn cần học những điều cơ bản về BIND để tham khảo, nhưng việc chuyển sang một thứ khác sẽ giúp bạn trở thành một quản trị viên hệ thống hạnh phúc hơn trong tương lai :)

Hầu hết các nơi tôi từng làm việc trong ngành ISP dường như sử dụng djbdns, nó cung cấp các khối và nền tảng xây dựng tuyệt vời cho các dịch vụ 'được quản lý' trên lớp - viết các tập lệnh để tạo các tệp vùng là khá nhỏ, có nghĩa là bạn có thể lưu trữ tất cả dữ liệu DNS của mình trong SQL nào. Nó xử lý một lượng truy vấn vô lý mỗi giây và an toàn để khởi động.

Nếu bạn cần mở rộng quy mô của nó, chỉ cần xem qua http://haproxy.1wt.eu và bật một vài máy chủ có thẩm quyền đằng sau đó! Tôi cũng khuyên bạn nên tách bộ giải quyết khỏi các máy chủ có thẩm quyền trong bất kỳ thiết lập nào bạn chọn để triển khai.

Những thứ khác đáng để đọc là MaraDNS và PowerDNS.


2

Tôi chủ yếu sử dụng FreeBSD cho những thứ này và vì nó đi kèm với BIND nên tôi không bao giờ thực sự nỗ lực để học bất cứ điều gì khác. Bất cứ khi nào tôi thấy BIND khá dễ cấu hình và vì nó được FreeBSD duy trì ở góc độ bảo mật, tôi chỉ phải theo dõi kênh đó cho bất kỳ vấn đề bảo mật nào.

Vì vậy, tôi đoán rằng đặt cược tốt nhất cho bạn là thử cả hai và xem cái nào hợp với bạn nhất, đó là trừ khi bạn sử dụng một hệ điều hành đi kèm với một trong hai.


2

Nếu bạn đang muốn tìm hiểu về DNS, một bản sao của cuốn sách " DNS và BIND " của O'Reilly và phiên bản liên kết mới nhất được cài đặt có lẽ là cách tốt nhất để sử dụng.

Đúng là BIND đã có nhiều vấn đề bảo mật hơn trong cuộc đời của nó. dnjdns không có gì cho đến năm ngoái, nhưng nó có kiến ​​trúc rất khác so với BIND và bạn có thể thấy khó khăn hơn để nhận nếu bạn không quen với cách hệ thống đặt tên hoạt động.

Nếu bạn chỉ muốn tìm hiểu về cách chạy máy chủ DNS (trái ngược với tìm hiểu về các giao thức và như vậy), tốt nhất bạn chỉ nên chọn một và lặn vào. Tôi hy vọng bạn sẽ tìm thấy các gói nhị phân cho cả hai trong bất cứ điều gì * nix distro bạn chọn. Điều đó đang được nói, có một số lợi thế để biên dịch từ nguồn với phần mềm mà bạn có thể cần phải xây dựng lại nếu có lỗ hổng bảo mật được công bố.

Như với bất kỳ dịch vụ trực tuyến nào, một số suy nghĩ thông thường và suy nghĩ thực dụng là cách tốt nhất để sử dụng, bất kể bạn sử dụng phần mềm nào. Nếu bạn phải bật cập nhật động, hãy đảm bảo rằng các bản cập nhật đã được ký. Nếu bạn cho phép chuyển vùng, hạn chế người có thể thực hiện chúng từ máy chủ của bạn, v.v.


1
Tôi tham gia với djbdns, nhanh chóng khắc phục một số sự cố cài đặt nhỏ và phát hiện ra rằng không có một cộng đồng rất lớn nào ghi lại các vấn đề như vậy. Không có gì giống như "DNS và BIND" cho nó. Ngay cả khi tôi vượt qua rào cản này, mọi điều tôi có thể muốn làm có nhiều khả năng sẽ thảo luận về giải pháp BIND. Cho dù công nghệ đó tốt hơn hay không, BIND dường như có sự hỗ trợ tốt hơn.
chernevik

Rõ ràng, không quá khó như bạn muốn. Tôi đang cố gắng thực hiện công việc và đưa ra những lựa chọn tốt nhất có thể với sự hiểu biết hạn chế, không làm cạn kiệt tiềm năng của bất kỳ công cụ cụ thể nào. Tôi rất biết ơn về djbdns, perl và lighttpd và BSD miễn phí và tất cả các công cụ nguồn mở khác mà tôi hiện không sử dụng. Vâng, gần như tất cả. Nhưng tôi không nghĩ rằng bạn có thể nghiêm túc mong đợi một người mới đến RTFM, hoặc Tìm kiếm TFM, nhiều hơn tôi. Bạn rõ ràng đã đầu tư vào djbdns, và điều đó thật tuyệt. Nếu ý kiến ​​của tôi làm phiền bạn, tôi đoán bạn có thể hy vọng vào những người mới thông minh hơn, hoặc bạn có thể làm việc để giúp chúng tôi tìm câu trả lời dễ dàng hơn.
chernevik

2

TRÓI BUỘC.

Nếu bạn sẽ tìm hiểu cách định cấu hình nó (trong khi đọc cả đống RFC liên quan đến DNS có phần mệt mỏi) thì bạn có thể dễ dàng chuyển sang máy chủ DNS khác trong tương lai (cho bất kỳ mục đích nào). Tôi đang sử dụng BIND làm máy chủ chính và máy chủ thứ cấp ở mọi nơi trên FreeBSD, Linux và thậm chí trên máy tính xách tay Vista (đối với máy chủ VMware NAT'ed).

Btw, thật thú vị khi đọc nguồn BIND và khám phá cách, ví dụ, các hàm cổ điển như gethostbyname () hoặc gethostbyaddr () hoạt động.


2

Sau nhiều năm sử dụng liên kết, cuối cùng tôi cũng nhận ra rằng hầu hết các máy chủ của tôi không cần phải chạy trình nền DNS của riêng họ. Điều này có thể không áp dụng cho bạn, nhưng hãy nghĩ về nó: hầu như mọi nhà đăng ký tên miền ngày nay đều cung cấp máy chủ bản ghi DNS cho bạn (thường cung cấp cho bạn một số cách dựa trên web để chỉnh sửa bản ghi DNS của bạn). Họ xử lý việc cung cấp thông tin, quản lý các phần phụ, v.v. Nếu bạn loại bỏ nhu cầu máy chủ của bạn trả lời các truy vấn DNS, tất cả những gì còn lại là để máy chủ của bạn thực hiện tra cứu DNS. Đối với điều này, tôi chỉ điểm /etc/resolv.conf của tôi tại 4.2.2.1 và 4.2.2.2, đó là các máy chủ DNS "anycast" Level3 và dường như khá nhanh và đáng tin cậy.

Một phần thưởng bổ sung là cấu hình tường lửa cho máy chủ của bạn không còn phải cho phép DNS. Bạn chỉ cần theo quy tắc "đã thiết lập, có liên quan" để cho phép các truy vấn DNS của máy chủ của bạn hoạt động.

Được rồi, vì vậy bạn đã không hỏi nếu bạn cần chạy một daemon DNS, nhưng đó là câu hỏi tôi đã trả lời. Để hoàn thành, nếu bạn thấy bạn phải chạy một cái, tôi khuyên bạn nên gắn bó với liên kết vì nó thường được sử dụng, bạn sẽ tìm thấy rất nhiều tài liệu và giúp làm cho nó làm những gì bạn muốn.


Có vẻ hợp lý, nhưng có vẻ dễ dàng hơn để tìm ra cách thức này hoạt động bằng cách tự lưu trữ đầu tiên.
chernevik
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.