FEATURE REQUEST: full cone NAT

No, this, as I understand it, solves it. Imagine some udp-based game or another system with p2p communication. If it was ideal NAT-less internet:

  • client A sends packet from a.a.a.a:aaa to remote server
  • client B sends packet from b.b.b.b:bbb to remote server
  • server tells these addresses with ports to other clients
  • anyone else can connect to a.a.a.a:aaa and reach A
  • anyone else can connect to b.b.b.b:bbb and reach B

But if there’s NAT, it’s not longer possible. But this would make it work again:

  • both clients A and B are behind same NAT, to make it more challenging
  • A sends packet from 192.168.88.101:12345 to server
  • router can keep the port if it’s free, or choose different one, it doesn’t matter; let’s say it keeps it, so source will become p.p.p.p:12345 (p.p.p.p = its only public address)
  • router adds (invisibly) what’s basically dstnat from p.p.p.p:12345 to 192.168.88.101:12345
  • B sends packet from 192.168.88.102:12345 to server
  • router changes source to p.p.p.p:23456 (it can’t keep 12345, because it’s already taken by A)
  • router adds dstnat from p.p.p.p:23456 to 192.168.88.102:12345
  • also, if B sends packet from same 192.168.88.102:12345 to different remote server, router will use same p.p.p.p:23456
  • server tells these addresses and ports to other clients
  • anyone else can connect to p.p.p.p:12345 and reach A
  • anyone else can connect to p.p.p.p:23456 and reach B

It’s as if the NAT disappeared. Neat, isn’t it? Too bad I don’t have any use for it myself, I’m starting to like it. :wink: