[Catalyst] IPv6 client addresses

Matija Grabnar matija at serverflow.com
Mon Jan 14 19:38:40 GMT 2013

On 01/14/2013 08:13 PM, Bill Moseley wrote:
> Anyone already in a dual-stack environment?  Any other gotchas to 
> consider?
> I use $c->req->address to limit access -- for example to limit some 
> actions to our local LAN or for customers to limit access to our API 
> via a customer-supplied CIDR.
Last I checked, the development server in scripts/ was IPv4 only. Only 
if your script is being called from Apache or other dual-stack 
supporting web server will you be seeing IPv6 accesses.

$c->req->address will return whichever address was used to access the 
server, either v4 or v6. Depending on the OS, the IPv4 address may be 
presented in IPv6 form (for example ::ffff: ).

If you're saving addresses, make sure you have enough space in your 
database to save either.

If you intend to, as you say, match addresses (for access or denial of 
access), know that exact matches probably will not be good enough. You 
will probably have to block entire /64s or more (think "address privacy 
extensions"). You should probably leave the size of the match configurable.

If you use geolocation or remote black lists, make sure it supports 
IPv6, too (some do, some don't).

Other than that, I can't think of any gotchas.

More information about the Catalyst mailing list