Rekord DNS z symbolem wieloznacznym
Rekord DNS z symbolem wieloznacznym to rekord w strefie DNS , który będzie odpowiadał żądaniom dotyczącym nieistniejących nazw domen. Rekord DNS z symbolem wieloznacznym jest określany przez użycie *
jako skrajnej lewej etykiety (części) nazwy domeny, np. *.example.com
. Dokładne zasady określające, kiedy symbol wieloznaczny będzie pasował, są określone w RFC 1034 , ale zasady nie są ani intuicyjne, ani jasno określone. Spowodowało to niekompatybilne implementacje i nieoczekiwane wyniki, gdy są używane.
Definicje symboli wieloznacznych DNS
Rekord DNS z symbolem wieloznacznym w pliku strefy wygląda podobnie do tego przykładu:
*.przykład.com. 3600 IN MX 10 host1.example.com.
Ten wieloznaczny rekord DNS spowoduje wyszukiwanie nazw domen kończących się na example.com
, które nie istnieją, w celu zsyntetyzowania dla nich rekordów MX. Tak więc wyszukiwanie rekordu MX dla somerandomname.example.com
zwróci rekord MX wskazujący na host1.example.com
.
Symbole wieloznaczne w DNS są znacznie bardziej ograniczone niż inne symbole wieloznaczne używane w innych systemach komputerowych. Rekordy DNS z symbolami wieloznacznymi mają pojedynczą *
(gwiazdkę) jako skrajną lewą etykietę DNS , na przykład *.example.com
. Gwiazdki w innych miejscach domeny nie będą działać jako symbole wieloznaczne, więc ani *abc.example.com
, ani abc.*.example.com
działają jako rekordy DNS z symbolami wieloznacznymi. Ponadto symbol wieloznaczny jest dopasowywany tylko wtedy, gdy domena nie istnieje, a nie tylko wtedy, gdy nie ma pasujących rekordów typu, o który pytano. Nawet definicja „nie istnieje” zgodnie z definicją w algorytmie wyszukiwania RFC 1034 sekcja 4.3.3 może spowodować, że symbol wieloznaczny nie będzie pasował do przypadków, których można by się spodziewać po innych typach symboli wieloznacznych.
Oryginalna definicja zachowania symboli wieloznacznych DNS jest określona w RFC 1034 , sekcje 4.3.2 i 4.3.3, ale tylko pośrednio przez pewne kroki w algorytmie wyszukiwania, w wyniku czego reguły nie są ani intuicyjne, ani jasno określone. W rezultacie 20 lat później napisano RFC 4592 „Rola symboli wieloznacznych w systemie nazw domen”, aby pomóc wyjaśnić zasady.
Cytując RFC 1912 : „Częstym błędem jest myślenie, że wieloznaczny MX dla strefy będzie miał zastosowanie do wszystkich hostów w strefie. Wieloznaczny MX będzie miał zastosowanie tylko do nazw w strefie, które nie są w ogóle wymienione w DNS”. To znaczy, jeśli istnieje symbol wieloznaczny MX dla *.example.com
i rekord A (ale bez rekordu MX) dla www.example.com
, poprawna odpowiedź (zgodnie z RFC 1034 ) na żądanie MX dla www.example .com
to „brak błędu, ale brak danych”; jest to w przeciwieństwie do prawdopodobnie oczekiwanej odpowiedzi rekordu MX dołączonego do *.example.com
.
Przykładowe zastosowania
Poniższy przykład pochodzi z dokumentu RFC 4592, sekcja 2.2.1 i jest przydatny do wyjaśnienia, jak działają symbole wieloznaczne.
Załóżmy, że istnieje strefa DNS z następującymi rekordami zasobów:
Przykład $ORIGIN. przykład. 3600 W SOA przykład. 3600 NS ns.example.com. przykład. 3600 NS ns.example.net. *.przykład. 3600 TXT „to jest symbol wieloznaczny” *.example. 3600 MX 10 host1.przykład. pod.*.przykład. 3600 TXT „to nie jest symbol wieloznaczny” host1.example. 3600 A 192.0.2.1 _ssh._tcp.host1.przyklad. 3600 SRV _ssh._tcp.host2.przykład. 3600 SRV subdel.example. 3600 NS ns.example.com. subdel.example. 3600 NS ns.example.net.
Pomocne jest spojrzenie na nazwy domen w strukturze drzewa:
przykład ├─ * │ └─ sub ├─ host1 │ └─ _tcp │ └─ _ssh ├─ host2 │ └─ _tcp │ └─ _ssh └─ subdel
Następujące odpowiedzi zostałyby zsyntetyzowane z jednego z symboli wieloznacznych w strefie:
Zapytana domena | Zapytany typ RR | Wyniki |
---|---|---|
host3.przyklad.
|
MX | Odpowiedzią będzie „host3.example. IN MX…” |
host3.przyklad.
|
A | Odpowiedź będzie odzwierciedlać „brak błędu, ale brak danych”, ponieważ nie ma rekordu zasobu „A” (RR) ustawionego na *.example . |
foo.bar.example.
|
tekst | Odpowiedź będzie brzmiała „foo.bar.example. IN TXT…”, ponieważ bar.example. nie istnieje, ale symbol wieloznaczny tak. |
Następujące odpowiedzi nie zostałyby zsyntetyzowane z żadnego z symboli wieloznacznych w strefie:
Zapytana domena | Zapytany typ RR | Wyniki |
---|---|---|
host1.przyklad.
|
MX | Żadne symbole wieloznaczne nie będą pasować, ponieważ host1.example. istnieje. Zamiast tego otrzymasz odpowiedź „brak błędu, ale brak danych”. Rekord MX z symbolem wieloznacznym nie udostępnia rekordów MX dla domen, które w inny sposób istnieją. |
pod.*.przykład.
|
MX | Żaden symbol wieloznaczny nie będzie pasował, ponieważ sub.*.example. istnieje. Domena sub.*.example. nigdy nie będzie działać jako symbol wieloznaczny, nawet jeśli zawiera gwiazdkę. |
_telnet._tcp.host1.przyklad.
|
SRV | Żadne symbole wieloznaczne nie będą pasować, ponieważ _tcp.host1.example. istnieje (bez danych). |
host.subdel.example.
|
A | Żadne symbole wieloznaczne nie będą pasować, ponieważ subdel.example. istnieje i jest strefą cięcia, umieszczając host.subdel.example. do innej strefy DNS . Nawet jeśli host.subdel.example. nie istnieje w innej strefie, symbol wieloznaczny ze strefy nadrzędnej nie zostanie użyty. |
duch.*.przykład.
|
MX | Żadne symbole wieloznaczne nie będą pasować, ponieważ *.example. istnieje, jest to domena wieloznaczna, ale nadal istnieje. |
Ostatni przykład podkreśla jedno powszechne nieporozumienie dotyczące symboli wieloznacznych. Symbol wieloznaczny „blokuje się” w tym sensie, że symbol wieloznaczny nie pasuje do jego własnych subdomen. To znaczy *.przykład.
nie pasuje do wszystkich nazw w przykładzie.
strefa; nie pasuje do poniższych nazw *.example.
. Aby zakryć nazwy w *.example.
, potrzebna jest inna nazwa domeny z symbolem wieloznacznym — *.*.example.
— który obejmuje wszystkie oprócz własnych subdomen.
W praktyce
Cytując dokument RFC 4592 , wiele implementacji DNS różni się na różne sposoby od pierwotnej definicji symboli wieloznacznych. Niektóre z odmian obejmują:
- Z djbdns , oprócz sprawdzania symboli wieloznacznych na bieżącym poziomie, serwer sprawdza je we wszystkich otaczających superdomenach, aż do katalogu głównego. [ potrzebne źródło ] W powyższych przykładach zapytanie o
_telnet._tcp.host1.example
dla rekordu MX pasowałoby do symbolu wieloznacznego, mimo że domena_tcp.host1.example
istnieje. -
Serwer DNS firmy Microsoft (jeśli jest do tego skonfigurowany) i MaraDNS (domyślnie) mają również symbole wieloznaczne pasujące do wszystkich żądań pustych zestawów rekordów zasobów; tj. nazwy domen, dla których nie ma rekordów żądanego typu . W powyższych przykładach zapytanie o
sub.*.example
dla rekordu MX pasowałoby do*.example
, mimo żesub.*.example
jawnie istnieje tylko z rekordem TXT .
rejestrujący
Domeny z symbolami wieloznacznymi są szeroko stosowane w witrynach blogujących, które umożliwiają użytkownikom tworzenie subdomen na żądanie; np. strony takie jak WordPress czy Blogspot . Innym popularnym zastosowaniem są witryny Free Dynamic DNS , które umożliwiają użytkownikom tworzenie nazwy DNS, która zmienia się w celu dopasowania do adresu IP hosta, ponieważ adres IP jest okresowo zmieniany przez serwer DHCP dostawcy usług internetowych.
Nowe domeny TLD
Nowe domeny gTLD nie mogą publikować symboli wieloznacznych (lub używać równoważnych mechanizmów serwera nazw) zgodnie ze specyfikacją 6 umowy ICANN New gTLD Base Registry. Jednak ICANN's Name Collision Occurrence Management Framework (PDF ) wyraźnie wymaga, aby nowe domeny gTLD publikowały (przez co najmniej 90 dni) specjalne MX, SRV, TXT i 127.0.53.53 A rekordowe symbole wieloznaczne, które ostrzegają o potencjalnych kolizjach nazw z powodu użycia względnego nazwy domen ze ścieżkami wyszukiwania domen .
Rejestry/dostawcy usług internetowych
Kilku rejestratorów nazw domen w różnych okresach wdrażało rekordy wieloznaczne dla domen najwyższego poziomu , aby zapewnić platformę reklamową, w szczególności VeriSign dla .com i .net z (obecnie usuniętym) systemem Site Finder . Domena TLD .museum miała również rekord wieloznaczny, który został teraz usunięty. Od marca 2018 roku domeny najwyższego poziomu korzystające z wieloznacznego rekordu A (inne niż 127.0.53.53) to .fm , .la , .ph , .pw , .vg i .ws . Umiędzynarodowione domeny TLD .中国 (.xn--fiqs8s lub .xn--fiqz9s dla „Chiny”) i .გე (.xn--węzeł dla gruzińskich liter dla gruzińskiego kodu kraju „GE”) również mają wieloznaczne rekordy A. Znak *.中国
oznacza ibaidu.com
(oznaczony przez Chrome jako niebezpieczny), a symbol wieloznaczny *.გე
oznacza stronę internetową domeny TLD .ge .
Stało się również powszechne wśród dostawców usług internetowych syntezowanie rekordów adresowych dla literówek dla tej samej osoby, praktyka zwana „catchall” typosquatting , ale nie są to prawdziwe symbole wieloznaczne, ale raczej zmodyfikowane buforujące serwery nazw.
Ignorowanie symboli wieloznacznych od innych
Konsorcjum Internet Software stworzyło wersję oprogramowania BIND DNS, którą można skonfigurować do odfiltrowywania rekordów DNS z symbolami wieloznacznymi z określonych domen. Różni programiści stworzyli łatki do oprogramowania BIND i djbdns .
Inne programy serwerów DNS poszły w ich ślady, zapewniając możliwość ignorowania rekordów DNS z symbolami wieloznacznymi zgodnie z konfiguracją.