Settings

Theme

Show HN: lambda-nat-proxy – Serverless proxy using Lambda and UDP NAT punching

github.com

18 points by danvittegleo 7 months ago · 11 comments · 1 min read

Reader

Revisited an old experiment of mine (https://github.com/dan-v/awslambdaproxy): can AWS Lambda functions work as network proxies? This time using UDP NAT hole punching + QUIC tunnels.

Client discovers public IP via STUN, writes session data to S3, which triggers a Lambda. Both endpoints punch UDP holes through their NATs, then establish a QUIC connection for encrypted traffic forwarding.

pbnjay 6 months ago

Probably gets pretty costly if you’re running a lot of data through it. Now if you could implement a Tailscale DERP server in a lambda that would be pretty amazing: https://tailscale.com/kb/1232/derp-servers

  • danvittegleoOP 6 months ago

    I did toy around with Tailscale initially trying to get it to spin up as an exit node but wasn't able to get that functional. I did manage to get Tailscale Funnel to work as the tunnel mechanism to Lambda, but unfortunately the performance was really poor.

robcohen 6 months ago

Alternatively, you could make a Nix flake that can generate an immutable microVM image based on Solo5, running a MirageOS unikernel that implements NAT traversal with UDP hole punching and relay fallback. This image can be deployed to Fly.io as a lightweight, autoscaling Firecracker VM with per-second billing. It boots in milliseconds and costs far less than Lambda.

Any reason to use lambda vs this cloud-agnostic approach? Maybe I am missing something. I guess per second vs per 100ms billing, but I can't imagine it ends up being cheaper with Lambda.

  • danvittegleoOP 6 months ago

    Absolutely - there are plenty of more cost-effective, cloud-agnostic ways to build something like this. This is just an experiment to explore Lambda networking and push it beyond its intended use cases.

    • robcohen 6 months ago

      Sure, I think it's an awesome effort. Just trying to think of an agnostic approach that's more efficient.

  • wredcoll 6 months ago

    I honestly thought this post was satire for at least 30 seconds.

    • robcohen 6 months ago

      I'm not trying to disparage the attempt, just thinking of a way to make it's end goal more agnostic and efficient.

shayonj 6 months ago

Very interesting concept. I’d love some cheap and “throw away” method of setting up tunnels with minimal onus on the exit nodes.

danfritz 6 months ago

Looks cool but how much does it cost?

  • danvittegleoOP 6 months ago

    Like most things with AWS, it’s tricky to pin down exactly - and it’ll probably cost more than you’d expect once you factor in Lambda invocations, GB-seconds of execution time, S3 request fees, and especially data‐transfer charges.

  • js4ever 6 months ago

    10x the original cost it's trying to avoid probably

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection