阻止来自或发往某个的网络流量
  一旦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或任何受到危及的中继主机,很容易欺骗来源/目的地。基于地域的过滤甚至会阻止本不该被禁止的合法流量。明白这个局限性后,再决定将它部署到你的生产环境中也不迟。