IPXTUND(7)

Name
ipxtund - a tunnel for IPX

Syntax
ipxtund [-d n] [-f config] [-l log] [-c level] [-m maxage] [-s sender] [-v]

Description
IPXTUND connects several Ethernet based IPX networks by tunneling. The IPX packets are collected from LAN by a router, encapsulated into IP packets which can be transportet over e.g. Internet, received by another router, decapsulated and put into their LAN. This happens in a transparent matter, i.e. all IPX hosts should not be aware if their peers are at the same LAN or not (besides speed, of course). A router is build by running IPXTUND on a host which is connected to the IPX network directly and able to exchange IP packets with the other routers.

Command Line Options

-d n
    Trace level n. The higher the level, the verboser, any level includes all messages of lower levels. Default is 0. 0: Configuration, errormessages and statistics. Establishing and closing of TCP connections. 1: Peer registration (i.e. IPX clients sending IPX frames). 2: Packet flow. 3: Packet header. 3: Packet data.

-f path
    Path to the configuration file. IPXTUND needs one configuration file, which is explained later. Default is "./ipxtund.conf".

-l path
    Path to the log file. The current configuration, trace information and some statistics are written to this file. If the file already exists, it will be truncated first. Default is "./ipxtund.log".

-c n
    Level n of compression. IPXTUND uses ZLIB for data compression, which allows differnet compression levels, from 0 (no compression) to 9 (maximum). Default is 6.

-m maxage
    Identic packtes received by Ethernet while maxage time (milisecs) are discarded. This often originated from resending caused by an acknowledging timeout due to a too latency connection. Default is 1000 (1 sec).

-s sender
    Path to the sender file. This file contain a list of MACs (e.g. [0:a0:c9:e6:bf:d3]) from all IPX clients allowed to use IPXTUND. Any IPX packet from a client not listed in this file will be dropped. Default is no sender file, i.e. all clients are recognized.

-v  Be verbose. This option let IPXTUND print some statistics at stderr.

Usage:
Run IPXTUND as root and finish it by pressing ctrl-c (or sending SIGINT, SIGHUP, SIGQUIT). If one IPXTUND exits (e.g. crashes) it may be started again without restarting all remote IPXTUNDs. The IPX clients should just continue in this case, until they have a timeout.

Configuration
IPXTUND is controlled by a configuration file (command line option -f). It is build by lines, starting with a keyword followed by arguments. If in the following an argument is imbedded by braces, the braces are mandatory. Comments are possible, starting with a hash symbol (like a shell script). Order doesnt matter, but some keywords may appear just once, other may appear repeated.

port udp udp-ctrl tcp
    Port-numbers for UDP (IPX data), UDP (control data), TCP (IPX data). The local host will receive IPX data from remote routers at port udp, control data at port udp-ctrl, and TCP connect-requests at port tcp. If tcp is set to 0, no TCP connection will be enabled (this disables header compression, too). port is optional, default values are defined in "ipxtund.h".

router hostname (frametype) udp udp-ctrl tcp
    The IPX data will be forwarded to router hostname. hostname have to be a DNS-resolvable name or an IP address. udp, udp-ctrl, and tcp are the ports for data sending. If router "R1" has a port line "port a b c", all other routers want a router line "router R1 a b c" (with an optional additional (frametype)). If tcp is set to 0, no TCP connection will be enabled (this disables header compression, too). (frametype) may be (n), (t), determining the Ethernet frametype for sending towards router. (n): don't sent Ethernet headers (recommended). (t): sent Ethernet header (same type as received at Ethernet) Each remote router gets one router line, (frametype) and port numbers are optional, defaults are (n) and the default values from port above.

interface if [MAC] (frametype)
    The IPX data will be receiced and transmitted by Ethernet interface if. [MAC] is the Ethernet address (may be retrieved by UNIX program "arp") in braces. (frametype) may be (a), (802.2), (802.3), (snap), or (ii), determining Ethernet frametype for sending towards Ethernet. Ethernet frametypes for reading from Ethernet are determined by frametype as described later. (a): automatic frametype recognition, i.e. the type of least received Ethernet frame at the interface determines the type for sendings at the interface. (802.2), (802.3), (ii), (snap): use type 802.2, etc. for sending. Each Ethernet interface get one interface line, [MAC] and (frametype) are optional, defaults are [0:0:0:0:0:0] and (a).

frametype (frametype)
    Determines all recognized Ethernet frametypes for reading from Ethernet. (frametype) may be (802.2), (802.3), (ii), (snap). Each frametype wants one frametype line.

server servername myid
    If one or more of the routers have no known IP address (e.g. because it uses a different IP number each time it connects to Internet), one of the routers with a known IP number may act as server for IP number negotiation. All routers with unknown IP addresses get a router line with an id instead of a hostname, the id has a ? in front, e.g. "router ?joe (n)". The router "joe" itself has an entry "server servername joe". At startup, all routers with a server line sends the id myid to the server servername, which collects them. If all ?id at server are resolved, the server sends this resolving to all routers back.

Limitations
Routers using an id instead of a hostname (see server) cannot restart IPXTUND without restarting all remote IPXTUNDs. Some applications have a too tight IPX timing for IP connections using phone lines with modems.

Acknowledgements
IPXTUND was written by Hinrich Eilts. If you have bug reports, suggestions, questions, e-mail them to eilts@tor.muc.de.