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