Najlepszą metodą jest strefa polityki odpowiedzi w Powiązaniu 9.8.1 lub nowszym. Pozwala zastąpić pojedyncze rekordy w dowolnych strefach (i nie ma potrzeby tworzenia do tego całej subdomeny, tylko pojedynczy rekord, który chcesz zmienić), pozwala zastąpić CNAME itp. Inne rozwiązania, takie jak Bez ograniczeń, nie mogą zastąpić CNAME .
https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html
EDYCJA: Zróbmy to odpowiednio. Udokumentuję to, co zrobiłem na podstawie samouczka połączonego powyżej.
Mój system operacyjny to Raspbian 4.4 dla Raspberry Pi, ale technika ta powinna działać bez żadnych zmian w Debianie i Ubuntu lub z minimalnymi zmianami na innych platformach.
Przejdź do miejsca, w którym przechowywane są pliki konfiguracyjne Bind w systemie - tutaj /etc/bind
. Utwórz tam plik db.rpz
o następującej treści:
$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.
Co to robi?
- zastępuje adres IP
www.some-website.com
fałszywym adresem 127.0.0.1
, skutecznie wysyłając cały ruch dla tej witryny na adres pętli zwrotnej
- wysyła ruch
www.other-website.com
do innej witryny o nazwiefake-hostname.com
Wszystko, co może znaleźć się w pliku strefy Bind, możesz użyć tutaj.
Aby aktywować te zmiany, musisz wykonać jeszcze kilka czynności:
Edytuj named.conf.local
i dodaj tę sekcję:
zone "rpz" {
type master;
file "/etc/bind/db.rpz";
};
Powyższy samouczek mówi o dodawaniu kolejnych elementów, zone "rpz" { }
ale nie jest to konieczne w prostych konfiguracjach - to, co pokazałem tutaj, jest minimum, aby działało na lokalnym tłumaczu.
Edytuj named.conf.options
i gdzieś w options { }
sekcji dodaj response-policy
opcję:
options {
// bunch
// of
// stuff
// please
// ignore
response-policy { zone "rpz"; };
}
Teraz uruchom ponownie Powiązanie:
service bind9 restart
Otóż to. Serwer nazw powinien teraz zacząć zastępować te rekordy.
Jeśli chcesz wprowadzić zmiany, po prostu edytuj db.rpz
, a następnie ponownie uruchom Powiązanie.
Bonus: jeśli chcesz zalogować zapytania DNS do syslog, abyś mógł obserwować przebieg postępowania, edytować named.conf.local
i upewnić się, że jest logging
sekcja zawierająca te instrukcje:
logging {
// stuff
// already
// there
channel my_syslog {
syslog daemon;
severity info;
};
category queries { my_syslog; };
};
Uruchom ponownie Bind ponownie i to wszystko.
Przetestuj na maszynie z uruchomionym programem Bind:
dig @127.0.0.1 www.other-website.com. any
Jeśli uruchomisz kopanie na innym komputerze, po prostu użyj @ the-ip-address-of-Bind-server zamiast @ 127.0.0.1
Z powodzeniem zastosowałem tę technikę, aby zastąpić CNAME dla witryny, nad którą pracowałem, wysyłając ją do nowego modułu równoważenia obciążenia AWS, który właśnie testowałem. Do uruchomienia Binda wykorzystano Raspberry Pi, a RPi skonfigurowano również do działania jako router Wi-Fi - więc podłączając urządzenia do SSID działającego na RPi, otrzymałem przesłonięcia DNS potrzebne do testowania.