Internet centralization and the original sin of NAT

dreamstation.systems

161 points by robinpie 21 hours ago


RustyRussell - an hour ago

Sorry.

I implemented the current NAT system in Linux. In particular, avoiding port reservation in favor of squishing more connections into one IP address, as long as the remote address allowed us to differentiate.

This, in turn, means incoming traffic from a different address is unroutable. You no longer have a public endpoint. This is "poor man's firewall", but erodes our ability to have a server the way we used to.

I was a young engineer solving a specific problem, without considering the larger picture. It wasn't the only thing, but I feel it definitely moved the internet to a client/server infrastructure and a key equality was lost.

solatic - 13 hours ago

> There’s lots of things you can blame for killing the open Internet, but I think NAT was one of the earliest. Running a server used to be trivial: run an executable, tell people your address, done... It also trained everyone to think client‐server is natural. “My device talks to The Cloud which talks to other devices” feels normal, when that feeling originated as an artifact of address scarcity.

A lot of this feels like a requiem for the days when the only people on the Internet were "high-computer-skill" type folks. Most people will gravitate to "user-friendly" solutions: Gmail and other managed email providers were popular because they didn't stop working when you shut down your computer to save electricity, when your server's hard drive crashed, when you upgraded your computer to something with a faster processor, more RAM, and a newer operating system. It was hard enough to educate laypeople about URLs and email addresses (AOL keywords, anyone?), let alone a combination of random numbers in an IP address, or convincing people to register domain names.

Yes, NAT shoved fences into a network that was all about connecting everybody. But we'd still end up with server-client cloud architectures, even if we had started with IPv6 in the beginning. ISPs would have just sold highly restrictive firewalls as part of their home-install basic boxes, and we'd still have ended up with those fences.

1vuio0pswjnm7 - 14 minutes ago

"Network address translation (NAT) was first formally proposed in RFC 1631 in 1994."

"Naturally, people noticed this was a problem almost immediately, because people have wanted to run game servers, FTP servers, and web servers from their bedrooms since roughly the beginning of time."

TCP/IP was in use for at least thirteen years before the first "commercial ISP" offering internet access oustide of work or school

In 1994 the www had only been public for less than twelve months

According to one source, 11 million US households got internet access in 1994

https://www.pewinternet.org/2014/03/11/world-wide-web-timeli...

In 1994, there were over 97 million US households

https://fred.stlouisfed.org/series/TTLHH

According to another source, "no one" had home internet access in 1994

https://www.ntia.gov/sites/default/files/data/fttn99/FTTN_I/...

Did the majority of internet users want to run servers from their bedrooms

In 1994, the majority of the US population did not even have a home computer

(Perhaps everyone reading this had one but that's not the majority)

In some ways, little has changed. Organisations like academic institutions, governments and large businesses can have internet access without "NAT"

Everyone else is an afterthought

And most internet subscribers still have no interest in running servers from their bedrooms

elric - 16 hours ago

Calling NAT the original sin is a serious exaggeration. Carrier Grade NAT (CGNAT) is a truly evil concept that restricts the freedoms of the CGNATed users. But regular NAT is fine as long as you can control it. "No one wanting to bother with port forwarding" is largely a matter of shitty UX on the home gateway side and laziness on the side of the operator. Same with UPnP.

If anything, NAT has saved millions of wildly insecure devices running unpatched old Windows versions from getting pwned the second they connect to the open internet.

miki123211 - 14 hours ago

The designers of the internet made one fundamental mistake, namely applying meatspace norms to cyberspace.

In the "real world", you don't really need that much security. Your actual security comes from the fact that all the worst criminals are already locked up, most of the would-be criminals are afraid of being locked up, and if somebody does actually commit a crime, they will get locked up and won't be able to do it again for a good while. A lot of real-world security is about post-factum detection (think alarms, CCTV, panic buttons etc), because in the real world, detection and prevention are two sides of the same coin.

This only works because if a real-world crime happens, the criminal by definition is in the same location as the victim, and law enforcement cares most about the community they serve. If the criminal is across the world, as is the case in cyberspace, even if it's a friendly country, it's often "not their problem". This means internet systems need actual security, and NAT provides exactly that.

If not for NAT, we'd all need a firewall, and things would be almost if not exactly the same. In the real world, "leave things relatively open, because locks are mostly for keeping honest people honest" is a valid strategy. This strategy doesn't work on the internet.

mittensc - 18 hours ago

I remember times before NAT and SSL

You could share things easily, sure, but anyone could get hacked pretty easily and very targetted.

After NAT, sharing was still easy lots of 'piracy' apps, various messengers with NAT passthrough

Both before and after you needed to be technical, you can't ask someone that doesnt know about computers to set up an FTP server, and if they did it would be a nightmare and they'd likely share their whole drive

Same goes for anything else.

Anyway, we'll get the whole non-nat with IPv6, let's see what that brings

smalltorch - an hour ago

>Running a server used to be trivial: run an executable, tell people your address, done.

This is the draw to onionv3 services for me. It's still exactly like this.

I made a post the other day wondering why they aren't way more popular than they are. Do most people just not know? It's a pretty nice thing to be able to do.

Especially in a world where you can create your own utilities very easily, it's the perfect way to gain back some sovereignty over your compute in the age of CGNAT.

Sure it's not blazing fast or anything...but it's perfectly adequate for 90% of things.

cm2187 - 3 hours ago

NATs are also firewalls. I think people forget that before NATs, when you would install Windows, the minute you connected it to the internet, you had to rush to update it before a virus would infect it. The OS of the 90s weren't secure enough to be exposed to the WAN.

exabrial - 4 hours ago

I think its funny everyone thinks that ISPs, Device Manufacturers, and Cloud Providers are going to let your connect back directly to your "home" with IOT devices.

Absolutely not. They can charge your $9.99/mo so you can connect their craptastic app to their craptastic cloud so you can "use their app from anywhere".

- 18 hours ago
[deleted]
g023 - 16 hours ago

I miss the old days of ICQ and just dragging a file onto the person you are sending your file and bam, done like dinner.

thomastjeffery - 3 hours ago

The consequences are so much more significant than people seem to realize.

Because of NAT, hierarchy (centralized servers) is the foundational design pattern of the internet, and anyone who wants any semblance of anarchy (decentralized networks) must use a workaround that is itself hierarchical and costly. We are all interconnected, but only a wealthy few can truly speak fist.

crote - an hour ago

Yeah, no.

Working around NAT was trivial for the people who actually cared about it. I was adding port forwarding rules to my parents' router at age 12. Turns out exposing a poorly-configured Windows XP box to the wider interwebs is a Really Bad Idea - and for the same reason UPnP letting random unpatched shady P2P applications do the same is Very Much Not Good.

Let's face it: consumer devices simply aren't secured well enough to let the entire internet poke around in them, and it was even worse a decade or two ago. Decentralization is pointless when it only results in people compromising their own machines, and the people with the skills to set up a 24/7 Linux server in a broom closet won't care about adding some NAT forwarding rules.

Even without NAT, we would've definitely gotten home internet routers firewalled with a default-deny policy on all incoming connections. Exactly the same "manually configure a bypass, or use UPnP" dance blocking you from trivially running a web-available service on your machine, but with a firewall rule rather than a NAT port forward.

It's of course a different story with CGNAT, but that only became a thing well after the internet was already centralized.

arisudesu - 16 hours ago

> Why you don’t have a FTP server

May be due to US DoD holding large amounts of IPv4 for no reason

rugby_poppeye - 18 hours ago

NAT made distinction between PCs and servers too broad.

Sha1rholder - 18 hours ago

Time to set up IPV6.

Pesthuf - 15 hours ago

Sending files to another would be easy if only the services that allow doing this - over WebRTC - didn’t sell out to sketchy advertisers constantly. I have to look up which service is still good to use every time.

api - 2 hours ago

Reading the comments:

Why do so many people still think NAT equals firewall when they're not directly related?

I guess it's because they're normally packaged together for practical reasons. They're both packet handling functions often performed in the same place. But they are NOT the same and you can have either one without the other. Most IPv6 networks have firewalls, and it's possible to have NAT that liberally passes anything.

I wonder how much this misconception has delayed V6 adoption? "But I'll be wide open without NAT!" No, you can have a firewall. Most IPv6 routers have stateful firewalls on by default.

dboreham - 15 hours ago

People have forgotten, or weren't alive, but NAT was created and deployed originally by users. The problem they were solving wasn't "how do we stop running out of addresses" but rather "how do we save money". That's because early ISPs had hit on the idea of charging more for more address space, as a way to differentiate between small and large customers. So you could buy a cheaper service with one IP and use NAT to get your whole organization online.

- 2 hours ago
[deleted]
Uptrenda - 16 hours ago

Author is right about everything. Also: IPv6 doesn't fix this, it just introduces a new problem. IPv6 machines end up with local firewalls + stateful firewalls on the router. That router doesn't let in inbound cons. There is a part of UPnP that lets you add "pin holes" (it works like you expect) -- but the drawbacks are its kind of obscure, poorly implemented, and not guaranteed to be enabled.

The idea of router sounds simple and like it should implement some standard protocols. But in practice -- a lot of it is a mishmash of proprietary, ad hoc shitware. Something I never hear spoken about is the deep packet inspection filter component of the router firmware. It's a part of the router that decides on what traffic is allowed / not, and almost no company publishes this part. So you're not even in control of your own Internet traffic, tiny blobs of code written by some company get to decide if something is allowed or not.

If that sounds sus AF and kind of a bad idea -- well, it is. You can always run 100% open software with open-wrt. But the thing is -- the Internet isn't just your part of it. It's a network of networks, and all those shitty routers, with all that shitty firmware, is deeply ingrained within the entire Internet. That's millions of devices that would need to be replaced to fix the issue.

TZubiri - 18 hours ago

Related comment from another thread

https://news.ycombinator.com/item?id=49454785

> Even more ironic is that NAT got normalized as a security feature — “your devices are hidden!” — which is one of the things that made people resist the thing that would fix it.

That tracks. I briefly looked into the Tailscale website and I thought maybe I was wrong, maybe it's not a NAT/ddns toolchain, maybe it's something more complex that I'm too dumb to understand. But if my thesis that it's NATware is right, it makes sense to market it as a security product, it fooled me for one, but it also passes as a quality product for an organization, and they feel they are getting a security product when they are actually signing the purchase request of a developer that is applying networking techniques they learned from managing a videogame server.

vbezhenar - 18 hours ago

I'm still not convinced that IPv6 is a good thing. I think that we should have doubled down on sharing IP addresses. Both for consumbers (NAT) and for servers (NAT, TLS/HTTP reverse-proxying). It just solves all problems with IP address exhaustion. And the fact that consumers can't just directly connect to each other is a feature.