So installieren Sie Mod_GeoIP für Apache in RHEL und CentOS
Mit dem GeoIP-Modul können Systemadministratoren den Webverkehr entsprechend dem geografischen Standort des Clients umleiten oder blockieren. Der geografische Standort wird über die Client-IP-Adresse ermittelt.
Mod_GeoIP hat zwei verschiedene versionen eine ist Frei und ein anderer ist Bezahlt und verwendet MaxMind GeoIP /. GeoCity Datenbanken.
- Freie Version: In der kostenlosen Version ist die Geo City und Länderdatenbanken sind verfügbar mit 99,5% Richtigkeit.
- Bezahlversion: In der kostenpflichtigen Version erhalten Sie beide Datenbanken mit 99,8% Genauigkeit mit einigen erweiterten Details über IP Adresse.
Wenn Sie die mehr Unterschiede zwischen den überprüfen möchten Frei und Bezahlt Version, bitte besuchen Maxmind.com.
Dieser Artikel erklärt, wie Sie das einrichten und installieren Mod_GeoIP Modul für Apache in RHEL und CentOS Verwendung der EPEL Repository mit dem Dienstprogramm YUM Paketmanager.
Wir gehen davon aus, dass Sie bereits laufen RHEL und CentOS System mit einem funktionierenden LAMPE ((Linux, Apache, MySQL, und PHP) Konfiguration. Wenn nicht, lesen Sie unsere Artikel, in denen wir die Installation beider Betriebssysteme mit gezeigt haben LAMPE.
Installation von RHEL / CentOS
- Installation von RHEL 7 und CentOS 7 Minimal.
- Installation von RHEL 8 und CentOS 8 Minimal.
LAMPE-Setup unter RHEL / CentOS
- So installieren Sie LAMP (Linux, Apache, MySQL, PHP) unter RHEL und CentOS 7
- So installieren Sie Apache, MySQL / MariaDB und PHP unter RHEL und CentOS 8
Aktivieren Sie das EPEL-Repository in RHEL und CentOS
Standardmäßig mod_Geoip ist nicht verfügbar unter RHEL / CentOS offizielles Repository, daher müssen wir Dritte installieren und aktivieren EPEL Repository.
# yum install epel-release # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [On RHEL 8]
Installieren Sie Mod_GeoIP in RHEL und CentOS
Sobald du hast EPEL Repository auf Ihrem System aktiviert, können Sie einfach installieren mod_geoip indem Sie den folgenden Befehl mit ihren Abhängigkeitspaketen ausführen.
# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
Laden Sie die neueste Geo City and Country-Datenbank herunter
Es ist eine gute Idee, die neueste Version herunterzuladen Geo City und Länderdatenbank auf dem Laufenden bleiben.
# cd /usr/share/GeoIP/ # mv GeoIP.dat GeoIP.dat_org # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz # gunzip GeoLite2-Country.tar.gz # gunzip GeoLite2-City.tar.gz
Aktivieren Sie Mod_GeoIP in Apache
Öffnen und bearbeiten Sie nach der Installation des Moduls die Hauptkonfigurationsdatei des Moduls mit einem Befehlszeilentexteditor wie z wirund aktivieren Sie das Modul serverweit, wie im folgenden Auszug dargestellt.
# vi /etc/httpd/conf.d/geoip.conf
Stellen Sie die Zeile GeoIPEnable von ein aus zu Auf. Stellen Sie außerdem sicher, dass Sie den absoluten Pfad zur GeoIP-Datenbankdatei hinzufügen.
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
Starten Sie das neu Apache Service, um Änderungen widerzuspiegeln.
# systemctl restart httpd OR # service httpd restart
Es wird jedoch nicht empfohlen, das GeoIP-Modul serverweit einzuschalten. Sie sollten das GeoIP-Modul nur in aktivieren
oder
Blöcke, in denen Sie tatsächlich die Verkehrsumleitung oder -blockierung durchführen würden.
Mod_GeoIP-Modul testen
Um das zu testen mod_geoip Modul funktioniert korrekt mit Apache, wir müssen ein erstellen PHP Datei aufgerufen testgeoip.php unter Apache Wurzelverzeichnis (zB / var / www / html).
# vi /var/www/html/testgeoip.php
Fügen Sie den folgenden PHP-Code ein.
What is my IP address - determine or retrieve my IP address Your country : $country ( $country_code ) "; ?>
Versuchen Sie nun, die Datei mit einem Webbrowser aufzurufen (zB http: //localhost/testgeoip.php). Sie werden Ihre bekommen IP Adresse und Land Einzelheiten.
Aktualisieren der GeoIP-Datenbank
Die GeoIP-Datenbank wird Anfang jedes Monats aktualisiert. Daher ist es sehr wichtig, die GeoIP-Datenbank auf dem neuesten Stand zu halten. Verwenden Sie den folgenden Befehl, um die neueste Version der Datenbank herunterzuladen.
# cd /usr/share/GeoIP/ # mv GeoIP.dat GeoIP.dat_org # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz # gunzip GeoLite2-Country.tar.gz # gunzip GeoLite2-City.tar.gz
Automatische Aktualisierung der GeoIP-Datenbank
Wir haben ein kleines Shell-Skript geschrieben, das jeden Monat automatisch die neueste Version der GeoIP-Datenbank herunterlädt. Platzieren Sie einfach eines der folgenden Skripte unter /etc/cron.monthly.
Skript 1
# Automatic GeoIP Database Update #!/bin/sh cd /usr/share/GeoIP mv GeoIP.dat GeoIP.dat_org wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz gzip -d -f GeoLite2-Country.tar.gz
Skript 2
#!/bin/sh GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database" GEOIPDIR=/usr/share/GeoIP TMPDIR= DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6" if [ -d "${GEOIPDIR}" ]; then cd $GEOIPDIR if [ -n "${DATABASES}" ]; then TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX) echo "Updating GeoIP databases..." for db in $DATABASES; do fname=$(basename $db) wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/${db}.dat.gz" -O "${TMPDIR}/${fname}.dat.gz" gunzip -fdc "${TMPDIR}/${fname}.dat.gz" > "${TMPDIR}/${fname}.dat" mv "${TMPDIR}/${fname}.dat" "${GEOIPDIR}/${fname}.dat" chmod 0644 "${GEOIPDIR}/${fname}.dat" done [ -d "${TMPDIR}" ] && rm -rf $TMPDIR fi fi
Weiterleiten von Benutzern nach Land
Der folgende Beispielcode leitet Benutzer basierend auf dem von uns festgelegten Ländercode um WIE ((Asien). Auf diese Weise können Sie alle Benutzer basierend auf ihrem County-Code umleiten.
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat # Redirect one country RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$ RewriteRule ^(.*)$ https://www.tecmint.com$1 [R,L]
Blockieren von Benutzern basierend auf dem Land
In diesem Beispiel werden Benutzer basierend auf dem von GeoIP festgelegten Ländercode blockiert. Das folgende Beispiel blockiert Benutzer von WIE ((Asien) und UNS ((Vereinigte Staaten) Länder.
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry # ... place more countries here Deny from env=BlockCountry
Zulassen von Benutzern basierend auf dem Land
In diesem Beispiel sind nur Benutzer aus den unten genannten Ländern zulässig.
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE AS AllowCountry SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry # ... place more countries here Deny from all Allow from env=AllowCountry
Weitere Informationen zu mod_geoip und seine Verwendung finden Sie unter http://www.maxmind.com/app/mod_geoip. Wenn Sie Probleme beim Einrichten eines mod_geoip-Moduls haben, teilen Sie uns dies bitte über Kommentare mit und vergessen Sie nicht, es mit Ihren Freunden zu teilen.