Skip to main content
Version: 1.1.0

DNS Lookup

Enrich Cribl Compatible

Synopsis​

Performs DNS lookups on domains or IP addresses, and caches the results.

Schema​

dns_lookup:
- field: <ident>
- type: <string>
- resource_type: <string>
- target_field: <ident>
- dns_server: <string>
- cache_ttl: <number>
- description: <text>
- if: <script>
- ignore_failure: <boolean>
- ignore_missing: <boolean>
- on_failure: <processor[]>
- on_success: <processor[]>
- tag: <string>

Configuration​

FieldRequiredDefaultDescription
fieldY-Field containing domain/IP to lookup
typeY-Lookup type: forward or reverse
resource_typeNADNS record type for forward lookups: A, AAAA, MX, TXT
target_fieldNfieldField to store lookup results
dns_serverN-Custom DNS server (e.g., "8.8.8.8:53")
cache_ttlN30Cache TTL in minutes
descriptionN-Explanatory note
ifN-Condition to run
ignore_failureNfalseContinue if lookup fails
ignore_missingNfalseContinue if source field doesn't exist
on_failureN-See Handling Failures
on_successN-See Handling Success
tagN-Identifier

Details​

The processor does both forward and reverse lookups, and can handle multiple DNS record types and custom DNS servers. IPv6 addresses are fully supported for both forward and reverse lookups.

note

Private IP addresses typically won't have PTR records.

All results are cached to improve performance.

note

Cache entries expire based on the configured TTL. Large cache sizes can impact memory usage.

Multiple results are returned as arrays. Non-string field values will cause errors. Conditional execution and success/failure handling are also supported.

warning

DNS lookups can introduce latency to event processing.

Examples​

Forward​

Looking up IPv4 addresses for a domain...

{
"domain": "example.com"
}
dns_lookup:
- field: domain
- type: forward
- resource_type: A
- target_field: ip_addresses
- cache_ttl: 30

adds the resolved IPs to the event:

{
"domain": "example.com",
"ip_addresses": ["93.184.216.34"]
}

IPv4 Reverse​

Looking up the hostname for IPv4 address...

{
"ip": "8.8.8.8"
}
dns_lookup:
- field: ip
- type: reverse
- target_field: hostname

adds the resolved hostname to the event:

{
"ip": "8.8.8.8",
"hostname": ["dns.google"]
}

IPv6 Reverse​

Looking up the hostname for IPv6 address...

{
"ip": "2001:4860:4860::8888"
}
dns_lookup:
- field: ip
- type: reverse
- target_field: hostname

resolves the IPv6 address to the hostname:

{
"ip": "2001:4860:4860::8888",
"hostname": ["dns.google"]
}

MX Record​

Looking up mail servers for a domain...

{
"domain": "gmail.com"
}
dns_lookup:
- field: domain
- type: forward
- resource_type: MX
- target_field: mail_servers

adds the MX records to the event:

{
"domain": "gmail.com",
"mail_servers": [
"alt1.gmail-smtp-in.l.google.com 10",
"alt2.gmail-smtp-in.l.google.com 20"
]
}

Custom Server​

Using Cloudflare DNS for lookups...

{
"domain": "example.com"
}
dns_lookup:
- field: domain
- type: forward
- resource_type: A
- dns_server: "1.1.1.1:53"
- target_field: ip_addresses

resolves the specified DNS server:

{
"domain": "example.com",
"ip_addresses": ["93.184.216.34"]
}

Private IPs​

Handling lookup failures for private IPs...

{
"ip": "192.168.1.1"
}
dns_lookup:
- field: ip
- type: reverse
- target_field: hostname
- ignore_failure: true

continues the execution:

{
"ip": "192.168.1.1"
}

Conditionals​

Performing the look up only for debug events...

{
"ip": "8.8.8.8",
"level": "info"
}
dns_lookup:
- field: ip
- type: reverse
- target_field: hostname
- if: "ctx.level == 'debug'"

skips irrelevant information:

{
"ip": "8.8.8.8",
"level": "info"
}