My school uses DPI (deep packet inspection) to block protocols like SSH and OpenVPN. Additionally, few remote ports are enabled. Sometimes I want to login to my VPS from school to fix or work on something, but I cannot because SSH is blocked. Furthermore, my school has a approved (yes, approved by the school administration) League Of Legends team but they cannot play League Of Legends at school because it is blocked...
In order to get around these limitations, I've written tlswrapd <https://github.com/nhooyr/tlswrapd> and tlsmuxd <https://github.com/nhooyr/tlsmuxd>. tlswrapd accepts a local connection, dials a remote address with TLS and then copies all data between the two connections. tlsmuxd accepts a remote connection with TLS, dials a local address and then copies all data between the two connections. Both also support ALPN to serve multiple protocols over a single port. Since TLS and port 443 are not blocked, this allows me to serve protocols like SSH and OpenVPN over TLS on port 443 on my VPS. I use tlswrapd on my laptop to "wrap" SSH connections to my VPS where tlsmuxd is running. tlsmuxd then proxies these SSH connections back to the locally running sshd. It does essentially the same thing for OpenVPN. I've put in a lot of effort to make the code idiomatic and secure but I would appreciate some feedback. Thanks in advance! -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.