DTCPC(8)

NAME
dtcpc - Dynamic Tunnel Configuration Protocol client

SYNOPSIS
dtcpc [-a] [-A address] [-b udp-port] [-c] [-d] [-D] [-f file] [-i if] [-l] [-m mtu] [-n] [-o] [-p port] [-P prefix-delegation] [-r routecommand] [-R destination] [-t tuntype] [-u user] [-U] server

DESCRIPTION
dtcpc implements Dynamic Tunnel Configuration Protocol (DTCP for short) proposed by Trumpet. dtcpc will first ask the DTCP password to the user. Then, the program will try to connect DTCP server on server, to IPv4 TCP port 20200 ( or port specified by port), login as DTCP client, and maintain IPv6 over IPv4 tunnel connection.

The spec defines several kind of tunnel requests. dtcpc will request tunnel typed tuntype to the DTCP server. The default value for tuntype is “tunnelonly”. For tunnel types, please refer to dtcps(8).

By default, dtcpc dynamically creates gif as tunnelling device on such platform as interface cloning is available. You can disable use of interface cloning by using -c. When -o is specified, dtcpc creates an interface dynamically but don't destroy it at exit. On the platform where interface cloning is not available, dtcpc will use gif0 as tunnelling device. This can be altered by using -i.

If -U is specified, an IPv6 over an UDP/IPv4 tunnel is created instead of generic tunnel. An UDP port is specified by -b, and its default is “4028”. An IPv6 over an UDP/IPv4 tunnel requires Netgraph. (Experimental)

-r specifies how the default route is configured. If “static” is specified as routecommand, dtcpc uses the route(8) command to install the default route towards the corresponding tunnel interface. This is the default behavior. If “solicit” is specified, dtcpc will call the rtsol(8) command to send router solicitation messages toward the other end of the tunnel.

By default, when routecommand is “static”, the default route is configured. But, in some situation, you may want to install the specific routes instead of the default route towards the corresponding tunnel interface. You can specify the destination with -R destination. The destination is an acceptable form by route(8), like as “3ffe:505:2:: -prefixlen 48”. If you are running recent FreeBSD, it can be simplifed by “3ffe:505:2::/48”. The destination may be comma separated list.

-u is needed when DTCP user account is different from the login name on the host.

When -A address is specified, address is added to the corresponding tunnel interface. The address is a acceptable form by ifconfig(8), like as “3ffe:505:2:ffff::1 -prefixlen 128”. It may help some situation. The address may be comma separated list.

-n may save the user lives behind NAT that maps private IPv4 address to global IPv4 address.

dtcpc can be configured to do prefix-delegation. When -P prefix-delegation is specified, dtcpc initialize the LAN interfaces. The format of prefix-delegation is a comma separated list of the interface, SLA-id, host-id and prefixlen. And the interface, SLA-id, host-id and prefixlen should be written as a slant separated list such as “fxp0/1/0:0:0:1”. If you omit host-id, EUI-64 address is assumed to be used. If you omit prefixlen, 64 is assumed.

When prefix-delegation is enabled and rtadvd(8) is not running, dtcpc invokes rtadvd(8) appropriately. You can disable this behvior by specifying -a.

When -D is specified, dtcpc becomes daemon.

By default, when connection to the server is closed, dtcpc will exit. -l is specified, dtcpc doesn't exit on connection close, and continuously tries to re-connect.

If dtcpc is invoked as daemon, the process ID of the dtcpc are held in /var/run/dtcpc.pid by default. You may want to specify -f file to change the file name.

When -m mtu is specified, set the MTU of the tunnel to mtu. The default is “1280”.

-d puts dtcpc to debug mode.

Upon receipt of signal SIGHUP, dtcpc will try to reconnect to the DTCP server.

RETURN VALUES
dtcpc will exit with positive value on errors.

FILES
/usr/pkg/etc/dtcpc.auth
    You can specify your password to connect to DTCP server in this file. If your password is found in this file, dtcpc does not ask for your password. The format is a colon-separated list of the server name, the user name and the password.
/var/run/dtcpc.pid
    Contains the process ID of the dtcpc listening for connections. The content of this file is not sensitive; it can be world-readable. This file name may be changed by -f option.

SEE ALSO
gif(4), dtcps(8), gifconfig(8), ifconfig(8), route(8), rtadvd(8)

HISTORY
The dtcpc command first appeared in WIDE/KAME IPv6 protocol stack kit.

“network” tunnel type and other useful facilities were added by Hajimu UMEMOTO <ume@mahoroba.org>.

BUGS
dtcpc will not work if you are behind a NAT box ( This is a protocol feature, not a bug). -n may help you on such case. But, it is still depend on the behavior of your NAT box.

dtcpc was written in Ruby. :-)