Búsqueda de sitios web

Redirigir o bloquear el tráfico según la ubicación geográfica del país utilizando Apache mod_geoip


En esta configuración, aprenderá cómo bloquear o redirigir el tráfico web según la ubicación geográfica del país del visitante utilizando el mod geoip de Apache.

Instalación de Apache mod_geoip

Suponiendo que ya tiene el servidor web Apache instalado y ejecutándose, comenzamos con la instalación de mod_geoip:


UBUNTU/DEBIAN
# apt-get install libapache2-mod-geoip
CENTOS/REDHAT/FEDORA ( epel enabled only )
# yum install mod_geoip.x86_64

Confirme que el módulo geoip y rewrite esté habilitado:


# apache2ctl -M | grep -E "geoip|rewrite"
geoip_module (shared)
rewrite_module (shared)

Si el comando anterior no produce ningún resultado o solo aparece un mod, habilite el módulo que falta con el siguiente comando de Linux:

# a2enmod geoip rewrite
Enabling module geoip.
Enabling module rewrite.

Para activar la nueva configuración es necesario ejecutar:


# service apache2 restart

y reinicie el servidor web Apache para aplicar los cambios:


# service apache2 restart

Redirigir el tráfico según la ubicación geográfica del país.

Ahora que tenemos mod_geoip habilitado, podemos editar el archivo de configuración de un sitio relevante ubicado en /etc/apache2/sites-available/ o el .htaccess correspondiente. archivo para redirigir el tráfico según la ubicación geográfica. En el siguiente ejemplo, redirigiremos todo el tráfico entrante de China e India a la nueva URL http://example.com:


RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|IN)$
RewriteRule ^(.*)$ http://example.com/$1 [L]

Tenga en cuenta que si inserta la configuración anterior en el archivo de configuración del sitio, se le pedirá que reinicie su servidor web Apache para aplicar los cambios:


# service apache2 reload

Bloquear el tráfico según la ubicación geográfica del país

Si decide bloquear el tráfico entrante según la ubicación geográfica del país, puede hacerlo editando el archivo de configuración de un sitio relevante ubicado en /etc/apache2/sites-available/. La siguiente configuración mod_geoip bloqueará los países de China e India:


<Location />
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
Deny from env=BlockCountry
</Location>

Se requiere recarga de Apache para aplicar los cambios anteriores. Como alternativa a lo anterior, también puedes insertar las siguientes líneas en tu archivo .htaccess correspondiente:


SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry
Deny from env=BlockCountry

Apéndice

Códigos de país ISO 3166

Lista de códigos de país ISO 3166 que se utilizarán con el módulo GeoIP Apache:


A1 - "Anonymous Proxy"
A2 - "Satellite Provider"
O1 - "Other Country"
AD - "Andorra"
AE - "United Arab Emirates"
AF - "Afghanistan"
AG - "Antigua and Barbuda"
AI - "Anguilla"
AL - "Albania"
AM - "Armenia"
AO - "Angola"
AP - "Asia/Pacific Region"
AQ - "Antarctica"
AR - "Argentina"
AS - "American Samoa"
AT - "Austria"
AU - "Australia"
AW - "Aruba"
AX - "Aland Islands"
AZ - "Azerbaijan"
BA - "Bosnia and Herzegovina"
BB - "Barbados"
BD - "Bangladesh"
BE - "Belgium"
BF - "Burkina Faso"
BG - "Bulgaria"
BH - "Bahrain"
BI - "Burundi"
BJ - "Benin"
BL - "Saint Bartelemey"
BM - "Bermuda"
BN - "Brunei Darussalam"
BO - "Bolivia"
BQ - "Bonaire -  Saint Eustatius and Saba"
BR - "Brazil"
BS - "Bahamas"
BT - "Bhutan"
BV - "Bouvet Island"
BW - "Botswana"
BY - "Belarus"
BZ - "Belize"
CA - "Canada"
CC - "Cocos (Keeling) Islands"
CD - "Congo -  The Democratic Republic of the"
CF - "Central African Republic"
CG - "Congo"
CH - "Switzerland"
CI - "Cote d'Ivoire"
CK - "Cook Islands"
CL - "Chile"
CM - "Cameroon"
CN - "China"
CO - "Colombia"
CR - "Costa Rica"
CU - "Cuba"
CV - "Cape Verde"
CW - "Curacao"
CX - "Christmas Island"
CY - "Cyprus"
CZ - "Czech Republic"
DE - "Germany"
DJ - "Djibouti"
DK - "Denmark"
DM - "Dominica"
DO - "Dominican Republic"
DZ - "Algeria"
EC - "Ecuador"
EE - "Estonia"
EG - "Egypt"
EH - "Western Sahara"
ER - "Eritrea"
ES - "Spain"
ET - "Ethiopia"
EU - "Europe"
FI - "Finland"
FJ - "Fiji"
FK - "Falkland Islands (Malvinas)"
FM - "Micronesia -  Federated States of"
FO - "Faroe Islands"
FR - "France"
GA - "Gabon"
GB - "United Kingdom"
GD - "Grenada"
GE - "Georgia"
GF - "French Guiana"
GG - "Guernsey"
GH - "Ghana"
GI - "Gibraltar"
GL - "Greenland"
GM - "Gambia"
GN - "Guinea"
GP - "Guadeloupe"
GQ - "Equatorial Guinea"
GR - "Greece"
GS - "South Georgia and the South Sandwich Islands"
GT - "Guatemala"
GU - "Guam"
GW - "Guinea-Bissau"
GY - "Guyana"
HK - "Hong Kong"
HM - "Heard Island and McDonald Islands"
HN - "Honduras"
HR - "Croatia"
HT - "Haiti"
HU - "Hungary"
ID - "Indonesia"
IE - "Ireland"
IL - "Israel"
IM - "Isle of Man"
IN - "India"
IO - "British Indian Ocean Territory"
IQ - "Iraq"
IR - "Iran -  Islamic Republic of"
IS - "Iceland"
IT - "Italy"
JE - "Jersey"
JM - "Jamaica"
JO - "Jordan"
JP - "Japan"
KE - "Kenya"
KG - "Kyrgyzstan"
KH - "Cambodia"
KI - "Kiribati"
KM - "Comoros"
KN - "Saint Kitts and Nevis"
KP - "Korea -  Democratic People's Republic of"
KR - "Korea -  Republic of"
KW - "Kuwait"
KY - "Cayman Islands"
KZ - "Kazakhstan"
LA - "Lao People's Democratic Republic"
LB - "Lebanon"
LC - "Saint Lucia"
LI - "Liechtenstein"
LK - "Sri Lanka"
LR - "Liberia"
LS - "Lesotho"
LT - "Lithuania"
LU - "Luxembourg"
LV - "Latvia"
LY - "Libyan Arab Jamahiriya"
MA - "Morocco"
MC - "Monaco"
MD - "Moldova -  Republic of"
ME - "Montenegro"
MF - "Saint Martin"
MG - "Madagascar"
MH - "Marshall Islands"
MK - "Macedonia"
ML - "Mali"
MM - "Myanmar"
MN - "Mongolia"
MO - "Macao"
MP - "Northern Mariana Islands"
MQ - "Martinique"
MR - "Mauritania"
MS - "Montserrat"
MT - "Malta"
MU - "Mauritius"
MV - "Maldives"
MW - "Malawi"
MX - "Mexico"
MY - "Malaysia"
MZ - "Mozambique"
NA - "Namibia"
NC - "New Caledonia"
NE - "Niger"
NF - "Norfolk Island"
NG - "Nigeria"
NI - "Nicaragua"
NL - "Netherlands"
NO - "Norway"
NP - "Nepal"
NR - "Nauru"
NU - "Niue"
NZ - "New Zealand"
OM - "Oman"
PA - "Panama"
PE - "Peru"
PF - "French Polynesia"
PG - "Papua New Guinea"
PH - "Philippines"
PK - "Pakistan"
PL - "Poland"
PM - "Saint Pierre and Miquelon"
PN - "Pitcairn"
PR - "Puerto Rico"
PS - "Palestinian Territory"
PT - "Portugal"
PW - "Palau"
PY - "Paraguay"
QA - "Qatar"
RE - "Reunion"
RO - "Romania"
RS - "Serbia"
RU - "Russian Federation"
RW - "Rwanda"
SA - "Saudi Arabia"
SB - "Solomon Islands"
SC - "Seychelles"
SD - "Sudan"
SE - "Sweden"
SG - "Singapore"
SH - "Saint Helena"
SI - "Slovenia"
SJ - "Svalbard and Jan Mayen"
SK - "Slovakia"
SL - "Sierra Leone"
SM - "San Marino"
SN - "Senegal"
SO - "Somalia"
SR - "Suriname"
SS - "South Sudan"
ST - "Sao Tome and Principe"
SV - "El Salvador"
SX - "Sint Maarten"
SY - "Syrian Arab Republic"
SZ - "Swaziland"
TC - "Turks and Caicos Islands"
TD - "Chad"
TF - "French Southern Territories"
TG - "Togo"
TH - "Thailand"
TJ - "Tajikistan"
TK - "Tokelau"
TL - "Timor-Leste"
TM - "Turkmenistan"
TN - "Tunisia"
TO - "Tonga"
TR - "Turkey"
TT - "Trinidad and Tobago"
TV - "Tuvalu"
TW - "Taiwan"
TZ - "Tanzania -  United Republic of"
UA - "Ukraine"
UG - "Uganda"
UM - "United States Minor Outlying Islands"
US - "United States"
UY - "Uruguay"
UZ - "Uzbekistan"
VA - "Holy See (Vatican City State)"
VC - "Saint Vincent and the Grenadines"
VE - "Venezuela"
VG - "Virgin Islands -  British"
VI - "Virgin Islands -  U.S."
VN - "Vietnam"
VU - "Vanuatu"
WF - "Wallis and Futuna"
WS - "Samoa"
YE - "Yemen"
YT - "Mayotte"
ZA - "South Africa"
ZM - "Zambia"
ZW - "Zimbabwe"

Artículos relacionados: