raconn takes hostnames and ips has arguments and will spawn threads to concurrenctly connects to all them, keeping the first successful connection and then pipe bytes through stdin/stdout.
It is written in C using cosmopolitan libc, some of the reason listed here:
- Run on all major oses with one binary
- Static binary
- Easy 'C' development thanks to sane api defaults
- Debug enviroment included
raconn --ftrace and ssh -vvv if using with ssh.
- You have a server with two ifaces one used for failover if you specify both ip to raconn, even in a failover situation your ssh command will succeed by connecting through the second iface and ip.
# ssh ip4failover
Host ip4failover
ProxyCommand raconn %p 233.252.3.1 233.252.4.1
Port 22
User admin
- You have a machine that is accessible on your local network and from the outside you only known the machine MAC address and its domain name which resolve to a WAN ip. Locally your are connected through both wifi and ethernet.
# ssh machine
Host machine.company
ProxyCommand raconn %p machine.company.net 00:00:07:cf:10:0a
Port 22
User admin
- You're trying to figuring out something and
raconnis getting in the way.
# ssh -oProxyCommand=none machine
Host machine
ProxyCommand raconn %p 2a00:1450:4007:81a::200e fe80::9e4f:642a:15c2:aad7
Hostname 192.168.1.2 # this still works but is ignored when using ProxyCommand
Port 22
User admin
- mDns support