DNS-post med jokertecken
En DNS-post med jokertecken är en post i en DNS-zon som matchar förfrågningar om icke-existerande domännamn. En DNS-post med jokertecken anges genom att använda en *
som etiketten (delen) längst till vänster i ett domännamn, t.ex. *.example.com
. De exakta reglerna för när ett jokertecken kommer att matcha anges i RFC 1034 , men reglerna är varken intuitiva eller tydligt specificerade. Detta har resulterat i inkompatibla implementeringar och oväntade resultat när de används.
Definitioner av DNS-jokertecken
En DNS-post med jokertecken i en zonfil liknar det här exemplet:
*.example.com. 3600 IN MX 10 host1.example.com.
Den här DNS-posten med jokertecken kommer att göra att DNS-sökningar på domännamn som slutar på example.com
som inte finns har syntetiserade MX-poster för dem. Så en sökning efter MX-posten för somerandomname.example.com
skulle returnera en MX-post som pekar på host1.example.com
.
Jokertecken i DNS är mycket mer begränsade än andra jokertecken som används i andra datorsystem. DNS-poster med jokertecken har en enda *
(asterisk) som DNS-etiketten längst till vänster , till exempel *.example.com
. Asterisker på andra platser i domänen fungerar inte som jokertecken, så varken *abc.example.com
eller abc.*.example.com
fungerar som jokertecken-DNS-poster. Dessutom matchas jokertecknet endast när en domän inte existerar, inte bara när det inte finns några matchande poster av den typ som har efterfrågats. Även definitionen av "finns inte" som definieras i sökalgoritmen i RFC 1034 avsnitt 4.3.3 kan resultera i att jokertecken inte matchar fall som man kan förvänta sig med andra typer av jokertecken.
Den ursprungliga definitionen av hur ett DNS-jokertecken beter sig specificeras i RFC 1034 avsnitt 4.3.2 och 4.3.3, men endast indirekt genom vissa steg i en sökalgoritm och som ett resultat är reglerna varken intuitiva eller tydligt specificerade. Som ett resultat, 20 år senare, skrevs RFC 4592 , "The Role of Wildcards in the Domain Name System" för att hjälpa till att förtydliga reglerna.
För att citera RFC 1912 , "Ett vanligt misstag är att tro att ett jokertecken MX för en zon kommer att gälla för alla värdar i zonen. Ett jokertecken MX kommer endast att gälla för namn i zonen som inte är listade i DNS alls." Det vill säga, om det finns ett jokertecken MX för *.example.com
och en A-post (men ingen MX-post) för www.example.com
, det korrekta svaret (enligt RFC 1034 ) på en MX-begäran för www.example .com
är "inga fel, men inga data"; detta står i motsats till det möjligen förväntade svaret från MX-posten som är kopplad till *.example.com
.
Exempel på användningar
Följande exempel är från RFC 4592 avsnitt 2.2.1 och är användbart för att förtydliga hur jokertecken fungerar.
Säg att det finns en DNS-zon med följande resursposter:
$ORIGIN exempel. exempel. 3600 I SOA exempel. 3600 NS ns.example.com. exempel. 3600 NS ns.example.net. *.exempel. 3600 TXT "det här är ett jokertecken" *.exempel. 3600 MX 10 host1.example. sub.*.exempel. 3600 TXT "det här är inte ett jokertecken" host1.example. 3600 A 192.0.2.1 _ssh._tcp.host1.example. 3600 SRV _ssh._tcp.host2.example. 3600 SRV subdel.example. 3600 NS ns.example.com. subdel.example. 3600 NS ns.example.net.
En titt på domännamnen i en trädstruktur är till hjälp:
exempel ├─ * │ └─ sub ├─ host1 │ └─ _tcp │ └─ _ssh ├─ host2 │ └─ _tcp │ ─sh ─
Följande svar skulle syntetiseras från ett av jokertecken i zonen:
Frågad domän | Frågade RR-typ | Resultat |
---|---|---|
värd3.exempel.
|
MX | Svaret blir ett "host3.example. IN MX ..." |
värd3.exempel.
|
A | Svaret kommer att återspegla "inget fel, men inga data" eftersom det inte finns någon "A" resurspost (RR) inställd på *.example . |
foo.bar.example.
|
Text | Svaret blir "foo.bar.example. IN TXT ..." eftersom bar.example. finns inte, men jokertecknet gör det. |
Följande svar skulle inte syntetiseras från något av jokertecken i zonen:
Frågad domän | Frågade RR-typ | Resultat |
---|---|---|
värd1.exempel.
|
MX | Inget jokertecken matchar eftersom host1.example. existerar. Istället får du svaret "inget fel, men inga data". MX-posten med jokertecken tillhandahåller inte MX-poster för domäner som annars existerar. |
sub.*.exempel.
|
MX | Inget jokertecken matchar eftersom sub.*.example. existerar. Domänen sub.*.example. kommer aldrig att fungera som ett jokertecken, även om det har en asterisk. |
_telnet._tcp.host1.example.
|
SRV | Inget jokertecken matchar eftersom _tcp.host1.example. finns (utan data). |
host.subdel.example.
|
A | Inget jokertecken matchar eftersom subdel.example. existerar och är en zonskärning, sätter host.subdel.example. till en annan DNS-zon . Även om host.subdel.example. inte finns i den andra zonen, kommer ett jokertecken inte att användas från den överordnade zonen. |
spöke.*.exempel.
|
MX | Inget jokertecken matchar eftersom *.example. finns, det är en jokerteckendomän, men den finns fortfarande. |
Det sista exemplet belyser en vanlig missuppfattning om jokertecken. Ett jokertecken "blockerar sig själv" i den meningen att ett jokertecken inte matchar sina egna underdomäner. Det vill säga *.exempel.
matchar inte alla namn i exemplet.
zon; den matchar inte namnen nedan *.example.
. För att täcka namn under *.exempel.
, behövs ett annat jokerteckendomännamn— *.*.exempel.
—som täcker alla utom sina egna underdomäner.
I praktiken
För att citera från RFC 4592 avviker många DNS-implementationer på olika sätt från den ursprungliga definitionen av jokertecken. Några av varianterna inkluderar:
- Med djbdns , förutom att kontrollera efter jokertecken på den aktuella nivån, söker servern efter jokertecken i alla omslutande superdomäner, ända upp till roten. [ citat behövs ] I exemplen ovan skulle frågan för
_telnet._tcp.host1.example
för en MX-post matcha ett jokertecken trots att domänen_tcp.host1.example
existerade. -
Microsofts DNS-server (om konfigurerad för att göra det) och MaraDNS (som standard) har jokertecken som också matchar alla förfrågningar om tomma resurspostuppsättningar; dvs domännamn för vilka det inte finns några poster av önskad typ . I exemplen som listas ovan skulle frågan för
sub.*.example
för en MX-post matcha*.example
, trots attsub.*.example
explicit existerar med endast en TXT-post .
Registranter
Jokertecken-domäner används i stor utsträckning av bloggwebbplatser som tillåter användare att skapa underdomäner på begäran; t.ex. webbplatser som WordPress eller Blogspot . En annan populär användning är gratis dynamiska DNS- webbplatser som tillåter användare att skapa ett DNS-namn som ändras för att matcha deras värd-IP eftersom IP-adressen ändras med jämna mellanrum av deras ISP:s DHCP-server.
Nya toppdomäner
Nya gTLD:er är förbjudna att publicera jokertecken (eller använda motsvarande namnservermekanismer) enligt specifikation 6 i ICANN New gTLD Base Registry Agreement. ICANN:s Name Collision Occurrence Management Framework (PDF ) kräver dock uttryckligen att nya gTLD:er publicerar (under minst 90 dagar) speciella MX-, SRV-, TXT- och 127.0.53.53 A-jokertecken som varnar för potentiella namnkollisioner på grund av användning av släkting. domännamn med domänsökvägar .
Register/ISP:er
Flera domännamnsregistratorer har vid olika tillfällen distribuerat jokerteckenposter för toppdomänerna för att tillhandahålla en plattform för reklam, framför allt VeriSign för .com och .net med dess (nu borttagna) Site Finder- system. .museum TLD hade också en jokerteckenpost som nu har tagits bort . Från och med mars 2018 är toppdomäner som använder ett jokertecken A-post (annat än 127.0.53.53) .fm , .la , .ph , .pw , .vg och .ws . De internationaliserade toppdomänen .中国 (.xn--fiqs8s eller .xn--fiqz9s för "Kina") och .გე (.xn--nod för de georgiska bokstäverna för den georgiska landskoden "GE") har också A-poster med jokertecken. Jokertecknet *.中国
löser sig till ibaidu.com
(flaggat av Chrome som osäkert), och jokertecknet *.გე
löser sig till en webbplats för .ge TLD.
Det har också blivit vanligt att internetleverantörer syntetiserar adressposter för stavfel, för samma person, en praxis som kallas "catchall" typosquatting , men dessa är inte riktiga jokertecken, utan snarare modifierade cachingnamnservrar.
Ignorera jokertecken från andra
Internet Software Consortium producerade en version av BIND DNS-programvaran som kan konfigureras för att filtrera bort DNS-poster med jokertecken från specifika domäner. Olika utvecklare har tagit fram programvarukorrigeringar för BIND och för djbdns .
Andra DNS-serverprogram har följt efter, vilket ger möjlighet att ignorera DNS-poster med jokertecken som konfigurerats.