DeleGate has a generic mechanism to make itself be chained with
another upstream DeleGate which will communicate with target
servers.
A persistent communication channel between chained DeleGates,
which multiplexes bi-directional data transmission of multiple
sessions, can be established using the
TUNNEL parameter.
...... --+ +-> ......
client --+ TUNNEL +-> server
client --+-> DeleGate ======================> DeleGate --+-> server
(TCP) a single persistent (TCP)
channel on an arbitrary
transport protocol
The TUNNEL parameter specifies which type of tunnel is used and how will it be established. Although DeleGate has nothing to do with SSH, a channel for TUNNEL can be established on SSH connection to make communication between DeleGates be secure.
The TUNNEL mechanism has been implemented in an ancient version of DeleGate, but relaying FTP (data connection by PASV) on TUNNEL was supported recently in DeleGate/6.1.16.
#### A script to establish a DeleGate tunnel on SSH #### #### HostR: a remote host running sshd #### Path: a directory where delegated exists on HostR #### o ssh HostR Path/delegated SERVER=tunnel1 \n i READY\r\n = ####
HostL% delegated -v -P8080 TUNNEL=tty7:ssh.shio
06/28 15:04:20.81 [17429] 0+0: --INITIALIZATION START: 6.1.16 on xxxx-- ... 06/28 15:04:20.85 [17429] 0+0: {T}.TeleportPorts[1]: 4362 06/28 15:04:20.85 [17430] 0+0: -- Fork(bindTeleportVehicle): 17429 -> 17430 06/28 15:04:20.86 [17432] 0+0: -- Fork(Tunnel): 17430 -> 17432 06/28 15:04:20.88 [17429] 0+0: [17429] ADD BeforeExit[0] STTY-ECHO 06/28 15:04:20.88 [17429] 0+0: >>>>>> Teleport[17430] <<<<<< tty7:0 ... 06/28 15:04:20.92 [17429] 0+0: --INITIALIZATION DONE--[enter password for ssh here]
06/28 15:04:24.02 [17430] 0+0: Remote Peer Says: INVITE WhereIs/* ^M 06/28 15:04:24.02 [17430] 0+0: {T}.Teleport: tty7:0 [0.0.0.0:0] opened[11/11] ...
-> ............. --+ +-> -> HTTP-DeleGate --+ +-> -> FTP-DeleGate --+ MASTER TUNNEL +-> -> Telnet-DeleGate --+--------> DeleGate ============> DeleGate --+-> client (specialists) (generalist) (generalist) server hosts (--------- on HostL ------------------) (on HostR) hosts