If port 443 is open and you can connect to SSH, why not just use an SSH SOCKS proxy? This is neat in principle, I'm just not sure who it helps or why it's better. I suppose this helps if someone is doing deep inspection on their portal traffic, but is anyone doing that?
Sure, but one of the things they use it for is to impede this sort of thing. They don't care about perfect accuracy, just inject random faults and increase latency if they suspect this sort of tunneling.
I was very surprised at how finicky some TCP software is. SSH/SCP in particular was not at all tolerant of seemingly minor delays that every other client/server combination ignored. My gold standard for testing became "can you perform an arbitrary number of tunneling layers, where the layers alternate between SSH and the HTTP tunnel, and still behave as reliably as a direct connection?"
Any particular reason you haven't? I just skimmed the code, and while 2=>3 string differences might give you some pains since you are doing a lot of works with strings and encryption, you seem to only be using standard packages so this should be an easy port. 2to3 [1] might get you all the way there with no manual changes.
Why not use the openconnect vpn server, ocserv? [0]
It opportunistically uses DTLS over UDP where it can, but falls back to plain TLS over TCP where not. And I mean real TLS, not the sort-of-TLS that OpenVPN uses.
if traffic passes under tls shouldn't it be possible to figure out the content or type of content transmitted/received, shouldn't just an ip over tls be enough?
There are some things related to the size and timing of packets that you can use to infer the likeliness of a given handshake inside the TLS stream. The great firewall does similar things to detect Tor. (Not related to the IP-over-HTTP presented above however.)
with this intermediate protocol within tls you're just adding a fixed (or almost fixed) size to the data being transferred and the timing I think is indifferent
re: The package build instructions are rather strange. I've given up trying to compile anything written in rust since what "Rust" is changes every 3 months. Unless you're using a rolling distro, and even then, you're gonna have a hard time compiling $randomrustproject using repo compilers. There's no useful efforts for forwards compatibility and right now the dev userbase is still the type of people in love with bleeding edge.
https://github.com/ietf-wg-masque/draft-ietf-masque-connect-...