[mod_python] weird request.connection.remote_ip value

Graham Dumpleton grahamd at dscpl.com.au
Sat Jul 8 22:48:57 EDT 2006


On 09/07/2006, at 12:38 PM, Graham Dumpleton wrote:

>
> On 09/07/2006, at 12:13 PM, David Harvey wrote:
>
>> I'm running mod_python 3.2.8 on Mac OS 10.4.6, python 2.4.3,  
>> apache 2.2.2, on my desktop machine.
>>
>> I've got apache set up to load this script:
>>
>> ========================= begin
>>
>> from mod_python import apache
>>
>> def handler(request):
>>     request.write(request.connection.remote_ip)
>>     return apache.OK
>>
>> ========================= end
>>
>> When I browse to "http://127.0.0.1/", the script prints out  
>> "127.0.0.1" as expected.
>>
>> If I connect from a local network, e.g. to "http://192.168.0.6/"  
>> it prints out "192.168.0.4" (the address of the other machine) as  
>> expected.
>>
>> But when I browse to "http://localhost/" from this machine, it  
>> prints "::1".
>>
>> What does "::1" mean? Why isn't it giving me an IP address?  
>> Shouldn't I be getting "127.0.0.1" as above? How can I guarantee  
>> to get an IP address?
>
> This field is populated by apr_sockaddr_ip_get() in Apache Runtime  
> library. The field
> can be populated with either IPv4 or IPv6 addresses. On a Mac, when  
> you use the
> string "localhost" it is as far as I know actually using an IPv6  
> connection to Apache and
> "::1" is what the Mac is using to identify that IPv6 client.
>
> What do you want the remote IP address for? Depending on what you  
> want to do,
> there may be better ways of doing it.

After more digging, '::1' means loopback interface under IPv6.

Further information can be found at:

   http://www.juniper.net/techpubs/software/erx/erx50x/swconfig- 
routing-vol1/html/ipv6-config5.html

IPv6 Address Compression

IPv6 addresses often contain consecutive hexadecimal fields of zeros.  
To simplify address entry, you can use two colons (::) to represent  
the consecutive fields of zeros when typing the IPv6 address. Table  
3-1 provides compressed IPv6 address format examples.

Table 3-1 Compressed IPv6 formats

IPv6 Address Type
Full Format
Compressed Format

Unicast
10FB:0:0:0:C:ABC:1F0C:44DA
10FB::C:ABC:1F0C:44DA

Multicast
FD01:0:0:0:0:0:0:1F
FD01::1F

Loopback
0:0:0:0:0:0:0:1
::1

Unspecified
0:0:0:0:0:0:0:0
::

Graham




More information about the Mod_python mailing list