4 ms·
I dabbled with QUIC a few years ago and I couldn't agree more. It was pleasant to work with, and because it's UDP based, suddenly you can do NAT hole punching m
by binwiederhier 3y ago
I dabbled with QUIC a few years ago and I couldn't agree more. It was pleasant to work with, and because it's UDP based, suddenly you can do NAT hole punching more easily.
Funny that you mentioned a VPN, because I made a little experimental project back then to hole-punch between two behind-the-NAT machines and deliver traffic between them over QUIC. I was able to make my own L2 and L3 bridges across the WAN, or just port forward from one natted endpoint to an endpoint behind a different NAT.
At one point I used it to L2-bridge my company's network (10.x) to my home network (192.168.x), and I was able to ping my home server from the bridging host, even though it was different networks, because it was essentially just connecting a cable between the networks. It was quite fun.
Here's the project if anyone is interested: https://github.com/binwiederhier/natter https://github.com/binwiederhier/natter -- it's probably defunct, but it was only experimental anyway.
- abhishekjha 3y agoHow mcuh config did it requir on your home local network and office network to do the ping on 192.168.x.x?
- binwiederhier 3y agoI only tested one hop, e.g. A(10.x)---->B(192.x). All I had to do there was to adapt the routing tables: On A, route 192.x traffic to the "natter" tap/tun interface (I always forget which is L2), and on B, route traffic to 10.x accordingly. That's all. For it to be routable in the entire network, you'd need to obviously mess with a lot more :-D
- heyoni 3y agoTHAT was your first project in golang? I’m impressed. it looks like it might it could replace ngrok? I’ll try it later.
- binwiederhier 3y agoWell it's abandoned and experimental, and there are better ways to hole punch than what I did, e.g. using STUN and TURN. But yeah it could replace one ngrok use case, though I think ngrok does not do L2/3 bridges. Also: I think technically this was my first Go program (https://github.com/binwiederhier/re https://github.com/binwiederhier/re), but that was so tiny that it doesn't really count. ;-)