SlideShare a Scribd company logo
1 of 40
Download to read offline
©!Men!&!Mice!!http://menandmice.com!

©!ISC!http://www.isc.org
DNS!wildcards
1
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
!
!
!
Demo!time!
2
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
the!DNS!protocol!allows!the!definition!on!“wildcard”!DNS!
records!to!synthesise!DNS!answers!from!authoritative!
servers!
DNS!wildcards!are!domain!names!(owner!names)!with!the!
leftmost!label!being!a!single!asterisk!“*”!
there!are!no!other!wildcard!characters!in!DNS!other!than!“*”!
DNS!wildcards!have!their!own!rules!that!are!different!
from!other!systems!with!wildcards!(regular!expressions,!
Unix!shell!filename!globbing,!DOS/Windows!filename!
wildcards!...)
3
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
DNS!wildcards!have!been!originally!defined!in!the!
“original”!DNS!RFC!1034,!and!have!been!updated!in!
RFC!2672!and!RFC!4592!
RFC!4592!“The!Role!of!Wildcards!in!the!Domain!Name!
System”!is!a!must!read!to!understand!all!nuances!of!DNS!
wildcards
4
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
DNS!wildcard!examples!(from!different!zones):



*.example.com. 3600 IN A 192.0.2.80

*.firma.example.com. 600 IN MX 10 mail.example.net.

*.example. 86400 IN TXT “a wildcard”!
not!wildcard!records!(just!“normal”!domain!names):



*test.example.de. 400 IN A 192.0.2.11

test.*.example.com. 600 IN TXT “not a wildcard”

**.example.com. 600 IN TXT “alsonot a wildcard”



5
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



6
©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
7
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
8
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host3.example. ? IN MX ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
8
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host3.example. ? IN MX ?
Answer:!host3.example. 3600 IN MX 10 host1.example.
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
9
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host3.example. ? IN A ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
9
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host3.example. ? IN A ?
Answer:!NOERROR / NODATA (Answer = 0)
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
10
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!foo.bar.example. ? IN TXT ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
10
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!foo.bar.example. ? IN TXT ?
Answer:!foo.bar.example. 3600 IN TXT “this is a wildcard”
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
11
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host1.example. ? IN MX ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
11
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host1.example. ? IN MX ?
Answer:!NOERROR / NODATA (Answer = 0)
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
12
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!sub.*.example. ? IN MX ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
12
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!sub.*.example. ? IN MX ?
Answer:!NOERROR / NODATA (Answer = 0)
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
13
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!_telnet._tcp.host1.example. ? IN SRV ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
13
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!_telnet._tcp.host1.example. ? IN SRV ?
Answer:!NOERROR / NODATA (Answer = 0)
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
14
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host1.example. ? IN A ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
14
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host1.example. ? IN A ?
Answer:!host1.example. 3600 IN A 192.0.2.1
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
15
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host.subdel.example. ? IN A ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
15
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!host.subdel.example. ? IN A ?
Answer:!referral to subdel.example
subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
16
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!ghost.*.example. ? IN MX ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
16
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!ghost.*.example. ? IN MX ?
Answer:!NOERROR / NODATA (Answer = 0)
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
17
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!*.example. ? IN TXT ?
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
DNS!wildcards
17
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Query:!*.example. ? IN TXT ?
Answer:!*.example. 3600 TXT "this is a wildcard"

Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



©!Men!&!Mice!!http://menandmice.com!
Empty!non!terminal
“empty non-terminal”:

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



18
©!Men!&!Mice!!http://menandmice.com!
Empty!non!terminal
“empty non-terminal”:

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



18
©!Men!&!Mice!!http://menandmice.com!
Empty!non!terminal
“empty non-terminal”:

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



18
©!Men!&!Mice!!http://menandmice.com!
Empty!non!terminal
“empty non-terminal”:

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



18
©!Men!&!Mice!!http://menandmice.com!
Empty!non!terminal
19
“.”
“example.”
“*”
“sub”
“host1”
“_tcp”
“_ssh”
“host2”
“_tcp”
“_ssh”
“subdel”
Example!zone!with!wildcards!(from!RFC!4592):

$ORIGIN example.

example. 3600 IN SOA <SOA RDATA>

example. 3600 NS ns.example.com.

example. 3600 NS ns.example.net.

*.example. 3600 TXT "this is a wildcard"

*.example. 3600 MX 10 host1.example.

sub.*.example. 3600 TXT "this is not a wildcard"

host1.example. 3600 A 192.0.2.1

_ssh._tcp.host1.example. 3600 SRV <SRV RDATA>

_ssh._tcp.host2.example. 3600 SRV <SRV RDATA>

subdel.example. 3600 NS ns.example.com.

subdel.example. 3600 NS ns.example.net.



empty!non!terminalempty!non!terminalempty!non!terminal!
nodes
©!Men!&!Mice!!http://menandmice.com!
The!closest!encloser!is!the!node!in!the!zone's!tree!of!
existing!domain!names!that!has!the!most!labels!
matching!the!query!name!(consecutively,!counting!from!
the!root!label!downward).!!Each!match!is!a!"label!match"!
and!the!order!of!the!labels!is!the!same.!
The!closest!encloser!is,!by!definition,!an!existing!name!in!
the!zone.!The!closest!encloser!might!be!an!empty!non-
terminal!or!even!be!a!wildcard!domain!name!itself.!!In!
no!circumstances!is!the!closest!encloser!to!be!used!to!
synthesise!records!for!the!current!query.
20
Closest!Encloser!and!the!Source!of!
Synthesis!(1/2)
©!Men!&!Mice!!http://menandmice.com!
Closest!Encloser!and!the!Source!of!
Synthesis!(2/2)
The!source!of!synthesis!is!defined!in!the!context!of!a!query!
process!as!that!wildcard!domain!name!immediately!
descending!from!the!closest!encloser,!provided!that!this!
wildcard!domain!name!exists.!"Immediately!descending"!
means!that!the!source!of!synthesis!has!a!name!of!the!form:



*.<closest encloser>.!
A!source!of!synthesis!does!not!guarantee!having!a!RRSet!to!
use!for!synthesis.!!The!source!of!synthesis!could!be!an!
empty!non-terminal.
21
©!Men!&!Mice!!http://menandmice.com!22
Domain Name in Query closest encloser source of synthesis
host3.example. example. *.example.
_telnet._tcp.host1.example. _tcp.host1.example. no source
_dns._udp._host2.example. host2.example. no source
_telnet._tcp.host3.example. example. *.example.
_chat._udp.host3.example. example. *.example.
foobar.*.example. *.example. no source
Closest!Encloser!and!the!Source!of!
Synthesis
©!Men!&!Mice!!http://menandmice.com!
other!wildcard!rules!(1)
•DNSSEC!does!not!allow!wildcard!NS!records



; this is not legal DNS data inside a DNSSEC

; signed zone



*.example.com. 3600 IN NS ns1.example.org.

*.example.com. 3600 IN NS ns2.example.org.
23
©!Men!&!Mice!!http://menandmice.com!
other!wildcard!rules!(2)
•in!SRV!record,!the!full!name!is!the!owner-name.!
There!cannot!be!a!wildcard!on!the!domain!part!of!an!
SRV!record!(same!for!TLSA,!DKIM!...)



; this is not a wildcard for the SRV record

_ldap._tcp.*.example.com. IN SRV 10 20 389 ldap-srv.example.com.
24
©!Men!&!Mice!!http://menandmice.com!
other!wildcard!rules!(3)
•Wildcard!DS!(DNSSEC!delegation!signer)!records!
are!ignored!
•Wildcard!DNAME!records!are!not!allowed!

(represents!a!threat!to!the!coherency!of!the!DNS)!
•If!a!source!of!synthesis!is!an!empty!non-terminal,!
the!answer!will!be!NOERROR!/!NODATA!(Answer!=!
0)
25
©!Men!&!Mice!!http://menandmice.com!
TL;DR
26
Be!careful!with!DNS!wildcard!records!
©!Men!&!Mice!!http://menandmice.com!
Thank!you!
!
Questions?!!Comments?
27

More Related Content

Similar to Dns wildcards demystified

RIPE 70 Report Webinar
RIPE 70 Report WebinarRIPE 70 Report Webinar
RIPE 70 Report WebinarMen and Mice
 
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей Савченко
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей СавченкоWebCamp: Developer Day: The Big, the Small and the Redis - Андрей Савченко
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей СавченкоGeeksLab Odessa
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...MongoDB
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...Nicolas Bettenburg
 
20th.陈晓鸣 百度海量日志分析架构及处理经验分享
20th.陈晓鸣 百度海量日志分析架构及处理经验分享20th.陈晓鸣 百度海量日志分析架构及处理经验分享
20th.陈晓鸣 百度海量日志分析架构及处理经验分享elevenma
 
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...Puppet
 

Similar to Dns wildcards demystified (9)

PowerDNS Webinar
PowerDNS Webinar PowerDNS Webinar
PowerDNS Webinar
 
RIPE 70 Report Webinar
RIPE 70 Report WebinarRIPE 70 Report Webinar
RIPE 70 Report Webinar
 
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей Савченко
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей СавченкоWebCamp: Developer Day: The Big, the Small and the Redis - Андрей Савченко
WebCamp: Developer Day: The Big, the Small and the Redis - Андрей Савченко
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
 
Tsig 17022011
Tsig 17022011Tsig 17022011
Tsig 17022011
 
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
An Empirical Study on the Risks of Using Off-the-Shelf Techniques for Process...
 
20th.陈晓鸣 百度海量日志分析架构及处理经验分享
20th.陈晓鸣 百度海量日志分析架构及处理经验分享20th.陈晓鸣 百度海量日志分析架构及处理经验分享
20th.陈晓鸣 百度海量日志分析架构及处理经验分享
 
ION San Diego - ARIN Support for DNSSEC and RPKI
ION San Diego - ARIN Support for DNSSEC and RPKIION San Diego - ARIN Support for DNSSEC and RPKI
ION San Diego - ARIN Support for DNSSEC and RPKI
 
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...
PuppetConf 2017: What's in a Name? Scaling ENC with DNS- Cameron Nicholson, A...
 

More from Men and Mice

Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesCisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesMen and Mice
 
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOS
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOSPart 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOS
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOSMen and Mice
 
Part 2 - Local Name Resolution in Windows Networks
Part 2 - Local Name Resolution in Windows NetworksPart 2 - Local Name Resolution in Windows Networks
Part 2 - Local Name Resolution in Windows NetworksMen and Mice
 
Namespaces for Local Networks
Namespaces for Local NetworksNamespaces for Local Networks
Namespaces for Local NetworksMen and Mice
 
How to send DNS over anything encrypted
How to send DNS over anything encryptedHow to send DNS over anything encrypted
How to send DNS over anything encryptedMen and Mice
 
The DNSSEC KSK of the root rolls
The DNSSEC KSK of the root rollsThe DNSSEC KSK of the root rolls
The DNSSEC KSK of the root rollsMen and Mice
 
The CAA-Record for increased encryption security
The CAA-Record for increased encryption securityThe CAA-Record for increased encryption security
The CAA-Record for increased encryption securityMen and Mice
 
SMTP STS (Strict Transport Security) vs. SMTP with DANE
SMTP STS (Strict Transport Security) vs. SMTP with DANESMTP STS (Strict Transport Security) vs. SMTP with DANE
SMTP STS (Strict Transport Security) vs. SMTP with DANEMen and Mice
 
DNSSEC signing Tutorial
DNSSEC signing Tutorial DNSSEC signing Tutorial
DNSSEC signing Tutorial Men and Mice
 
BIND 9 logging best practices
BIND 9 logging best practicesBIND 9 logging best practices
BIND 9 logging best practicesMen and Mice
 
DNS High-Availability Tools - Open-Source Load Balancing Solutions
DNS High-Availability Tools - Open-Source Load Balancing SolutionsDNS High-Availability Tools - Open-Source Load Balancing Solutions
DNS High-Availability Tools - Open-Source Load Balancing SolutionsMen and Mice
 
Fighting Abuse with DNS
Fighting Abuse with DNSFighting Abuse with DNS
Fighting Abuse with DNSMen and Mice
 
What is new in BIND 9.11?
What is new in BIND 9.11?What is new in BIND 9.11?
What is new in BIND 9.11?Men and Mice
 
Yeti DNS - Experimenting at the root
Yeti DNS - Experimenting at the rootYeti DNS - Experimenting at the root
Yeti DNS - Experimenting at the rootMen and Mice
 
Windows Server 2016 Webinar
Windows Server 2016 WebinarWindows Server 2016 Webinar
Windows Server 2016 WebinarMen and Mice
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCMen and Mice
 
RIPE 71 and IETF 94 reports webinar
RIPE 71 and IETF 94 reports webinarRIPE 71 and IETF 94 reports webinar
RIPE 71 and IETF 94 reports webinarMen and Mice
 
Keeping DNS server up-and-running with “runit
Keeping DNS server up-and-running with “runitKeeping DNS server up-and-running with “runit
Keeping DNS server up-and-running with “runitMen and Mice
 
PowerDNS Webinar - Part 2
PowerDNS Webinar - Part 2PowerDNS Webinar - Part 2
PowerDNS Webinar - Part 2Men and Mice
 

More from Men and Mice (20)

Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network StrategiesCisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
Cisco Live 2019: New Best Practices for Hybrid and Multicloud Network Strategies
 
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOS
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOSPart 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOS
Part 3 - Local Name Resolution in Linux, FreeBSD and macOS/iOS
 
Part 2 - Local Name Resolution in Windows Networks
Part 2 - Local Name Resolution in Windows NetworksPart 2 - Local Name Resolution in Windows Networks
Part 2 - Local Name Resolution in Windows Networks
 
Namespaces for Local Networks
Namespaces for Local NetworksNamespaces for Local Networks
Namespaces for Local Networks
 
How to send DNS over anything encrypted
How to send DNS over anything encryptedHow to send DNS over anything encrypted
How to send DNS over anything encrypted
 
The DNSSEC KSK of the root rolls
The DNSSEC KSK of the root rollsThe DNSSEC KSK of the root rolls
The DNSSEC KSK of the root rolls
 
The CAA-Record for increased encryption security
The CAA-Record for increased encryption securityThe CAA-Record for increased encryption security
The CAA-Record for increased encryption security
 
SMTP STS (Strict Transport Security) vs. SMTP with DANE
SMTP STS (Strict Transport Security) vs. SMTP with DANESMTP STS (Strict Transport Security) vs. SMTP with DANE
SMTP STS (Strict Transport Security) vs. SMTP with DANE
 
DNSSEC signing Tutorial
DNSSEC signing Tutorial DNSSEC signing Tutorial
DNSSEC signing Tutorial
 
BIND 9 logging best practices
BIND 9 logging best practicesBIND 9 logging best practices
BIND 9 logging best practices
 
DNS High-Availability Tools - Open-Source Load Balancing Solutions
DNS High-Availability Tools - Open-Source Load Balancing SolutionsDNS High-Availability Tools - Open-Source Load Balancing Solutions
DNS High-Availability Tools - Open-Source Load Balancing Solutions
 
Fighting Abuse with DNS
Fighting Abuse with DNSFighting Abuse with DNS
Fighting Abuse with DNS
 
What is new in BIND 9.11?
What is new in BIND 9.11?What is new in BIND 9.11?
What is new in BIND 9.11?
 
Yeti DNS - Experimenting at the root
Yeti DNS - Experimenting at the rootYeti DNS - Experimenting at the root
Yeti DNS - Experimenting at the root
 
Windows Server 2016 Webinar
Windows Server 2016 WebinarWindows Server 2016 Webinar
Windows Server 2016 Webinar
 
Kea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISCKea DHCP – the new open source DHCP server from ISC
Kea DHCP – the new open source DHCP server from ISC
 
DNSTap Webinar
DNSTap WebinarDNSTap Webinar
DNSTap Webinar
 
RIPE 71 and IETF 94 reports webinar
RIPE 71 and IETF 94 reports webinarRIPE 71 and IETF 94 reports webinar
RIPE 71 and IETF 94 reports webinar
 
Keeping DNS server up-and-running with “runit
Keeping DNS server up-and-running with “runitKeeping DNS server up-and-running with “runit
Keeping DNS server up-and-running with “runit
 
PowerDNS Webinar - Part 2
PowerDNS Webinar - Part 2PowerDNS Webinar - Part 2
PowerDNS Webinar - Part 2
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Dns wildcards demystified