---
name: "dns2tcpc"
section: "1"
platform: "linux"
package: "dns2tcp"
version: "0.5.2-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/dns2tcpc"
---

# dns2tcpc(1)

A tunneling tool that encapsulate TCP traffic over DNS.

## NAME

dns2tcpc - A tunneling tool that encapsulate TCP traffic over DNS.

## SYNOPSIS

**dns2tcpc** \[ **-h** \] \[ **-c** \] \[ **-z** *domain zone* \] \[ **-d** *debug\_level* \] \[ **-r** *resource* \] \[ **-k** *key* \] \[ **-f** *config\_file* \] \[ **-e** *command* \] \[ **-T** *request type* \] \[ **-l** *local\_port* \] \[  *server* \] \

## DESCRIPTION

dns2tcpc is a network tool used to encapsulate TCP communications in DNS. When connections are received on a specific port all TCP traffic is sent to the remote dns2tcpd server and forwarded to a specific host and port. Multiple connections are supported.

dns2tcpc was written for demonstration purposes.

## OPTIONS

- **-h**

  Help Menu

- **-c**

  Enable DNS compression. When used, be sure that all relay and DNS server support compression and really use it.

- **-z** **domain zone**

  Use this domain as endpoint.

- **-d** **debug level**

  Change debug level. Levels available are 1, 2 or 3.

- **-r** **resource**

  Remote resource to access.

- **-k** **key**

  Pre shared key used for authentication (identification).

- **-f** **config file**

  Configuration file to use.

- **-T** **request type**

  Request type to use. Actually only KEY and TXT requests are supported.

- **-e** **command**

  Command to execute, I/O are redirected in the tunnel.

- **-l** **local\_port**

  Local port accepting incoming connections (or - for stdin on UNIX systems).

- **-t** **connection timeout**

  Maximum DNS server's answer delay in seconds. A valid delay is between 1 and 240 seconds. Default is 3.

- **server**

  DNS server to use. The first entry in resolv.conf file will be chosen if the server is not specified.

## CONFIGURATION FILES

By default ${HOME}/.dns2tcprc is used if no configuration file is specified. Here is an example :

- domain = dns2tcp.hsc.fr

  ```
  resource = ssltunnel
  local_port = 4430
  enable_compression = 0
  debug_level = 1
  key = mykey
  # DNS to use
  server = ns.hsc.fr
  ```

## EXAMPLES

- `dns2tcpc -k mykey -z dns2tcp.hsc.fr mydns`

  -

  Ask the dns2tcp server to list available resources.

-

  - `ssh -o 'ProxyCommand dns2tcpc -r ssh -l - -z dns2tcp.hsc.fr -k mykey mydns' myserver`

  -

  Use dns2tcp as a proxy command with ssh. We try to connect to the ssh resource with the key 'mykey' and the DNS mydns.

-

  - `dns2tcpc -r socat-resource -e '/bin/bash -i' -k mykey -z dns2tcp.hsc.fr mydns`

  -

  Use dns2tcp as a reverse shell, the remote shell will appear on the socat-resource.

-

  - `dns2tcpc -d 1 -f /dev/null -r ssl-tunnel -l 2000 -k mykey -T KEY -z dns2tcp.hsc.fr mydns`

  -

  Do not use the default configuration file, bind local port 2000 and forward all the traffic on the remote ssl-tunnel resource, use the first debug level. Use KEY type DNS requests.

-

  ## AUTHORS

Olivier Dembour \<olivier.dembour@hsc.fr\>

## SEE ALSO

ssltunnel
