Geoposición de direcciones IP con PHP y Apache en Linux

Se me ocurrió hacer un programa que verifique quién está conectado en el Satélite, específicamente de qué país procede la conexión, igualmente, hacer sus respectivas gráficas históricas y de estadística. Para las gráficas pienso usar JpGraph, sin embargo, para guardar los registros, estoy desarrollando yo mismo el módulo con PHP.

Tengo como servidor web Apache y como sistema base GNU/Linux Debian. Para echar andar las pruebas y el mini proyecto, tuve que instalar:

  • libapache2-mod-geoip, para que Apache reconozca la base de GeoIP.
  • php5-geoip, librería de las funciones que permiten hacer las consultas a la base de datos GeoIP usando PHP.
  • geoip-database, la base de datos de las geoposiciones de cada ISP.

Como usuario root:

aptitude install libapache2-mod-geoip php5-geoip geoip-database

Un ente principal que mantiene la base de datos actualizada de la geoposición de todas las direcciones IP es MaxMind, la base de datos que instalamos por defecto en Debian, probablemente esté desactualizada y para actualizar dicha base, GeoIP viene con unos scripts hechos en Bash ubicados en la ruta absoluta:

/usr/share/doc/libgeoip1/examples/

Se pueden ejecutar:

/usr/share/doc/libgeoip1/examples/geolitecountryv6.sh

Los scripts actualizan listas de ISP, direcciones IP’s de ciudades y países en IPv4 e IPv6. Una vez actualizadas las base de datos, podemos habilitarlas para Apache en el archivo:

/etc/apache2/mods-available/geoip.conf

Originalmente viene comentada la línea 3 y debería quedar de la siguiente forma:


  GeoIPEnable On
  GeoIPDBFile /usr/share/GeoIP/GeoIP.dat

Posteriormente se restaura Apache para que tome los cambios.

Del resto, es solo usar las opciones que ofrece la función GeoIP de PHP para realizar el programa que se quiere.

Advertisements
This entry was posted in Apache, Linux, PHP. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s