導航:首頁 > 編程語言 > geoipphp擴展

geoipphp擴展

發布時間:2022-04-20 14:07:57

① 如何在linux上按國別阻止網路流量

作為一名維護生產環境Linux伺服器的系統管理員,在有些情況下,你需要根據地理位置,有選擇性地阻止或允許網路流量。比如說,你遇到了拒絕服務攻擊,這些攻擊主要源自在某一個國家注冊的IP地址。在其他情況下,出於安全方面的原因,你又想要阻止外國來歷不明SSH登錄請求;或者貴公司對在線視頻擁有發行權,因而只可以分發給某些國家;或者由於地域限制方面的公司政策,你需要防止本地主機將文檔上傳到非美國遠程雲存儲系統。

所有這些場景都需要能夠安裝一個防火牆,可以按國別對流量進行過濾。有幾種方法可以做到這一點。舉例說,你可以使用TCP包裝器(TCP wrapper),針對個別應用程序(比如SSH、NFS和httpd)設置有條件的阻止。其缺點是,你想要保護的那個應用程序在開發當初必須支持TCP包裝器。此外,TCP包裝器並非普遍出現在不同的平台上(比如說,Arch Linux已停止對TCP包裝器的支持)。另一種辦法就是,利用基於國家的GeoIP信息來設置ipset,然後將它運用於iptables規則。後一種方法更有希望,因為基於iptables的過濾與應用程序無關,而且易於設置。
我在本教程中將介紹另一種基於iptables的GeoIP過濾機制,這種機制實施了xtables-addons。有些讀者對它還不熟悉,所以有必要先介紹一下,xtables-addons是一套面向netfilter/iptables的擴展。xtables-addons內含了一個名為xt_geoip的模塊,該模塊擴展了netfilter/iptables的功能,可以根據來源/目的地國家,過濾、NAT或管理數據包。如果你想使用xt_geoip,不需要重新編譯內核或iptables,只需要構建xtables-addons模塊,並使用當前的內核構建環境(/lib/moles/`uname -r`/build)。也不需要重啟。一旦你構建並安裝好了xtables-addons,xt_geoip立即就可以與iptables結合使用。
至於xt_geoip和ipset之間的區別,官方來源(http://xtables-addons.sourceforge.net/geoip.php)提到,xt_geoip在內存佔用空間方面少於ipset。不過在匹配速度方面,基於散列的ipset可能具有優勢。
在本教程其餘部分,我會演示如何使用iptables/xt_geoip,根據來源/目的地國家,阻止網路流量。
將Xtables-addons安裝到Linux上
下面介紹如何編譯xtables-addons,並將它安裝到不同的Linux平台上。
想構建xtables-addons,你就需要先安裝幾個依賴程序包。
·將依賴程序包安裝到Debian、Ubuntu或Linux Mint上
$ sudo apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

·將依賴程序包安裝到CentOS、RHEL或Fedora上
CentOS/RHEL 6需要先安裝EPEL軟體庫(面向perl-Text-CSV_XS)。
$ sudo yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

編譯和安裝Xtables-addons
從官方網站(http://xtables-addons.sourceforge.net)下載最新的xtables-addons源代碼,然後構建/安裝它,如下所示。
$wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons
-2.10.tar.xz
$ tar xf xtables-addons-2.10.tar.xz
$ cd xtables-addons-2.10
$ ./configure
$ make
$ sudo make install

請注意:如果是默認情況下已啟用SELinux的基於紅帽的系統(CentOS、RHEL、Fedora),有必要調整SELinux策略,如下所示。要不然,SELinux會阻止iptables裝入xt_geoip模塊。
$ sudo chcon -vR --user=system_u /lib/moles/$(uname -r)/extra/*.ko
$ sudo chcon -vR --type=lib_t /lib64/xtables/*.so

為Xtables-addons安裝GeoIP資料庫
下一步是安裝GeoIP資料庫,xt_geoip將用到該資料庫,用於IP與國別映射。很方便的是,xtables-addons源程序包隨帶兩個幫助腳本,可分別用來從MaxMind下載GeoIP資料庫,並將它轉換成xt_geoip可識別的二進制格式。這些腳本位於源程序包裡面的geoip文件夾下面。按照下列說明,即可構建GeoIP資料庫,並將它安裝到你系統上。
$ cd geoip
$ ./xt_geoip_dl
$ ./xt_geoip_build GeoIPCountryWhois.csv
$ sudo mkdir -p /usr/share/xt_geoip
$ sudo cp -r {BE,LE} /usr/share/xt_geoip

據MaxMind聲稱,其GeoIP資料庫的准確性達到99.8%,資料庫更每月都更新。為了確保本地安裝的GeoIP資料庫內容最新,你就需要設置每月執行的計劃任務,以便每月更新一次本地GeoIP資料庫。
阻止來自或發往某個國家的網路流量
一旦xt_geoip模塊和GeoIP資料庫都已安裝好,你就可以立即使用iptables命令中的geoip匹配選項。
$ sudo iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]

你想要阻止的國家使用兩個字母ISO3166代碼來指定,比如說US(美國)、CN(中國)、IN(印度)和FR(法國)。
比如說,如果你想阻止來自葉門(YE)和尚比亞(ZM)的入站流量,下面這個iptables命令就能實現。
$ sudo iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP

如果你想阻止發往中國(CN)的出站流量,只要運行下面這個命令。
$ sudo iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

匹配條件也可以被「抵消」,只要將「!」放在「--src-cc」或「--dst-cc」的前面。比如說:
如果你想在伺服器上阻止所有非美國的入站流量,可以運行這個命令:
$ sudo iptables -I INPUT -m geoip ! --src-cc US -j DROP

針對Firewall-cmd用戶
像CentOS/RHEL 7或Fedora這一些發行版已將iptables換成firewalld,作為默認防火牆伺服器。在這類系統上,你同樣可以利用xt_geoip,使用firewall-cmd阻止流量。上面三個例子可以用firewall-cmd來改寫,如下所示。
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc YE,ZM -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP

結束語
我在本教程中介紹了iptables/xt_geoip,這是一種簡單方法,可以根據來源/目的地國家,對網路數據包進行過濾。如果需要的話,可以將這件有用的武器部署到你的防火牆系統中。最後提醒一句,我應該提到:基於GeoIP的流量過濾並不是在你伺服器上阻止某些國家的萬無一失的方法。GeoIP資料庫天生就不準確/不完整,如果使用VPN、Tor或任何受到危及的中繼主機,就很容易欺騙來源/目的地國家。基於地域的過濾甚至會阻止本不該被禁止的合法流量。明白這個局限性後,再決定將它部署到你的生產環境中也不遲。

② php如何實現IP地區登錄

根據ip地址是可以判斷出來歸屬地的,一般有geoip這樣的庫。比如123.125.114.144這個ip可以根據geoip判斷出來是北京,然後58會有個地區的庫,把他的地區id跟這個ip解析出來的城市對應起來。

③ 在WordPress中使用PHP腳本來判斷訪客來自什麼國家

在 PHP 通過 IP 區分國家

如何用 PHP 通過 IP 區分國家和地區呢? Maxmind.com 提供一套 GeoIP 的解決方案, 只需要簡單幾步即可在 PHP 中通過 IP
判斷訪客的國家.

1. 下載資料庫和 PHP 庫文件

下載 GeoID.dat.gz,
解壓為 GeoIP.dat 文件.
下載 geoip.inc.
2. 通過 PHP 代碼獲取國家信息
以下是一段示範代碼,
演示如何獲取國家代號和國家名稱.

?

<?php

// 引入 PHP 庫文件
include("geoip.inc");

// 打開本地資料庫, 數據保存在 GeoIP 文件中.
$geoData = geoip_open('GeoIP.dat', GEOIP_STANDARD);

// 獲取國家 IP
$countryCode = geoip_country_code_by_addr($geoData, $_SERVER['REMOTE_ADDR']);

// 獲取國家名稱
$countryName = geoip_country_name_by_addr($geoData, $_SERVER['REMOTE_ADDR']);

// 關閉本地資料庫
geoip_close($geoData);

?>

在 WordPress 中通過 IP 區分國家

既然 PHP 上使用沒問題, WordPress 肯定也是 Okay 的. 看看是怎麼使用的.

1. 放置資料庫文件
將 GeoIP.dat 解壓到 WordPress 根目錄中. (可以在這個目錄找到 wp-config.php 或者
wp-config-sample.php 文件)

2. 編寫調用介面
在主題目錄中新建文件夾 include, 將 geoip.inc 放置在新建文件夾中. 並在該文件夾新建文件 geoip.php
文件內容如下.

?
<?php

include('geoip.inc');

global $countryCode;

$geoData = geoip_open('GeoIP.dat', GEOIP_STANDARD);
$countryCode = geoip_country_code_by_addr($geoData, $_SERVER['REMOTE_ADDR']);
geoip_close($geoData);

?>

這里只取國家代號作為判別依據. 並且國家代號是全局變數, 以避免頁面多處判斷需要反復訪問 GeoIP.dat 獲取信息, 減少程序開銷.

2. 調用介面, 獲取國家代號
3. 打開 header.php 文件, 在文件頂部加入代碼如下.

?

1

<?php include('include/geoip.php'); ?>

4. 使用國家代號
在主題中調用代碼, 例子如下.

?
<?php

global $countryCode;

if($countryCode == 'CN') {
// 中國大陸地區執行的代碼
} else if($countryCode == 'US') {
// 美國地區執行的代碼
} else {
// 中國大陸和美國以外地區執行的代碼
}

?>
可能有人會問, 加這么個東西, 性能如何? 會不會要求強大的伺服器? 本人測試過, 正常的伺服器上幾乎不影響頁面載入性能, 可以看看這個博客的速度.
如果不放心, 自己測一下.

④ GeoIP如何用ASP.NET實現

http://sjolzy.cn/GeoIP-PHP-version-use.html
這個鏈接裡面有個資料庫,下載資料庫,然後獲取用戶的ip,在資料庫中查詢得到具體的地區即可。

⑤ 網站建設:如何通過IP區分不同國家的用戶

這是為了讓不同的國度和習慣的訪客看到不一樣的信息, 避免誤導用戶產生多餘的交互行為或者因為頁面的不合理而感到不爽.上圖是最近我在頂部放置的廣告 banner. 上方紅色的是某網站聖誕節促銷活動的Affiliate 廣告, 中國大陸之外地區的訪客可以看到; 下方藍色的是最新發布的與我同行 Apply App 應用廣告, 只有中國大陸地區的訪客可以看到. 區分訪客國家有什麼用?這里是幾個我利用該功能的例子.區分網站功能 這個博客有翻譯文章的功能, 這是為了方便海外訪客閱讀文章, 但對中國人顯得十分多餘. 所以我通過 IP 判斷國家, 對中國大陸地區屏蔽翻譯功能.區分展示廣告 我在網站側邊欄放有廣告, 很多中文廣告對海外流量來說毫無意義, 所以我進行區分展示. 中國大陸地區在側邊欄最下方看到的是拿福能的廣告, 而其他地區看到的是 Google 的廣告. hostucan 是我的一個廣告主, 有英文網站, 也有中文網站, 所以我可以向他提供區分展示服務, 免得浪費流量.屏蔽布點服務 海外有很多好的服務平台, 在網站上布點即可採集數據和分享文章. 但很不幸, 因為某些原因, 他們在國內展示效果並不好, 不但沒有起到應有效果, 還讓頁面載入時間變長. 可以對大陸訪客屏蔽這些布點.在PHP 通過 IP 區分國家如何用 PHP 通過 IP 區分國家和地區呢? Maxmind.com 提供一套 GeoIP 的解決方案, 只需要簡單幾步即可在 PHP 中通過 IP 判斷訪客的國家.1. 下載資料庫和 PHP 庫文件下載GeoID.dat.gz, 解壓為 GeoIP.dat 文件.下載geoip.inc.2. 通過 PHP 代碼獲取國家信息 以下是一段示範代碼, 演示如何獲取國家代號和國家名稱.在WordPress 中通過 IP 區分國家既然PHP 上使用沒問題, WordPress 肯定也是 Okay 的. 看看我是怎麼使用的.1. 放置資料庫文件 將GeoIP.dat 解壓到 WordPress 根目錄中. (你可以在這個目錄找到 wp-content.php 文件)2. 編寫調用介面 在主題目錄中新建文件夾 include, 將 geoip.inc 放置在新建文件夾中. 並在該文件夾新建文件 geoip.php 文件內容如下.這里只取國家代號作為判別依據. 並且國家代號是全局變數, 以避免頁面多處判斷需要反復訪問 GeoIP.dat 獲取信息, 減少程序開銷.2. 調用介面, 獲取國家代號 3. 打開 header.php 文件, 在文件頂部加入代碼如下.4. 使用國家代號 在主題中調用代碼, 例子如下.

⑥ 誰能幫忙翻譯下這篇計算機文檔

我如何安裝GeoIP地理位置PECL的拓展?
如果你正在使用Ubuntu或Debian運行以下命令:
sudo apt-get install php5-geoip php5-dev libgeoip-dev(這個是命令不翻譯)

如果你必須親自構建拓展,首先確保你有以下安裝(下面都是軟體):
PEAR/PECL (包含可執行的PECL)
帶有開發文件的 GeoIP C庫
構建工具(包括GCC,make等等)
php開發文件
然後運行以下命令:
sudo pecl install geoip(這個是命令不翻譯)

最後,添加以下到你的php.ini文件
extension=geoip.so

一旦PECL拓展被安裝,你必須對它進行配置。添加以下到你的php.ini文件
geoip.custom_directory=/path/to/piwik/misc

取代/path/to/piwik這個路徑到你的Piwik安裝。
並且最後,如果你正使用GeoLite City資料庫,還有一件事你需要去做。如果PECL拓展被命名為 GeoLiteCity.dat,那麼它不會識別資料庫。所以確保它被命名為GeoIPCity.dat。
重新啟動網路伺服器和GeoIP拓展現在應該被載入並且在Piwik > Settings > Geolocation中運行。

⑦ 怎麼用geoip屏蔽日本訪客,php的形式來判斷。我找到個代碼,但它是允許日本的,怎麼改成禁止日本

$country=='jp'修改為
$country != 'jp'
好了,就這么簡單~

⑧ 怎麼把文件上傳到web伺服器

就是 程序文件到web伺服器上,
通過ssh 服務將本地文件 到linux伺服器上。

⑨ centos6.5 怎麼安裝GeoIP PECL擴展

安裝GEOIP
[root@i -it ~]# yum install GeoIP GeoIP-deve

##下載GeoIP的資料庫,有精確到國家和地區包括IPv6 自行選擇...###
[root@i -it ~]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
[root@i -it ~]# tar zxf GeoLiteCity.dat.gz
[root@i -it ~]# mv GeoIPCity.dat /data/seo/misc/GeoIPCity.dat

##下載GeoIP PECL擴展##
[root@i -it ~]# wget http://pecl.php.net/get/geoip-1.0.8.tg

##安裝##
[root@i-it ~]# tar zxf geoip-1.0.8.tgz
[root@i-it ~]# cd geoip-1.0.8
[root@i-it geoip-1.0.8]# /software/php/bin/phpize
[root@i-it geoip-1.0.8]# ./configure --with-php-config=/software/php/bin/php-config --with-geoip
[root@i-it geoip-1.0.8]# make && make install

###修改PHP配置文件###
[root@i-it seo]# vi /software/php/etc/php.ini
extension = "geoip.so"

###指定geoip數據的路徑##
geoip.custom_directory=/data/seo/misc/

閱讀全文

與geoipphp擴展相關的資料

熱點內容
c523壓縮比 瀏覽:543
命令語氣的人什麼心態 瀏覽:435
程序員喜歡留指甲嗎 瀏覽:516
七牛雲伺服器收費標准 瀏覽:627
時光相冊加密空間密碼忘記 瀏覽:474
華為雲為用戶提供的服務雲伺服器 瀏覽:634
minecraftlinux伺服器搭建 瀏覽:376
linux命令新建文件 瀏覽:708
長線pdf 瀏覽:607
程序員電腦支持手寫 瀏覽:414
解壓頭戴式耳機推薦 瀏覽:344
紙條app上怎麼樣看對方主頁 瀏覽:883
編譯英語單詞怎麼寫 瀏覽:249
編譯原理和匯編原理的區別 瀏覽:864
如何給加密的pdf解密 瀏覽:770
華為盒子時間同步伺服器地址 瀏覽:95
python處理excel亂碼 瀏覽:391
mysql的命令行 瀏覽:822
jpeg採用什麼演算法 瀏覽:701
程序員紅軸薄膜 瀏覽:306