sslh (applicative protocol multiplexer) sslh accepts connections on specified ports, and forwards them further based on tests performed on the first data packet sent by the remote client. Probes for HTTP, SSL, SSH, OpenVPN, tinc, XMPP are implemented. Any other protocol that can be tested using a regular expression can be recognised. A typical use case is to allow serving several services on port 443 (e.g. to connect to SSH from inside a corporate firewall, which almost never block port 443) while still serving HTTPS on that port. There's a tutorial on using sslh, here: https://www.unixmen.com/sslh-a-sslssh-multiplexer-for-linux/ To start sslh as a daemon at boot, add this code to /etc/rc.d/rc.local: [ -x /etc/rc.d/rc.sslh ] && /etc/rc.d/rc.sslh start Before doing this, it's advisable to have a look at the example config files in /etc/sslh/*.cfg. The actual config file is sslh.cfg; the others are just examples. Optional dependencies: libev - needed for sslh-ev executable. Most people won't need this; see the sslh documentation for details. Will be autodetected. libbsd - allows sslh-fork to change its process title (as shown in 'ps'), so each forked process shows what protocol and what connection it is serving. Autodetected.