Phương pháp tốt nhất là thông qua vùng chính sách phản hồi trong Bind 9.8.1 hoặc mới hơn. Nó cho phép bạn ghi đè các bản ghi đơn lẻ trong các vùng tùy ý (và không cần tạo toàn bộ tên miền phụ cho điều đó, chỉ bản ghi duy nhất bạn muốn thay đổi), nó cho phép bạn ghi đè CNAME, v.v. .
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
EDIT: Hãy làm điều này đúng cách sau đó. Tôi sẽ ghi lại những gì tôi đã làm dựa trên hướng dẫn được liên kết ở trên.
Hệ điều hành của tôi là Raspbian 4.4 cho Raspberry Pi, nhưng kỹ thuật này sẽ hoạt động mà không có bất kỳ thay đổi nào trên Debian và Ubuntu hoặc với các thay đổi tối thiểu trên các nền tảng khác.
Đi đến nơi lưu tập tin cấu hình Bind của bạn trên hệ thống của bạn - đây là tập tin /etc/bind
. Tạo trong đó một tệp được gọi db.rpz
với nội dung sau:
$TTL 60
@ IN SOA localhost. root.localhost. (
2015112501 ; serial
1h ; refresh
30m ; retry
1w ; expiry
30m) ; minimum
IN NS localhost.
localhost A 127.0.0.1
www.some-website.com A 127.0.0.1
www.other-website.com CNAME fake-hostname.com.
Nó làm gì?
- nó ghi đè địa chỉ IP
www.some-website.com
bằng địa chỉ giả 127.0.0.1
, gửi hiệu quả tất cả lưu lượng truy cập cho trang web đó đến địa chỉ loopback
- nó gửi lưu lượng truy cập
www.other-website.com
đến một trang web khác được gọi làfake-hostname.com
Bất cứ điều gì có thể đi trong tệp vùng Bind bạn có thể sử dụng ở đây.
Để kích hoạt những thay đổi này, có một vài bước nữa:
Chỉnh sửa named.conf.local
và thêm phần này:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
Hướng dẫn được liên kết ở trên cho bạn biết thêm nhiều thứ vào zone "rpz" { }
nhưng điều đó không cần thiết trong các thiết lập đơn giản - những gì tôi đã trình bày ở đây là mức tối thiểu để làm cho nó hoạt động trên trình phân giải cục bộ của bạn.
Chỉnh sửa named.conf.options
và một nơi nào đó trong options { }
phần thêm response-policy
tùy chọn:
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Bây giờ khởi động lại Bind:
service bind9 restart
Đó là nó. Máy chủ tên nên bắt đầu ghi đè những hồ sơ đó ngay bây giờ.
Nếu bạn cần thay đổi, chỉ cần chỉnh sửa db.rpz
, sau đó khởi động lại Bind một lần nữa.
Phần thưởng: nếu bạn muốn ghi nhật ký truy vấn DNS vào syslog, vì vậy bạn có thể theo dõi quá trình tố tụng, chỉnh sửa named.conf.local
và đảm bảo có một logging
phần bao gồm các tuyên bố sau:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Khởi động lại Bind một lần nữa và đó là nó.
Kiểm tra nó trên máy chạy Bind:
dig @127.0.0.1 www.other-website.com. any
Nếu bạn chạy đào trên một máy khác, chỉ cần sử dụng @ the-ip-address-of-Bind-server thay vì @ 127.0.0.1
Tôi đã sử dụng kỹ thuật này rất thành công để ghi đè CNAME cho trang web tôi đang làm việc, gửi nó đến bộ cân bằng tải AWS mới mà tôi mới thử nghiệm. Một Raspberry Pi đã được sử dụng để chạy Bind và RPi cũng được cấu hình để hoạt động như một bộ định tuyến WiFi - vì vậy bằng cách kết nối các thiết bị với SSID chạy trên RPi, tôi sẽ nhận được DNS ghi đè tôi cần để kiểm tra.