Recently I was TDY to Kadena AB, and the 18FSS there has some ridiculous rules for the base Internet, both in billeting, and anywhere they provide service across the base (like at the clubs, BX, etc). Here's their idiotic restrictions:
1) They block any trusted DNS server... you have to use their router as a DNS server, and any port 53 queries to another (trusted) DNS server are blocked
2) They block all ICMP, so you can't traceroute your connection to see where it's going
3) They implement not just web proxying, but full TCP proxying... To get around #2 above, I tried to run a TCP traceroute, but they blocked this attempt by proxying, and disconnecting, my TCP scans.
4) They blocked my OpenVPN tunnel
5) They block MagicJack, which really got under my skin because I couldn't use it to call home
6) They blocked the email from Google, Yahoo, Comcast, GoDaddy, and Microsoft, which was on ports 993, 465, 25, etc.
7) They blocked my access to the security cameras at home so I couldn't check on my house
8) Of course, they did dirty word/URL searches, and blocked any 'hacking' or numerous other sites.
Basically, they blocked anything not on port 80 or 443, and even those ports were proxied and filtered. This is just unacceptable. I complained, as I suggest anyone who visits should.
How could one get around such an incredulous setup? SSH to the rescue. SSH didn't work for my OpenVPN VPN, as I have a UDP VPN, and I'd have to get a UDP to TCP setup using socat or something, which I didn't have set up before I left, so I was screwed for my UDP OpenVPN VPN.
However, for TCP connections, you can proxy all connections to your local box, and push them through a SSH tunnel, where they'd jump off from your ssh server and go back to their normal port. So let's say my OpenVPN VPN tunnel was a TCP vs UDP tunnel. Then the command for this is:
#ssh email@example.com -p 443 -L 1194:localhost:1194 (port:host:hostport, if you want to change ports)
I could then build a TCP tunnel to myself on the localhost port 1194, and fire up my tunnel. It would go outbound on port 443 to my ssh server, where it would get turned back to 1194 and sent to the destination VPN server.
If you wanted to have SSH tunnel from the Remote host to the Local host instead of the other way around, the command would be:
#ssh firstname.lastname@example.org -p 443 -R port:host:hostport