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.

Reply via email to