In theory it's fine to have multiple DHCP servers as long as they don't step on each other. But in reality a bunch of the things mentioned in this post are ways for the network to be hosed. Unfortunately, enough LANs are semi-hosed that it's worth working around known problems.
You don’t have to have one. My first LAN didn’t. I had no idea what I was doing and picked 17.0.0.0 addresses for local ones and I couldn’t connect to Apples website.
At work I manage a network with two DHCP servers. One is a dnsmasq that assigns the IP address, hostname, and basic network parameters to all network devices, and the other is a LTSP server (https://ltsp.org/) that provides network boot images only for certain devices that require it. It might not look pretty, but it works really well.
What really matters is that there's a coherent policy for assigning addresses, which is absolutely compatible with having multiple DHCP servers on the same subnet (e.g. each server configured to hand out non-overlapping IP ranges).
It's less about the IP ranges they're giving out not overlapping and more about the requests that they respond to not overlapping (or at least that they don't contradict one another). The classic 'someone plugged a consumer wifi router into the office/university network' problem often is made worse because the consumer wifi router gives out different addresses.
Port- or Client-isolation on Ethernet switches and Wi-Fi access points respectively. Often seen in corporate environments and (properly configured) guest networks.
Switches and firewalls can do all kinds of things. Probably the most common case is that public/guest wifi networks often have client isolation set up so that different devices on the network can't contact each other. Same subnet, but only access to the gateway and the internet in practice.
(Also can happen if ARP is not working correctly, which can be a right PITA to debug).
There are recent "client isolation" features that prevent P2P communication. Some hosting providers also block customers on the same LAN from attacking each other.
Did arp poisoning in school and used a tool to show images from websites people visited on the projector. Teacher thought it was fun until someone went to goatse.
Most consumer wifi routers I’ve used have a setting to prevent peer-to-peer traffic. Whether this still counts as being on the same subnet is kind of a philosophical question.
An IP subnet is just a block of addresses anyway. Any two addresses both are and are not in the same block, depending on how big of a block you choose.
Maybe I'm pulling at a fake distinction here but the progenitor blog posts of this format that I'm thinking of were incorrect models of constructs that almost everyone uses in their everyday life constantly ( names, dates, time etc )
Whereas I find it kinda unlikely that someone both knows what a DHCP server is, and holds a belief that there is only ever exactly one on their network?
Hmmm, In my experience programmers are often not particularly good at networking, and this can result in all kinds of bad assumptions (or awkward workarounds for things that could be much better solved at the network level).
You're conflating "predictable" with "reproducible".
"Predictable" assumes there is an observer making a guess, but we all live by the knowledge that our assumptions may be wrong. We care less about that, and more about whether the system behaves consistently.
Consistent behavior is either a bug or a feature depending on what was expected. The system just is, man, and that's what we need.
"Nobody sits like this rock sits. You rock, rock. The rock just sits and is. You show us how to just sit here and that's what we need."
I get the idea, but this isn't necessarily useful as advice and toys with definitions. It's ESPN levels of conversation-baiting. Lots of assumptions can be reasonably made about residential LANs without being true of enterprise LANs/DMZs.
If a residential LAN is RFC1918 and has no NAT, then it is still a LAN... without internet access.
Then the "A & !A" fallacy of "MAC addresses can’t be changed. MAC addresses can be changed."
Just kind of a mess. Would be more interesting to explore the edge cases rather than throw out half-truths and 0.05% instances.
I've never heard of a LAN without IP addresses. Is that a thing? I'd assume that no IP addresses means you can't even use TCP/IP at all, right? Is there something else you'd use instead?
I suspect recentish versions of Windows still have the driver available, just not installed by default.
However the article is about falsehoods programmers believe about LANs. If you are writing some kind of driver and assume all traffic you receive is IP traffic and don't verify the header, you are going to have a bad time.
You can send packets over Ethernet, without IP. That's what people did before IP was invented and took over most networked communication. It's less convenient, because you can't reuse the IP stack, so almost nobody does.
Ethernet uses frames, not packets. A falsehood that programmers believe about networking is that everything is a packet. In fact, the "PDU" or protocol data unit for each OSI layer is defined and named differently.
So Ethernet communicates with frames. You can simply send frames across a purely Ethernet network. Or, you can take a PDU from an upper layer, encapsulate it as Ethernet frame, and send it across. Most LAN protocols are flexible like that.
A falsehood networkers believe about programming is that you have to call things what the relevant standard calls them, and you have to obey all the random differences that come from different people writing the different standards. IP packets and Ethernet packets aren't the same thing, but IP packets and IP frames are the same thing, because packets and frames are the same thing.
ronsor | 10 hours ago
There'd better be or your network is probably hosed.
wmf | 10 hours ago
Hikikomori | 10 hours ago
kryogen1c | 10 hours ago
briandw | 10 hours ago
smkelly | 10 hours ago
pezezin | 9 hours ago
0xcde4c3db | 9 hours ago
rcxdude | 8 hours ago
Sharlin | 9 hours ago
StilesCrisis | 10 hours ago
Barring "very buggy software," when is this false?
Waterluvian | 10 hours ago
Edit: fair point. Maybe not.
rcxdude | 9 hours ago
wat10000 | 9 hours ago
taneq | 9 hours ago
basilikum | 10 hours ago
alanwreath | 9 hours ago
<guy with messy hair>Aliens</guy with messy hair>
dipierro | 10 hours ago
StilesCrisis | 9 hours ago
mitxela | 7 hours ago
justinlivi | 10 hours ago
rcxdude | 10 hours ago
(Also can happen if ARP is not working correctly, which can be a right PITA to debug).
Hikikomori | 10 hours ago
wmf | 10 hours ago
jrockway | 9 hours ago
This isn't even that recent. I remember doing ARP poisoning exactly once and then being surprised that it didn't work everywhere.
jrockway | 9 hours ago
This isn't even that recent. I remember doing ARP poisoning exactly once and then being surprised that it didn't work everywhere.
I think the falsehood here is that same IPv4 subnet = same link layer network, but that doesn't have to be the case.
Hikikomori | 9 hours ago
mitxela | 9 hours ago
taneq | 9 hours ago
mitxela | 7 hours ago
elaida73 | 10 hours ago
rcxdude | 10 hours ago
elaida73 | 9 hours ago
Whereas I find it kinda unlikely that someone both knows what a DHCP server is, and holds a belief that there is only ever exactly one on their network?
rcxdude | 8 hours ago
_kb | 9 hours ago
throw0101a | 9 hours ago
amelius | 10 hours ago
Programmers think the models they use are perfect.
wat10000 | 9 hours ago
judge2020 | 9 hours ago
sublinear | 8 hours ago
"Predictable" assumes there is an observer making a guess, but we all live by the knowledge that our assumptions may be wrong. We care less about that, and more about whether the system behaves consistently.
Consistent behavior is either a bug or a feature depending on what was expected. The system just is, man, and that's what we need.
"Nobody sits like this rock sits. You rock, rock. The rock just sits and is. You show us how to just sit here and that's what we need."
orthogonal_cube | 9 hours ago
Sharlin | 9 hours ago
thfuran | 8 hours ago
mitxela | 9 hours ago
* two people who say they are on the same LAN agree on what the LAN is
unethical_ban | 9 hours ago
If a residential LAN is RFC1918 and has no NAT, then it is still a LAN... without internet access.
Then the "A & !A" fallacy of "MAC addresses can’t be changed. MAC addresses can be changed."
Just kind of a mess. Would be more interesting to explore the edge cases rather than throw out half-truths and 0.05% instances.
I like the GNOME 2006 era though.
aduwah | 9 hours ago
mitxela | 7 hours ago
The biggest fallacy here, though, and not stated, is that "LAN" is a meaningful concept.
unethical_ban | 2 hours ago
If one thinks all the assumptions in the article are bogus, then I agree there's no definition of the term.
>99% of the time, being natted and/or having private address space is the definition.
LoganDark | 9 hours ago
I've never heard of a LAN without IP addresses. Is that a thing? I'd assume that no IP addresses means you can't even use TCP/IP at all, right? Is there something else you'd use instead?
solraph | 9 hours ago
LoganDark | 9 hours ago
solraph | 8 hours ago
However the article is about falsehoods programmers believe about LANs. If you are writing some kind of driver and assume all traffic you receive is IP traffic and don't verify the header, you are going to have a bad time.
peanut-walrus | 8 hours ago
mitxela | 7 hours ago
ButlerianJihad | 7 hours ago
So Ethernet communicates with frames. You can simply send frames across a purely Ethernet network. Or, you can take a PDU from an upper layer, encapsulate it as Ethernet frame, and send it across. Most LAN protocols are flexible like that.
https://en.wikipedia.org/wiki/Frame_(networking)
https://en.wikipedia.org/wiki/Network_packet
https://en.wikipedia.org/wiki/Protocol_data_unit#Internet_pr...
And TFA provides a list of upper-layer protocols that may be encountered on a LAN today: "IP, IPX/SPX, Phase IV, AppleTalk, VINES, NetBEUI, or SNA".
NetBIOS and NetBEUI are particularly interesting here, because NetBIOS Frames did use IEEE 802.2 LLC, while NBT uses TCP/IP for NetBIOS transport.
https://en.wikipedia.org/wiki/NetBIOS
mitxela | 7 hours ago
suprjami | 8 hours ago
rayoleary | 6 hours ago
AnonC | 3 hours ago