{% extends "base.html" %} {% import "helpers.html" as helper %} {% import "links.html" as links %} {% block title %}dig {{ data.query }}{% endblock %} {% block og_title %}dig {{ data.query }}{% endblock %} {% block h1 %}dig {{ helper::breadcrumb_domain(extra=extra, name=data.query) }}{% endblock %} {% block og_path %}/dig/{{ data.query | urlencode_strict }}{% endblock %} {% block content %} {% if data.result.idn %} {% set idn = data.result.idn %}

Internationalized Domain Names

Because of some limitations the DNS has, Unicode caracters need a special encoding.

{% if idn.original_was == "unicode" %}

Your Unicode query has been encoded as the IDN {{ idn.idn }} to generate the results below.

{% else %}

Your IDN would decode to {{ idn.unicode }}.

{% endif %}
{% endif %} {% set r = data.result.records %}

DNS Records

{% if r.nxdomain %}

Our DNS-Server claims that this domain doesn't exist, you shouldn't see any results below.

{% elif r.timeout %}

There was at least one timeout error while resolving this domain, the results below are incomplete.

{% elif r.other_error %}

An error happened while resolving this name, the results below are incomplete. There was probably some IO issue, the error has been written to the log to help with debugging.

{% endif %} {% if r.dns_error %}

The DNS-Server returned an error code that is not NXDomain, the results are probably incomplete. To help with debugging this has been written to the log.

{% endif %} {% if r.cname %}

This domain has a cname set, this means its contents are full replaced by the linked record.

{{ helper::dig(extra=extra, name=r.cname[0]) }}

Usually you get the A and AAAA records for the linked record to avoid uneccessary requests. If anything else resolves, that is a violation of the DNS specification.

{% if r.cname | length > 1 %}

This domain resolves to multiple CNAMEs, this is not allowed by the DNS specification!

{% endif %} {% endif %} {% if r.aname %}

This domain has one or multiple ANAME (or ALIAS) records set that the DNS server communicates:

{% endif %} {% if r.a %}

A (IPv4) records:

{% else %}

No A (IPv4) Records.

{% endif %} {% if r.aaaa %}

AAAA (IPv6) records:

{% else %}

No AAAA (IPv6) Records.

{% endif %} {% if not data.result.partial_lookup %} {% if r.mx %}

MX (Mail Exchange) records:

{% else %}

No MX (Mail Exchange) records.

{% endif %} {% if r.caa %}

CAA (Certification Authority Authorization) records:

{% else %}

No CAA (Certification Authority Authorization) records.

{% endif %} {% if r.txt %}

TXT records:

{% else %}

No TXT records.

{% endif %} {% if r.srv %}

SRV records:

{% else %}

No SRV records.

SRV or Service records usually live on their own subdomains like {{ helper::dig(extra=extra, name="_xmpp-client._tcp."~data.query) }}. {% endif %} {% else %}{# if data.partial_lookup #}

To save resources the above is only a partial lookup.

Extended DNS Lookup for {{ data.query }}.

{% endif %}

Other Services

{{ links::domain_name_links(name=idn.idn|default(value=data.query))}}

Programatic Lookup

If you want to look up this information in another program the short answer is don't, look up the names using your local DNS!

On most systems on the commandline you have commands like host and dig even when not present you can probably use ping as a workaround as it resolves the name and gives you the IP-Address it is pinging.

Why queryting this service is still useful

This service most probably doesn't share its cache with your local resolver, this way you have a way to see if your DNS-change had the effect it should have.

It may also be useful for debugging other dns problems or to get around a local resolver that is lying to you because your ISP is a something.

{% endblock %}