---
name: "6tunnel"
section: "1"
platform: "linux"
package: "6tunnel"
version: "0.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/6tunnel"
---

# 6tunnel(1)

tunnelling for application that don't speak IPv6

## NAME

6tunnel - tunnelling for application that don't speak IPv6

## SYNOPSIS

**6tunnel** \[ **-146dhfvV** \] \[ **-u** *username* \] \[ **-i** *password* \] \[ **-I** *password* \] \[ **-l** *local\_host* \] \[ **-L** *limit* \] \[ **-p** *pid\_file* \] \[ **-m** *map\_file* \] *local\_port* *remote\_host* \[ *remote\_port* \]

## DESCRIPTION

**6tunnel** allows you to use services provided by IPv6 hosts with IPv4-only applications and vice-versa. It can bind to any of your IPv4 (default) or IPv6 addresses and forward all data to IPv4 or IPv6 (default) host. For example

-

  **6tunnel** **-1** **6668** **irc6.net** **6667**

will be enough to connect to IPv6 irc server with

-

  **irc** **foobar** **localhost:6668**

If you don't wish to run **6tunnel** every time you want to show your :c001: or :dead: IPv6 address on IRC, you can use **-i** parameter, which makes **6tunnel** ask your client for specified password. Just run

-

  **6tunnel** **-i** **dupa.8** **31337** **irc6.net** **6667**

and then type

-

  **irc** **foobar** **localhost:31337:dupa.8**

If your IRC server requires you to send password, specify it with **-I** parameter -- after successful proxy authentication **6tunnel** will send it to the server.

**6tunnel** can also be used as a tunnel for all other combinations of IPv4 and IPv6 endpoints. If remote host doesn't have any IPv6 addresses, **6tunnel** will use the IPv4 one. In other cases, use **-4** parameter which makes IPv4 address the preferred one. For IPv6-to-any tunnels use **-6** which makes **6tunnel** bind to IPv6 address.

## OPTIONS

- **-1**

  Exit after first connection.

- **-4**

  Prefer IPv4 endpoint if the machine has both address types.

- **-6**

  Listen on IPv6 address (IPv4 is default).

- **-d**

  Don't detach.

- **-f**

  Force tunneling even if remote host is not resolvable at the execution time.

- **-h**

  Print hex dump of every packet received or sent.

- **-u** **username**

  Change UID and GID after bind().

- **-i** **password**

  Act as an IRC proxy and require user to authenticate.

- **-I** **password**

  If you are using **6tunnel** as an IRC proxy and the IRC server requires you to send password, place it right here.

- **-l** **local\_host**

  Listen on specified address (IPv4, or IPv6 if **-6** used).

- **-L** **limit**

  Limit simultaneous connections.

- **-p** **pid\_file**

  Write down pid to specified file.

- **-s** **source\_host**

  Connect to the remote host using specified source address.

- **-m** **map\_file**

  Binds to specified IPv6 addresses on basis of source IPv4 address. The file contains one mapping per line with IPv4 source address and corresponding IPv6 address. Only listed hosts are allowed to connect. If you want to allow any host, add mapping for **default** or **0.0.0.0** address. Example:

-

  ```
  192.168.0.2 3ffe:8010:18::1000:2
  192.168.0.3 3ffe:8010:18::1000:3
  ```

- **-v**

  Be verbose and don't detach.

- **-V**

  Print version and exit.

## NOTES

Option **-H** to disable all resolver hints has been removed since proper combination of  **-4** and **-6** will yield in any combination of IPv4 and IPv6 sources and destinations.

## SIGNALS

Sending SIGHUP forces map file reload.

## THANKS

\#ipv6 crew, Lam.

## BUGS

Terrible man page. Hex dump doesn't include IRC proxy authentication. IRC proxy requires your client to send password first (don't worry ircii, EPIC, BitchX, mIRC and many more will work). No logging except debug output.

## AUTHORS

Wojtek Kaniewski (wojtekka@toxygen.net), Dariusz Jackowski (ascent@linux.pl), Ramunas Lukosevicus (lukoramu@parok.lt), Roland Stigge (stigge@antcom.de)

## SEE ALSO

[**ssh**(1)](/ssh/1.md)
