User:NinjaRobotPirate/IP editors

Wikipedia has information about blocking IP editors, but it's kind of technical. This is a just basic explanation of a few of the concepts involved. Some of it oversimplifies things a bit to make it easier to understand.

What is an IP address?
IP addresses are sort of like phone numbers for computers and other devices that are hooked up to the internet. Your phone number might look something like 123-456-7890. It's broken up into parts like that to help humans understand the internal routing. The same thing is done with IP addresses.

There are two standards for IP addresses, the older IPv4 and the newer IPv6. IPv4 looks like 192.168.0.1. IPv6 looks like 2001:db8:1234:5678:90ab:cdef:ffff:ffff. IPv4 is broken into four segments, each of which range from 0 to 255. IPv6 is broken into eight segments. IPv6 looks more complicated and weirder than it is. It's really nothing more than a very long phone number that uses additional digits beyond 0 through 9. If you're curious, it's in hexadecimal, which means base 16 (0 through 9, and then A through F).

Why would someone's IP address change?
IP addresses come in two types: dynamic IP addresses and static IP addresses. Static IP addresses, like your phone number, stay the same more-or-less indefinitely. Dynamic IP addresses are like phone numbers that can potentially change. They will often change outside of the user's control, though the user may be able to trigger it manually. So, if you see similar edits from multiple IP addresses, it may be completely innocent. The user's internet service provider (ISP) may have their network set to assign random IP addresses to their customers every time they connect to the internet. Other networks may be set so that customers retain their IP address for a month or longer.

Because IP addresses can change over time – and often do – a completely different person may be assigned the same IP address that someone else was previously using. That's why we generally don't block IP addresses indefinitely. Even static IP addresses can eventually be reassigned, such as if an ISP goes out of business or the customer cancels their service. A static IP address could also be allocated to a public library or a school, where there are potentially hundreds of different users. An IP address may be highly disruptive one day and constructive the next because different people are editing from it.

What are IP ranges?
This is kind of a complicated subject. We use CIDR to break up large groups of IP addresses into more manageable sizes. The technical details aren't really important, but you can read more about it on Wikipedia if you're curious. If you want to perform a range block, you'll need a starting point and an ending point. CIDR gives us a way to encode that information. MediaWiki, the software that Wikipedia runs on, limits our ability to perform range blocks. When the starting point and ending point are too far apart, MediaWiki will disallow a range block.

IPv4
For an IPv4 address, this means at least the first two groups of numbers must be the same. So, if you've got two IP addresses, such as 176.16.10.200 and 176.17.5.150, where the first two groups of numbers do not match (176.16 vs 176.17), the software will not allow us to make a range block. We can individually block the entirety of 176.16.x.x and 176.17.x.x, which would accomplish the same thing. However, that would be two consecutive range blocks of the maximum size allowable by the software, and it probably shouldn't be done unless you're quite certain that it's necessary. One example of this would be a web hosting service or open proxy. These are commonly used to evade blocks, and a large hosting service may be allocated many IP addresses.

IPv6
For IPv6, the concepts are similar, but customers are often assigned IP addresses where the first four groups of numbers are the same (for example, 2001:DB8:A000:B000:100D:200A:C300:5A00 and 2001:DB8:A000:B000:A105:2B1C:C000:50). These are usually safe to range block. Technically, the software will allow us to make extremely large range blocks for IPv6 addresses, but this often turns out to be impractical because of collateral damage. Customers on wireless service providers, such as Verizon and T-Mobile, may bounce within very large IP ranges. There isn't much you can do about that except look for collateral damage and hope for the best. In the real world, you should aim to keep the first three or four groups of numbers similar.

Scanning an IP range
First you need to know the CIDR. The easiest way to find this is by clicking on the WHOIS link at the bottom of the IP editor's contributions, next to the link for geolocation info. This is not infallible, and you may need to tweak it, especially for IPv6 wireless service providers. If the WHOIS information isn't particularly useful, you can calculate a CIDR by using blockcalc. This useful script will tell you the smallest possible CIDR that includes all the inputted IP addresses. After you have the CIDR, you can input it into Special:Contributions.

As far as I'm aware, there's no guidance on what constitutes "too much collateral damage". It's up to admin discretion, and different admins may have different thresholds. Some admins may decline to block very wide ranges on principle. Checkusers may be able to give a more informed opinion about the collateral damage, but keep in mind the checkuser tool is fairly limited. If you want my opinion, there are no absolutes. You have to weigh how much disruption is coming from an IP range versus how much collateral damage it would cause.

How and where to report
Probably the best place to request a range block is WP:ANI. Though conciseness is important in any communication, you need to give enough details that the responding admin can easily tell what's going on. If you post a few representative diffs and can clearly describe what sort of disruption is going on ("the vandal removes any mention of Brazil in articles about the Olympics"), it will help a lot. Another place you can request a range block is WP:SPI. This is more useful if you need assistance from a checkuser.

A less technical example
Think of it this way, using a phone analogy. You've been receiving harassing phone calls from a troll lately. Your phone allows you to block callers, but his phone number changes every time he ends a call. You want to find the smallest possible range of phone numbers that will block him from calling you but allow your friends to get through. You obviously can't block every phone number that starts with 1. That would make it impossible for much of the country to call you. So, you refine it to something like 111. That's better, but it's still too wide. It would block multiple cities from calling. So, you refine it to 111-222. That means nobody from 111-222-0000 through 111-222-9999 can call you. Congratulations, you've now performed a range block. I sure hope your mother was not in that range, because she'll be very angry if she can't call you any more. If she is (and you're sure she's not the troll) you can refine it further, such that only 111-222-0000 through 111-222-0050 are affected.

On Metawiki

 * Range block
 * mw:Manual:$wgBlockCIDRLimit

On tools.wmflabs.org

 * XTools Range Contribs
 * Range-block calculator