In this context, "proxies" are cross-protocol bridging
mechanisms which allow systems using one protocol to be
accessed using another protocol. They can also be used
to give "hidden" systems a network presence.
There is no limit to the number of proxies you may
configure, but most sysops will never need this facility.
AX25 -> NETROM PROXY
This facility allows AX25 level 2 callers to connect
"directly" to remote NetRom target callsigns, without
needing to connect first to XRPi then issue a downlink
connect request. In effect, it gives the NetRom target
system a local AX25 presence.
.------. .-------. .--------.
| user |-- Ax25 --| proxy |-- NetRom --| target |
'------' link '-------' link '--------'
(g5ur) (g8pzt) (gb7bbs)
.------. Ax25 link .-------.
| G5UR |-- G5UR -> <- GB7BBS --| G8PZT |
'------' '-------'
(Proxy at G8PZT masquerades as GB7BBS)
This facility is primarily for use in situations where
a BBS or PMS is wire-linked to a "front-end" router,
thus allowing the BBS callsign to be directly
connectible on any port for which the proxy call is
defined. You may find other uses....
A bi-directional selective frame pipe would provide a
similar effect, but only for systems directly connected
to XRPi, whereas PROXY allows the target system to be
located several hops away. Pipes can handle UI frames,
whereas PROXY is for connected-mode operations only.
Here's how it would be used on a typical set-up, which
has two machines (or a virtual COM port linking two
systems on the same machine). Only XRPi is connected to
the radios, the BBS being KISS-linked to XRPi's port 7.
----------- (1)
| Radio/TNC | ---.
----------- |
| .--------. .---------.
----------- (2)| | NODE | (7) KISS | GB7PZT |
| Radio/TNC |----|----| |------------| |
----------- | | (XRPi) | (rs232) | (BBS) |
| `--------' `---------'
----------- (3)|
| Radio/TNC |----|
----------- |
V
etc.
Without PROXY, level 2 users would have to connect to
XRPi, then issue the command "C GB7PZT",or "BBS" to
connect to the BBS.
With the line "PROXY=GB7PZT" in port 1's definition
(in XROUTER.CFG), users on port 1's frequency simply
connect to "GB7PZT" - XRPi intercepts the request and
answers on behalf of the BBS. It then connects via
NetRom to GB7PZT. In this case, the BBS is running on
top of BPQ, so it has a NetRom address.
If the target system (GB7PZT in this case) is not
reachable via NetRom level 4, the connect request is
refused.
If you wish to use this facility, you must add a
"PROXY=<call1>[,call2,...]" directive to each user PORT
concerned. Ports without the directive continue to
function as normal. You obviously wouldn't enable it
on your forwarding ports for example. You will notice
that you can have several callsigns on the line, each
separated by a comma, allowing you to act as a proxy
for more than one system.
Warning! DO NOT enable PROXY on any frequency which
is shared by the target system or you'll cause horrible
problems (both the target and the proxy will respond to
connects at the same time).
AX25 / NETROM -> TCP PROXY
This is an extension of the PROXY concept, allowing a
remote TCP/IP-only system to have NetRom and AX25
connectivity.
.------. .-------. .--------.
| user |-- Ax25 --| proxy |-- TCP/IP --| target |
'------' link '-.-----' link '--------'
|
.-------. |
| user2 |-- NetRom--'
| @node | link
'-------'
In the previous example, GB7PZT BBS used G8BPQ node
"underneath" the BBS to provide NetRom connectivity
across the KISS link. With the extended proxy, BPQ can
be removed altogether and the BBS can be run in pure
TCP/IP mode. This saves memory, whilst improving speed
and reliability. The BBS no longer has to support
multiple protocols or interface types, that job being
delegated to XRPi.
Instead of having to connect first to XRPi then issue
the awkward command "Telnet 44.131.91.2", users can
simply connect "directly" to the BBS callsign (GB7PZT)
on one of XRPi's radio ports. XRPi converts that
connection into a TCP/IP connection with the BBS, and
translates the data back and forth between AX25 and
TCP/IP.
Furthermore, the BBS callsign "GB7PZT" can be connected
to directly from XRPi's command line, and also included
in nodes broadcasts so it can be reached from a remote
node.
This type of proxy is created by putting an extended
PROXY statement in the GLOBAL section of XROUTER.CFG,
using the following format:
PROXY=<call> <alias> <qual> <ipaddr> <portnum> [passwrd]
For example:
PROXY=GB7PZT KDRBBS 150 192.168.0.4 8888 bloggs
<call> is the NetRom and AX25 callsign for the
proxied system.
<alias> is the NetRom / AX25 alias for the proxied
system.
<qual> is the NetRom "quality" (0 - 255) controlling
visibility on the NetRom network.
<ipaddr> is the proxied system's IP address.
<portnum> is the TCP service port number of the
proxied system.
<passwrd> is an optional password sent to proxied
system upon connection. This is used to
verify that the TCP connection originates
from an approved proxy.
AX25 and NetRom are pure binary channels, whereas standard
telnet is not. The proxied system must provide a pure
binary service port in order to make full use of this
facility for compressed forwarding etc. G8PZT's "XServ"
BBS software provides such a facility on TCP port 8888.
Connection Protocol
If you are a software author interested in adapting your
software to work with this proxy, the following information
will be useful:
Upon connection to the proxied system XRPi sends one line
of text ending in <CR><LF>, containing one or more
space-delimited fields. The first field is the callsign of
the connectee in the form "G8PZT-7" (ax25) or
"G6YAK-2@GB7BM" (NetRom). The second field is a password
which verifies the proxying system (note this is not the
user's password). Thereafter, the link switches to pure
binary, and in accordance with AX25 practice both systems
must send line ends as <CR> alone.
NETROM -> AX25 PROXY
This is similar to the NetRom -> TCP proxy described
above, but is intended to allow an AX25-only system to
have a NetRom presence.
.------. .-------. .--------.
| user |-- NetRom --| proxy |-- AX25 --| target |
|@node | link '-------' link '--------'
'------' ^
^-(Target callsign appears in)
(nodes tables on these nodes)
This is enabled by putting an extended PROXY statement
in the GLOBAL section of XROUTER.CFG, using the
following format:
PROXY=<call> <alias> <qual> <ax_call> <portnum>
For example:
PROXY=MB7UYL UYLBBS 150 G6KDR-3 7
<call> is the NetRom and AX25 callsign for the proxied
system.
<alias> is the NetRom / AX25 alias for the proxied
system.
<qual> is the NetRom "quality" (0 - 255) controlling
visibility on the NetRom network.
<ax_call> is the proxied system's AX25 L2 callsign.
<portnum> is the radio port the proxied system is
connected to.
The above example creates a NetRom node whose callsign
is "MB7UYL", alias "UYLBBS", with NetRom quality 150.
Anyone who makes a connection to either of these
addresses will actually be connected to the AX25 system
"G6KDR-3", attached to XRPi's port 7.