[[DNS-DNS]]
DNS
~~~

*Available as of Camel 2.7*

This is an additional component for Camel to run DNS queries, using
DNSJava. The component is a thin layer on top of
http://www.xbill.org/dnsjava/[DNSJava]. +
 The component offers the following operations:

* ip, to resolve a domain by its ip
* lookup, to lookup information about the domain
* dig, to run DNS queries

INFO:*Requires SUN JVM*
The DNSJava library requires running on the SUN JVM. +
 If you use Apache ServiceMix or Apache Karaf, you'll need to adjust the
`etc/jre.properties` file, to add `sun.net.spi.nameservice` to the list
of Java platform packages exported. The server will need restarting
before this change takes effect.

Maven users will need to add the following dependency to their `pom.xml`
for this component:

[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-dns</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------

[[DNS-URIformat]]
URI format
^^^^^^^^^^

The URI scheme for a DNS component is as follows

[source,java]
-------------------------
dns://operation[?options]
-------------------------

This component only supports producers.

[[DNS-Options]]
Options
^^^^^^^


// component options: START
The DNS component has no options.
// component options: END



// endpoint options: START
The DNS component supports 2 endpoint options which are listed below:

{% raw %}
[width="100%",cols="2,1,1m,1m,5",options="header"]
|=======================================================================
| Name | Group | Default | Java Type | Description
| dnsType | producer |  | DnsType | *Required* The type of the lookup.
| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
|=======================================================================
{% endraw %}
// endpoint options: END


[[DNS-Headers]]
Headers
^^^^^^^
[width="100%",cols="10%,10%,10%,70%",options="header",]
|=======================================================================

|Header |Type |Operations |Description

|dns.domain |String |ip |The domain name. Mandatory.

|dns.name |String |lookup |The name to lookup. Mandatory.

|dns.type |   | lookup, dig |The type of the lookup. Should match the values of `org.xbill.dns.Type`.
Optional.

|dns.class |   | lookup, dig |The DNS class of the lookup. Should match the values of
`org.xbill.dns.DClass`. Optional.

|dns.query |String |dig |The query itself. Mandatory.

|dns.server |String |dig |The server in particular for the query. If none is given, the default
one specified by the OS will be used. Optional.
|=======================================================================

[[DNS-Examples]]
Examples
^^^^^^^^

[[DNS-IPlookup]]
IP lookup
+++++++++

[source,xml]
--------------------------------------
        <route id="IPCheck">
            <from uri="direct:start"/>
            <to uri="dns:ip"/>
        </route>
--------------------------------------

This looks up a domain's IP. For example, www.example.com resolves to
192.0.32.10. +
 The IP address to lookup must be provided in the header with key
`"dns.domain"`.

[[DNS-DNSlookup]]
DNS lookup
++++++++++

[source,xml]
--------------------------------------
        <route id="IPCheck">
            <from uri="direct:start"/>
            <to uri="dns:lookup"/>
        </route>
--------------------------------------

This returns a set of DNS records associated with a domain. +
 The name to lookup must be provided in the header with key
`"dns.name"`.

[[DNS-DNSDig]]
DNS Dig
+++++++

Dig is a Unix command-line utility to run DNS queries.

[source,xml]
--------------------------------------
        <route id="IPCheck">
            <from uri="direct:start"/>
            <to uri="dns:dig"/>
        </route>
--------------------------------------

The query must be provided in the header with key `"dns.query"`.

[[DNS-SeeAlso]]
See Also
^^^^^^^^

* link:configuring-camel.html[Configuring Camel]
* link:component.html[Component]
* link:endpoint.html[Endpoint]
* link:getting-started.html[Getting Started]

