Ủy quyền vùng ngược cho các mạng con nhỏ hơn /24 trong BIND. Làm thế nào nó hoạt động

Một ngày nọ, tôi phải đối mặt với nhiệm vụ trao cho một trong những khách hàng của mình quyền chỉnh sửa các bản ghi PTR của mạng con /28 được chỉ định cho anh ta. Tôi không có tính năng tự động hóa để chỉnh sửa cài đặt BIND từ bên ngoài. Vì vậy, tôi quyết định đi theo một con đường khác - ủy quyền cho khách hàng một phần vùng PTR của mạng con /24.

Có vẻ như - điều gì có thể đơn giản hơn? Chúng tôi chỉ cần đăng ký mạng con theo yêu cầu và chuyển nó đến NS mong muốn, như được thực hiện với tên miền phụ. Nhưng không. Nó không đơn giản như vậy (mặc dù trên thực tế nó nói chung là thô sơ, nhưng trực giác sẽ không giúp ích được gì), đó là lý do tại sao tôi viết bài này.

Ai muốn tự mình tìm hiểu thì có thể đọc RFC
Ai muốn một giải pháp làm sẵn, chào mừng bạn đến với cat.

Để không làm chậm trễ những người thích phương pháp sao chép-dán, tôi sẽ đăng phần thực hành trước, sau đó là phần lý thuyết.

1. Luyện tập. Khu vực đại biểu /28

Giả sử chúng ta có một mạng con 7.8.9.0/24. Chúng ta cần ủy quyền mạng con 7.8.9.240/28 tới khách hàng dns 7.8.7.8 (ns1.client.domain).

Trên DNS của nhà cung cấp, bạn cần tìm tệp mô tả vùng đảo ngược của mạng con này. Để cho nó được 9.8.7.in-addr.harp.
Chúng tôi nhận xét về các mục từ 240 đến 255, nếu có. Và ở cuối tập tin chúng tôi viết như sau:

255-240  IN  NS      7.8.7.8
$GENERATE 240-255 $ CNAME $.255-240

đừng quên tăng vùng nối tiếp và làm

rndc reload

Điều này hoàn thành phần nhà cung cấp. Hãy chuyển sang dns khách hàng.

Đầu tiên, hãy tạo một tập tin /etc/bind/master/255-240.9.8.7.in-addr.arpa nội dung sau:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Và trong Name.conf thêm mô tả về tệp mới của chúng tôi:

zone "255-240.9.8.7.in-addr.arpa." IN {
        type master;
        file "master/255-240.9.8.7.in-addr.arpa";
};

B khởi động lại quá trình liên kết.

/etc/init.d/named restart

Tất cả. Bây giờ bạn có thể kiểm tra.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Xin lưu ý rằng không chỉ bản ghi PTR được cung cấp mà còn cả CNAME. Đó là cách nó nên được. Nếu bạn đang thắc mắc tại sao thì chào mừng bạn đến với chương tiếp theo.

2. Lý thuyết. Làm thế nào nó hoạt động.

Rất khó để cấu hình và gỡ lỗi hộp đen. Sẽ dễ dàng hơn nhiều nếu bạn hiểu những gì đang diễn ra bên trong.

Khi chúng tôi ủy quyền một tên miền phụ trong một tên miền miền, sau đó chúng tôi viết một cái gì đó như thế này:

client.domain.	NS	ns1.client.domain.
ns1.client.domain.	A	7.8.7.8

Chúng tôi nói với những người hỏi rằng chúng tôi không chịu trách nhiệm về trang web này và nói ai chịu trách nhiệm. Và mọi yêu cầu về client.domain chuyển hướng đến 7.8.7.8. Khi kiểm tra, chúng ta thấy hình ảnh sau (chúng ta sẽ bỏ qua những gì client có ở đó. Điều đó không quan trọng):

# host test.client.domain
test.client.domain has address 7.8.9.241

Những thứ kia. chúng tôi đã được thông báo rằng có một bản ghi A như vậy và ip của nó là 7.8.9.241. Không có thông tin không cần thiết.

Làm thế nào điều tương tự có thể được thực hiện với một mạng con?

Bởi vì máy chủ DNS của chúng tôi được đăng ký trong RIPE, sau đó khi yêu cầu địa chỉ IP PTR từ mạng của chúng tôi, yêu cầu đầu tiên sẽ vẫn thuộc về chúng tôi. Logic tương tự như với các miền. Nhưng làm cách nào để nhập mạng con vào tệp vùng?

Hãy thử nhập nó như thế này:

255-240  IN  NS      7.8.7.8

Và... điều kỳ diệu đã không xảy ra. Chúng tôi không nhận được bất kỳ yêu cầu chuyển hướng nào. Vấn đề là liên kết thậm chí không biết rằng các mục này trong tệp vùng đảo ngược là địa chỉ IP và thậm chí còn không hiểu mục nhập phạm vi. Đối với anh ta, đây chỉ là một loại tên miền phụ mang tính biểu tượng. Những thứ kia. đối với liên kết sẽ không có sự khác biệt giữa "255-240"Và"siêu khách hàng của chúng tôi". Và để yêu cầu đi đến nơi cần đến, địa chỉ trong yêu cầu sẽ như thế này: 241.255-240.9.8.7.in-addr.arpa. Hoặc như thế này nếu chúng ta sử dụng tên miền phụ ký tự: 241.oursuperclient.9.8.7.in-addr.arpa. Điều này khác với thông thường: 241.9.8.7.in-addr.harp.

Sẽ rất khó để thực hiện một yêu cầu như vậy một cách thủ công. Và ngay cả khi nó có tác dụng thì vẫn chưa rõ làm thế nào để áp dụng nó vào đời sống. Cuối cùng, theo yêu cầu 7.8.9.241 DNS của nhà cung cấp vẫn trả lời cho chúng tôi chứ không phải của khách hàng.

Và đây là lúc chúng phát huy tác dụng CNAME.

Về phía nhà cung cấp, bạn cần tạo bí danh cho tất cả địa chỉ IP của mạng con theo định dạng sẽ chuyển tiếp yêu cầu đến DNS của máy khách.

255-240  IN  NS      ns1.client.domain.
241     IN  CNAME   241.255-240
242     IN  CNAME   242.255-240
и т.д.

Cái này dành cho người chăm chỉ =))

Còn với những người lười biếng thì thiết kế dưới đây sẽ phù hợp hơn:

255-240  IN  NS      ns1.client.domain.
$GENERATE 240-255 $ CNAME $.255-240

Bây giờ yêu cầu thông tin tại 7.8.9.241 của 241.9.8.7.in-addr.harp trên máy chủ DNS của nhà cung cấp sẽ được chuyển đổi thành 241.255-240.9.8.7.in-addr.arpa và đi tới máy khách dns.

Phía khách hàng sẽ cần xử lý các yêu cầu như vậy. Theo đó, chúng tôi tạo ra một vùng 255-240.9.8.7.in-addr.arpa. Về nguyên tắc, trong đó, chúng tôi có thể đặt các mục nhập ngược cho bất kỳ ip nào của toàn bộ mạng con /24, nhưng họ sẽ chỉ hỏi chúng tôi về những mục mà nhà cung cấp chuyển tiếp cho chúng tôi, vì vậy chúng tôi sẽ không thể chơi đùa =).
Để minh họa, một lần nữa tôi sẽ đưa ra ví dụ về nội dung của tệp vùng đảo ngược từ phía máy khách:

$ORIGIN 255-240.9.8.7.in-addr.arpa.
$TTL 1W
@                       1D IN SOA       ns1.client.domain. root.client.domain. (
                        2008152607      ; serial
                        3H              ; refresh
                        15M             ; retry
                        1W              ; expiry
                        1D )            ; minimum
@                       IN NS        ns1.client.domain.
@                       IN NS        ns2.client.domain.
241                     IN PTR          test.client.domain.
242                     IN PTR          test2.client.domain.
245                     IN PTR          test5.client.domain.

Đó là vì chúng tôi sử dụng CNAME từ phía nhà cung cấp và để đáp lại yêu cầu về dữ liệu theo địa chỉ IP, chúng tôi nhận được hai bản ghi chứ không phải một bản ghi.

#>  host 7.8.9.245 
245.9.8.7.in-addr.arpa is an alias for 245.255-240.9.8.7.in-addr.arpa.
245.255-240.9.8.7.in-addr.arpa domain name pointer test5.client.domain.

Và đừng quên cấu hình ACL chính xác. Bởi vì sẽ chẳng có ý nghĩa gì khi chiếm vùng PTR cho riêng mình và không phản hồi với bất kỳ ai từ bên ngoài =).

Nguồn: www.habr.com

Thêm một lời nhận xét