Page MenuHomePhabricator

IPv6 blocks don't work
Closed, ResolvedPublic

Description

"<ipbanononly>" appears instead of "anononly" in Special:GlobalBlock.

But more importantly, IPv4 global blocks appear correctly in Special:GlobalBlockList, but IPv6 blocks do not.


Version: unspecified
Severity: normal

Details

Reference
bz34362

Related Objects

StatusSubtypeAssignedTask
ResolvedNone
ResolvedNone

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 12:11 AM
bzimport added projects: GlobalBlocking, IPv6.
bzimport set Reference to bz34362.
bzimport added a subscriber: Unknown Object (MLST).

Update: I have just found out (using MW 1.18.0 and the current version of GB) that IPv6 blocks also are not effective, even though the blocking form accepts IPv6.

As a side suggestion, allow the ranges to be subject to something like $wgBlockCIDRLimit. Often, cross-wiki raids have many people from many addresses.

(In reply to comment #0)

"<ipbanononly>" appears instead of "anononly" in Special:GlobalBlock.

This looks fine on trunk

Two things:

  1. The code "$ip_pattern = substr( $hex_ip, 0, 4 ) . '%';" in getGlobalBlockingBlock is not very useful for IPv6
  2. The schema only gives 32 chars for ipv6 hex addresses. However IP::toHex() adds a v6- prefix, so the column width is too low. This causes the values to be truncated and the blocks don't work.

(In reply to comment #2)

(In reply to comment #0)

"<ipbanononly>" appears instead of "anononly" in Special:GlobalBlock.

This looks fine on trunk

I don't have a trunk build; I have r77687. I'm going to try to install the latest build.
(In reply to comment #3)

Two things:

  1. The code "$ip_pattern = substr( $hex_ip, 0, 4 ) . '%';" in

getGlobalBlockingBlock is not very useful for IPv6

  1. The schema only gives 32 chars for ipv6 hex addresses. However IP::toHex()

adds a v6- prefix, so the column width is too low. This causes the values to be
truncated and the blocks don't work.

It looks like, then, we'll need to make a separate table in the schema for IPv6...

Update: Using r100842, there's no problem with the anon only field, but the IPv6 issue is pretty big, and is probably a major reason why the WMF cannot deploy WMF to commercial use yet.

Probably just lengthening the field is more than enough, maybe a flag to say is ipv6 or something

Less than 10k rows on wmf usage, so schema changes are relatively cheap

(In reply to comment #3)

  1. The schema only gives 32 chars for ipv6 hex addresses. However IP::toHex()

adds a v6- prefix, so the column width is too low. This causes the values to be
truncated and the blocks don't work.

I do like the comment here:

gb_range_start varbinary(32) NOT NULL, -- Needs 32, not 8 for IPv6 support

I expanded those fields to varbinary(35) instead of 32, and it works like a charm.