0 and 255 Test

Expected result on dual-stack client
Expected result on IPv4-only client
Expected result on IPv6-only client
Some networks may block .255 IP addresses, resulting in a failure. Fortunately these networks are rare.

The 0 and 255 Test tests your internet connection to see whether or not your computer can reach IPv4 addresses ending in .0 or .255, as well as IPv6 addresses with the interface ID portion (last 64 bits) all zero.

https://webapps1.peterjin.org/0-255-test.html

Traditionally, .0 and .255 are reserved as network identifier and broadcast, respectively. Some TCP/IP stacks, unfortunately, have trouble connecting to those addresses simply because they end in .0 and .255, even though in say, 192.168.0.0/23, 192.168.0.255 and 192.168.1.0 are not network identifier or broadcast. This test seeks to measure the usability of .0 and .255 across various networks to see whether it may be appropriate for an ISP to assign such an address to an Internet connection, even if it is used for a limited purpose.

I can just imagine the number of network engineers who look at this, see that the IP ends in .0 (or .255), think about subnet masks and how /23 allows the middle .255 and .0 to be used, then when they query the WHOIS database for my IP range, see that it's only a /24, then go What???? So I guess what I learned about subnetting is wrong? How does he do that?

One simple way of answering this question is to conceptualize routing a bit deeper: On the link on apps-vm6 (the server announcing the /24), the Internet routing infrastructure routes any IP packet in 23.161.208.0/24 onto the server's main network interface. However, after it has reached my server, what it can do is totally up to the server operator. It can set up a normal subnet, or it can pass all the packets to a fleet of monkeys who operate under rules like "If the IP address = 23.161.208.241 and port = 80, then give it to this service" but not "If the IP address = 23.161.208.255, broadcast it to everyone", and if the monkeys operate fast enough, then it is indistinguishable from any normal network. The network as it appears on the Internet is still compliant with Internet standards from an outside perspective.

Let's just hope that the ability to use .0 and .255 as a means of expanding available IPv4 space does not become an excuse for not deploying IPv6 -- I got an "IPv6 transition" /24 for a reason.

Implementation notes

Using the AnyIP trick, we assigned the entire 23.161.208.0/29 and 23.161.208.240/28 network ranges to a "superhost" in one of my VPS's. The AnyIP trick has an interesting quirk with respect to subnetting: it is not a link-layer subnet, but rather a local route that includes all the IP addresses in a particular range, including the network identifier and broadcast addresses for a particular range.

See also