Daniel Karrenberg, co-author of RFC1918, said this 2017-10-06 on the NANOG mailing list:
> On 05/10/2017 07:40, Jay R. Ashworth wrote:
> > Does anyone have a pointer to an *authoritative* source on why
> >
> > 10/8
> > 172.16/12 and
> > 192.168/16
> >
> > were the ranges chosen to enshrine in the RFC? ...
>
> The RFC explains the reason why we chose three ranges from "Class A,B &
> C" respectively: CIDR had been specified but had not been widely
> implemented. There was a significant amount of equipment out there that
> still was "classful".
>
> As far as I recall the choice of the particular ranges were as follows:
>
> 10/8: the ARPANET had just been turned off. One of us suggested it and
> Jon considered this a good re-use of this "historical" address block. We
> also suspected that "net 10" might have been hard coded in some places,
> so re-using it for private address space rather than in inter-AS routing
> might have the slight advantage of keeping such silliness local.
>
> 172.16/12: the lowest unallocated /12 in class B space.
>
> 192.168/16: the lowest unallocated /16 in class C block 192/8.
>
> In summary: IANA allocated this space just as it would have for any
> other purpose. As the IANA, Jon was very consistent unless there was a
> really good reason to be creative.
>
> Daniel (co-author of RFC1918)
>>> This is a fuzzy recollection of something I believe I read, which might
well be inaccurate, and for which I can find no corroboration. I
mention it solely because it might spark memories from someone who
actually knows:
>>> A company used 192.168.x.x example addresses in some early
documentation. A number of people followed the manual literally when
setting up their internal networks. As a result, it was already being
used on a rather large number of private networks anyway, so it was
selected when the RFC 1597 was adopted.
>> sun
> Wasn't 192.9.200.x Sun's example network?
of course you are correct. sorry. jet lag and not enough coffee.
I worked in the early 90s getting UK companies connected. The number of people who had copied Suns (and HPs and others) addresses out of the docs was enormous. One of them was a very well known token ring network card vendor.
We're a 2-man crew, about to start one of America's biggest ISP's.
We'd just gotten the closet cleared, the racks assembled, the modems installed, the terminal server wired up, the USENET machine booted, and we're waiting for the T1 to go live. The modems are answering calls, but there's nowhere for our new subscribers to go .. yet.
The tech line rings, its the T1 guy on the other end "Ready to configure your router with you if you're ready .. "
Sure, I say .. whats our IP address ..
"198.162 .. "
"WAIT!", I say. "Are you SURE about that?"
He sure was.
The line comes up, the routes flow, customers get online for their first time.
But for months afterwards I was constantly in fear of our IP address.
Junior network guys would call me up in the middle of the night, adding some NOC somewhere or other "it doesn't work!" - "did you mix a 2 and an 8?", I'd say .. and much swearing would be heard until things started working again.
Man, that was fun. Getting that IP address assigned to us definitely was an act of mischief on the part of some devil somewhere, I'm quite sure ..
Hooking up that first T1 was super exciting! I worked at an early ISP (not a big one) in 1995. They were still on a 56K dedicated line and a very small bank of modems. I still remember when the guy from MCI showed up to test the new T1 we were getting. The first frame relay customers I brought up were also super fun. I sometimes miss networking.
As the authors themselves note, RFC 1597 was merely formalizing already widespread common practice. If the private ranges were not standardized then people would still have created private networks, but just used some random squatted blocks. I can not see that being better outcome.
Most SMB companies did not have IP addresses in 1994 when RFC 1597 was published, although the range was known. However, the well known companies did, and some of those have the older full class B assignments. It was common for those companies to use those public IP addresses internally to this day, although RFC-1918 addresses were also in use.
Since Netware was very popular in businesses and it was possible/common to use only the IPX protocol for endpoints, you could configure endpoints to use a host that had both an IPX and IP address as the proxy, and not use an IP address on most endpoints. That was common due to Netware actually charged for DHCP and DNS add-ons. When Windows became more popular, IP on endpoints likely used RFC-1918 around ~1996.
This is probably apocryphal, and I'm probably getting the details wrong anyway, but tangentially related to this, when I worked for a small network security firm (later purchased by Cisco, as most were), we had a customer that used, I'm told, the IP ranges typically seen in North Korea as their internal network. They TOLD us they did it because the addresses wouldn't conflict with anything they cared about, and no one had told them about 1918 + NAT, which I find dubious.
Weirdly enough, there are a few systems at my workplace which are in the 192.9.200.x subnet! They're only about 20 years old, though. We are actively looking to replace the entire system.
I've done work for several municipalities and police departments in western Ohio and found 192.9.200.0/24 in several. They all had a common vendor who did work back in the 90s and was the source.
Well, I'll try summarize answers and my experience.
At beginning, Internet used network classes, because of hardware limitations (later switched to address blocks). And even in 1990s still existed very old hardware, only could use class addresses.
What classes mean, existed early very large organizations, got more addresses than they could use. And even happen few cases, when such organizations lost rights for these addresses.
And these unlucky organizations was some big whales, like IBM or ATT/Bell or Sun.
And once invented solution - state some big enough network as not allocated to use under NAT (or when network is not connected to Internet). So, departments of big organizations could use TCP/IP stack in their networks, even with old hardware, but don't need to contact Internet officials to got real internet addresses.
192.168 was just first C-class network prefix, was not assigned at the moment (or just released).
Later, to list of unassigned added 172.16/12 network.
Note, the CIDR RFC didn't come out until Sep 1993. Thus even brand new network equipment in the mid 1990's were still very classful.
And even then, knowledge of how to properly use /etc/netmasks in SunOS v4.x (or the equivalent if some other network stack even had one) was very scarce.
In the mid 90's, SMBs connecting to the Internet would have very typically obtained a /24 from their ISP, and had direct connection online, no firewalls, barely any proxy servers (although that was popular for some mid sized customers that would have needed multiple /24s or even a /16 to get all their workstations online).
It wasn't until the company Network Translation, with the PIX came about that anybody even considered doing private IP address in general as a firewall strategy with NAT translation using private IPs. And then it took years and years to become popular. Long bought by Cisco at that point.
I don't think Cisco IOS even had NAT until something like 10.2, when it was a premium license package.
User bmacho cites this Superuser question [1] in a reply to a downvoted comment at the bottom of this thread. It’s much more illuminating than the OP emails; Michael Hampton’s answer in particular is amazing. I had never heard of Jon Postel before.
I don't think this does anything to explain why 192.168/16 was chosen specifically. Three netblocks (10/8, 172.16/12, and 192.168/16) were selected from the class A, B, and C address spaces to accommodate private networks of various sizes. Class C addresses by definition have the two most significant bits set in their first octet and the third set to 0 (i.e., 192 - 223.)
192 in the first octet starts the class C space, but 10 and 172 do not have the same relationship in classes A and B.
Is it? What section do you mean? I don't see anything in there about private networks or 192.168.0.0/16 (in CIDR notation, which didn't exist at the time).
While I've got some eyeballs on the subject, I'm tiring of mistyping this across my local network devices. How many of you folks alias this, and in what way? /etc/hosts works for my *nix machines, but not my phones, I think?
I'm also tired of remembering ports, if there's a way of mapping those. Should I run a local proxy?
> I'm also tired of remembering ports, if there's a way of mapping those. Should I run a local proxy?
If we're talking web-services - absolutely. I put Caddy in front of everything just to be able to simply use domains. You can also use it to map ports to either standard or more convenient ones if that suffices. Configuring reverse-proxy with Caddy [0] takes just a few lines:
After setting up a reverse-proxy or two you might want to expand your infrustructure with the following to to neaten thing up even more:
- DNS-server: most routers can be that; another easy option would be PiHole.
- DHCP-server: same as above (PiHole does DHCP too).
- Reverse-proxie(s): you can have either just one for the entire network or a number closer to the amount of services if you choose to have HTTPS between everything. Wouldn't bother with Nginx for that unless there is a strong incentive.
- ACME-server: provides the certs for the local reverse-proxies if you choose to have HTTPS between everything. Caddy can also act as a very easy to set up ACME-server [1].
If you have all that set up, you can access all the local services securely and via readable URLs. Given all the services get their certs from the ACME-server, the consumers only need to trust (install) one root cert in order to consider all the local connections secure.
Might seem like a lot at first, but the configuration is fairly straightforward and I found it's worth the effort.
Theoretically SRV records can be set in dns to solve the port issue, realistically Nothing uses them so.... You are probably out of luck there. The way SRV records work is you are supposed to ask a network "Where is the foo service at?"(SRV _foo._tcp.my.network.) and dns sez "it's at these machines and ports" (SRV 1(pri) 1(weight) 9980(port) misc.my.network.(target))
My personal low priority project is to put mac address in DNS, I am about as far as "I could fit them in an AAAA record"
As for specific software recomendations, I am probably not a good source. I run a couple of small openbsd machines(apu-2) that serve most of my home networking needs. But, I am a sys-admin by trade, while I like it, I am not sure how enjoyable others would find the setup.
Local proxies are nice for these kinds of things, but most phones are running some kind of mDNS service so try setting up avahi/openmDNS to advertise services.
I just stick all my DNS records in a normal DNS server. In my case I’m terraforming some Route53 zones. So I havd a subdomain off a real domain I own that I use for LAN gear and they all have real DNS.
For ports, anything that can just be run on 443 on its own VM, I do that. For things that either can’t be made to run on 443, or can’t do their own TLS, etc, I have a VM running nginx that handles certificates and reverse proxying.
mDNS works well for names on your local network, you can integrate it with your dhcp server, works on hosts and phones. I don't have a good answer for ports.
That's how I think it should be, but Paul Graham disagrees (or at least he did in 2008 and I haven't seen anything later about him changing his mind).
In [1] he wrote:
> I think it's ok to use the up and down arrows to express agreement. Obviously the uparrows aren't only for applauding politeness, so it seems reasonable that the downarrows aren't only for booing rudeness
The problem with this idea would be all the existing software, hardware and infrastructure out there. You would either need to make it an alias, which wouldn't really change anything, or you would need to update everything everyone everywhere has, which is essentially the IPv6 migration and we all know how that is going.
How would you express that in an IPv4 header? These address ranges serve a real purpose.
edit: OP: just like the downvote button is not for disagreement, the delete button is not for karma management. Not sure why you would respond to my post here and then immediately delete it.
They needed private IP ranges that wouldn't conflict with the real internet. 192.168 was just sitting there unused, so they grabbed it along with 10.x.x.x and 172.16-31.x.x.
isThereClarity|5 months ago
JdeBP|5 months ago
* https://superuser.com/a/1257080/38062
notepad0x90|5 months ago
unknown|5 months ago
[deleted]
zahlman|5 months ago
[deleted]
3np|5 months ago
>>> This is a fuzzy recollection of something I believe I read, which might well be inaccurate, and for which I can find no corroboration. I mention it solely because it might spark memories from someone who actually knows:
>>> A company used 192.168.x.x example addresses in some early documentation. A number of people followed the manual literally when setting up their internal networks. As a result, it was already being used on a rather large number of private networks anyway, so it was selected when the RFC 1597 was adopted.
>> sun
> Wasn't 192.9.200.x Sun's example network?
of course you are correct. sorry. jet lag and not enough coffee.
---
So no answers.
nickdothutton|5 months ago
aa-jv|5 months ago
We're a 2-man crew, about to start one of America's biggest ISP's.
We'd just gotten the closet cleared, the racks assembled, the modems installed, the terminal server wired up, the USENET machine booted, and we're waiting for the T1 to go live. The modems are answering calls, but there's nowhere for our new subscribers to go .. yet.
The tech line rings, its the T1 guy on the other end "Ready to configure your router with you if you're ready .. "
Sure, I say .. whats our IP address ..
"198.162 .. "
"WAIT!", I say. "Are you SURE about that?"
He sure was.
The line comes up, the routes flow, customers get online for their first time.
But for months afterwards I was constantly in fear of our IP address.
Junior network guys would call me up in the middle of the night, adding some NOC somewhere or other "it doesn't work!" - "did you mix a 2 and an 8?", I'd say .. and much swearing would be heard until things started working again.
Man, that was fun. Getting that IP address assigned to us definitely was an act of mischief on the part of some devil somewhere, I'm quite sure ..
icedchai|5 months ago
urbandw311er|5 months ago
pumplekin|5 months ago
Not everyone thought this was a good idea, and I still maintain the alternative path would have led to a better internet than the one we today.
zokier|5 months ago
high_priest|5 months ago
Hilift|5 months ago
Since Netware was very popular in businesses and it was possible/common to use only the IPX protocol for endpoints, you could configure endpoints to use a host that had both an IPX and IP address as the proxy, and not use an IP address on most endpoints. That was common due to Netware actually charged for DHCP and DNS add-ons. When Windows became more popular, IP on endpoints likely used RFC-1918 around ~1996.
B1FF_PSUVM|5 months ago
Yep, a desktop PC with its own IPv4 address. Back in the day, no firewall afaik.
dang|5 months ago
What's the history behind 192.168.1.1? - https://news.ycombinator.com/item?id=17467203 - July 2018 (48 comments)
michaelcampbell|5 months ago
This was in the 10's of 1000's of devices.
zettabomb|5 months ago
Aeolun|5 months ago
> > Wasn't 192.9.200.x Sun's example network?
> of course you are correct. sorry. jet lag and not enough coffee.
EvanAnderson|5 months ago
simne|5 months ago
At beginning, Internet used network classes, because of hardware limitations (later switched to address blocks). And even in 1990s still existed very old hardware, only could use class addresses.
What classes mean, existed early very large organizations, got more addresses than they could use. And even happen few cases, when such organizations lost rights for these addresses.
And these unlucky organizations was some big whales, like IBM or ATT/Bell or Sun.
And once invented solution - state some big enough network as not allocated to use under NAT (or when network is not connected to Internet). So, departments of big organizations could use TCP/IP stack in their networks, even with old hardware, but don't need to contact Internet officials to got real internet addresses.
192.168 was just first C-class network prefix, was not assigned at the moment (or just released).
Later, to list of unassigned added 172.16/12 network.
merlyn|5 months ago
In the mid 90's, SMBs connecting to the Internet would have very typically obtained a /24 from their ISP, and had direct connection online, no firewalls, barely any proxy servers (although that was popular for some mid sized customers that would have needed multiple /24s or even a /16 to get all their workstations online).
It wasn't until the company Network Translation, with the PIX came about that anybody even considered doing private IP address in general as a firewall strategy with NAT translation using private IPs. And then it took years and years to become popular. Long bought by Cisco at that point.
I don't think Cisco IOS even had NAT until something like 10.2, when it was a premium license package.
Sharlin|5 months ago
[1] https://superuser.com/questions/784978/why-did-the-ietf-spec...
morning-coffee|5 months ago
Reading this makes me a bit sad and reminds me that I'm older now and lucky to have grown up during the golden age of the Internet.
alvarete|5 months ago
It created a big trauma when I joined the uni and hit the wall. I suppose this how americans feel about the metric system :p
temp0826|5 months ago
dreamcompiler|5 months ago
https://en.m.wikipedia.org/wiki/Desire_path
weinzierl|5 months ago
192 is 11000000 in binary.
So it is simply the block with the first two bits set in the netmask.
168 is a bit more difficult. It is 10101000, a nice pattern but I don't know why this specific pattern.
marcusb|5 months ago
192 in the first octet starts the class C space, but 10 and 172 do not have the same relationship in classes A and B.
Hikikomori|5 months ago
tmn007|5 months ago
kragen|5 months ago
bluedino|5 months ago
gausswho|5 months ago
I'm also tired of remembering ports, if there's a way of mapping those. Should I run a local proxy?
n4bz0r|5 months ago
If we're talking web-services - absolutely. I put Caddy in front of everything just to be able to simply use domains. You can also use it to map ports to either standard or more convenient ones if that suffices. Configuring reverse-proxy with Caddy [0] takes just a few lines:
After setting up a reverse-proxy or two you might want to expand your infrustructure with the following to to neaten thing up even more:- DNS-server: most routers can be that; another easy option would be PiHole.
- DHCP-server: same as above (PiHole does DHCP too).
- Reverse-proxie(s): you can have either just one for the entire network or a number closer to the amount of services if you choose to have HTTPS between everything. Wouldn't bother with Nginx for that unless there is a strong incentive.
- ACME-server: provides the certs for the local reverse-proxies if you choose to have HTTPS between everything. Caddy can also act as a very easy to set up ACME-server [1].
If you have all that set up, you can access all the local services securely and via readable URLs. Given all the services get their certs from the ACME-server, the consumers only need to trust (install) one root cert in order to consider all the local connections secure.
Might seem like a lot at first, but the configuration is fairly straightforward and I found it's worth the effort.
[0]: https://caddyserver.com/docs/caddyfile/directives/reverse_pr...
[1]: https://caddyserver.com/docs/caddyfile/directives/acme_serve...
denkmoon|5 months ago
For port mapping depends what specifically you’re aiming for. SVCB/HTTPS records are nice for having many https servers on a single system.
somat|5 months ago
Theoretically SRV records can be set in dns to solve the port issue, realistically Nothing uses them so.... You are probably out of luck there. The way SRV records work is you are supposed to ask a network "Where is the foo service at?"(SRV _foo._tcp.my.network.) and dns sez "it's at these machines and ports" (SRV 1(pri) 1(weight) 9980(port) misc.my.network.(target))
https://www.rfc-editor.org/rfc/rfc2782
My personal low priority project is to put mac address in DNS, I am about as far as "I could fit them in an AAAA record"
As for specific software recomendations, I am probably not a good source. I run a couple of small openbsd machines(apu-2) that serve most of my home networking needs. But, I am a sys-admin by trade, while I like it, I am not sure how enjoyable others would find the setup.
Thorrez|5 months ago
t-3|5 months ago
akerl_|5 months ago
For ports, anything that can just be run on 443 on its own VM, I do that. For things that either can’t be made to run on 443, or can’t do their own TLS, etc, I have a VM running nginx that handles certificates and reverse proxying.
jerkstate|5 months ago
der_gopher|5 months ago
emmelaich|5 months ago
dang|5 months ago
unknown|5 months ago
[deleted]
amelius|5 months ago
tzs|5 months ago
That's how I think it should be, but Paul Graham disagrees (or at least he did in 2008 and I haven't seen anything later about him changing his mind).
In [1] he wrote:
> I think it's ok to use the up and down arrows to express agreement. Obviously the uparrows aren't only for applauding politeness, so it seems reasonable that the downarrows aren't only for booing rudeness
[1] https://news.ycombinator.com/item?id=117171
Etheryte|5 months ago
LocalH|5 months ago
3np|5 months ago
marcusb|5 months ago
edit: OP: just like the downvote button is not for disagreement, the delete button is not for karma management. Not sure why you would respond to my post here and then immediately delete it.
alkz|5 months ago
youknow123|5 months ago
Symbiote|5 months ago