隨便一個IP,怎麼知道是從什麼地方來的?過去常要到網路上的 ip location 之類的網站查,但現在從 shell 的指令查詢就有。
近來較新的Linux版本裡,竟會直接就會有 geoip 的相關套件
$ pacman -Q |grep geoip
geoip 1.5.1-1
geoip-database 20130919-1
並且所附帶的資料檔,也應會一直提供更新。
使用上很簡單,只要指令後面再加 IP 即可查詢,若加 -i 的參數,會有比較多的相關訊息:
$ geoiplookup 8.8.8.8
GeoIP Country Edition: US, United States
$ geoiplookup -i 8.8.8.8
GeoIP Country Edition: US, United States
ipaddr: 8.8.8.8
range_by_ip: 8.7.245.0 - 8.10.6.242
network: 8.8.0.0 - 8.9.255.255 ::15
ipnum: 134744072
range_by_num: 134739200 - 134874866
network num: 134742016 - 134873087 ::15
$ geoiplookup -v 8.8.8.8
GeoIP Country Edition: GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved
GeoIP Country V6 Edition: GEO-106FREE 20130903 Build 1 Copyright (c) 2013 MaxMind Inc All Rights Reserved
在 shell 命令列模式上,主要是執行給人簡單查詢用,並不需要太留意怎麼取資料欄位的問題,通常這是在需要寫程式或一些服務器上,要利用 geoip 來辨識IP的時候需搞清楚的。
在本站裡有一篇:利用 GeoIP 列出某地區的所有IP網段,把裡面的相關資料欄位怎麼取用,有較詳細的說明。
如果想要以何國家來的IP來作篩選,就iptables而言,可參考這篇:
The geoip match HOWTO
這樣可以直接就擋掉某國家來的IP。
若想在 web 服務裡去擋某些國家,在 nginx 上有 Module ngx_http_geoip_module 這模組也是利用 geoip 的資料來達成。