2009-03-16 35 views
10

Tôi cần phải xây dựng một máy chủ DNS bộ nhớ đệm không độc quyền tùy chỉnh trong C/C++. Bất kỳ hướng dẫn nào? Liên kết? Mẫu? Cảm ơn!Làm thế nào để xây dựng một máy chủ DNS tùy chỉnh đơn giản trong C/C++

+0

Tại sao trên trái đất bạn có thể có thể cần phải xây dựng máy chủ DNS của riêng bạn? –

+7

Vì tôi cần một máy chủ DNS với một số chức năng không standart –

+0

Tôi khuyên bạn nên tìm giải pháp thay thế, nhưng nếu đây là cách bạn phải đi… djbdns là miền công cộng, vì vậy bạn có thể hack nó lên tất cả những gì bạn muốn. –

Trả lời

16

Không có thứ như máy chủ DNS "đơn giản", đặc biệt nếu bạn muốn bảo mật tốt. Các cuộc tấn công DNS gần đây đã chỉ ra rằng chức năng cache trong các máy chủ DNS đệ quy đặc biệt dễ bị tấn công.

Đánh giá lại xem bạn có thực sự cần bộ đệm ẩn cục bộ của riêng mình hay không. Nếu không, bạn có lẽ nên thay đổi mã proxy DNS hiện tại (chẳng hạn như 'dnsmasq').

Nếu bạn muốn cuộn riêng, có các thư viện tốt như ldns có thể cung cấp quyền truy cập vào các gói DNS cơ bản.

Tôi đang sử dụng ldns bản thân mình cùng với libevent để triển khai máy chủ DNS Fuzzing mà tôi đã đề cập trong câu hỏi trước đó.

2

Bắt đầu với djbdns.

+0

Tôi sẽ cẩn thận về điều đó. phần mềm của djb có giấy phép rất hạn chế. đảm bảo rằng nó đồng ý với mục đích sử dụng của bạn. – SingleNegationElimination

+2

djbdns hiện là miền công cộng, nhưng tôi vẫn không sử dụng ... – Alnitak

1

Cách khác, bạn có thể sử dụng Ragel State Machine Compiler để xây dựng máy chủ của mình từ đầu.

+0

Máy trạng thái là một phần rất nhỏ của mã máy chủ ... – bortzmeyer

+0

Đối với nội dung được xác định bởi thông số rất nghiêm ngặt như máy chủ DNS, đó là (và cho là phần quan trọng nhất). –

2

Nếu bạn thực sự cần phải làm điều đó (nó là một khổng lồ làm việc, thấy trả lời Alnitak của), bắt đầu từ một chương trình tốt hiện có (không phải là một người đàn ông thử nghiệm bỏ dở trong một thời gian dài như djbdns) và sửa đổi nó.

Unbound có lẽ là lựa chọn hợp lý cho việc này. (Cơ sở mã nhỏ hơn BIND.)

+1

Lưu ý cho người đọc: nhớ bỏ qua các phiếu giảm giá nếu không có bình luận để giải thích chúng. – bortzmeyer

+1

Phần mềm của djb thường xuyên được biết là hành xử trái với các tiêu chuẩn vì niềm tin chung của anh ấy là tốt hơn tiêu chuẩn, và anh ta cũng được biết là phủ nhận sự tồn tại của các lỗi nâng cao đặc quyền từ xa nghiêm trọng trong mã của anh ấy. Cùng với thời gian dài, trong đó djbdns hoàn toàn không được duy trì, tôi nghĩ những yếu tố này làm cho nó hoàn toàn công bằng khi bortzmeyer gọi nó là "một trải nghiệm một người không mặc dù trong một thời gian dài" và ngăn cản việc triển khai trên môi trường không có sở thích. –

Các vấn đề liên quan