Alguna vez tuve la necesidad de habilitar contenido «para Uruguay» y contenido «para extranjeros», o tener que permitir acceso solo a clientes de Uruguay. Para esta tarea se pueden generar reglas de firewall, configurar accesos en un Apache o reglas de rewrite del servidor web.
Estas configuraciones estarán basadas en las direcciones IP de los rangos habilitados en Uruguay. Conocer esos rangos de IPes uruguayas es posible mediante los listados que mantiene Lacnic.
Hice un script que revisa la lista de Lacnic y la formatea con una dirección debajo de otra. Está disponible en el proyecto de Gitlab uy-ip-networks para quién lo desee clonar y usar
El script puede ser utilizado en la línea de comandos y, eventualmente, procesar su salida con un pipe para dar el formato requiere la configuración de filtrado.
También está pensado para colocar en el cron de forma desatendida y revisar periódicamente el sitio de Lacnic. Incluso generar el listado a partir de un cache local, en caso que error de conexión con la página de Lacnic.
Entonces, corriendo un comando como:
./uy-ip-networks.sh 2>/dev/null | \ xargs -I {} echo "deny {};"
se obtiene lista de denegación de las direcciones IP de Uruguay para utilizar en la configuración de un servidor Nginx, para los casos de sitios solo para extranjeros.
Y agradezco a @apr el aporte de un screencast del uso de este script:
Seré curioso… ¿Por qué optaste por liberar el script bajo licencia MIT?
Por ser una licencia de software libre permisiva muy compatible con otras licencias que quieras utilizar.
Licencia MIT
En resúmen, lo comparto y si te sirve úsalo y haz todo lo que puedas y quieras con él.
Algo parecido sin procesamiento (y sin ser la fuente oficial, concedo) se puede conseguir con algunos sitios que tienen listados parecidos prontos para utilizar.
Por ej.: http://ipdeny.com/ipblocks/data/countries/uy.zone
Hay incluso sitios que entregan esta información en formato de reglas directamente utilizables en algun firewall o configuración web:
https://www.countryipblocks.net/country_selection.php
Muy interesantes esos sitios, muchas gracias 0xC0C0.
Estaba viendo que countryipblocks tiene diferencias bastantes relevantes con el listado de Lacnic, por ejemplo:
Lacnic: 200.93.240.0/8
Countryipblocks: 200.93.240.0/24
Countryipblocks: 131.0.212.0/22 y no la tiene Lacnic
Lacnic: 190.112.200.0/10 y no la tiene Countryipblocks
Reconozco que la idea de countryipblocks esta muy interesante y soluciona el problema para quién no tiene mucho placer por la línea de comando.
Exacto, le faltan rangos a LACNIC o falta otro doc con info.
Gracias por la script/url, no encontraba la base en la web.