22 Jan 2016
网站针对某个国家或地区开放,希望禁掉其它国家的访问
# 依赖包安装 yum install epel-release yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS # kernel-devel-`uname -r`需要换成实际环境中的相应版本 # 编译安装xtables-addons # centos6安装最新的2.1版本有问题,换成1.47.1 wget http://jaist.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-1.47.1.tar.xz tar Jxf xtables-addons-1.47.1.tar.xz cd xtables-addons-1.47.1 ./configure make make install # 为Xtables-addons安装GeoIP数据库 cd geoip/ ./xt_geoip_dl ./xt_geoip_build GeoIPCountryWhois.csv mkdir -p /usr/share/xt_geoip cp -r {BE,LE} /usr/share/xt_geoip/
iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...] # 例如,阻止也门(YE)和赞比亚(ZM)的入站流量 iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP # 例如,阻止发往中国(CN)的出站流量 iptables -A OUTPUT -m geoip --dst-cc CN -j DROP # "!"的用法 # 例如,阻止所有非美国的入站流量 iptables -I INPUT -m geoip ! --src-cc US -j DROP
PS:国家代码参考ISO3166标准
make make all-recursive make[1]: Entering directory `/usr/local/src/xtables-addons-1.47.1' Making all in extensions make[2]: Entering directory `/usr/local/src/xtables-addons-1.47.1/extensions' Xtables-addons 1.47.1 - Linux 2.6.32-431.el6.x86_64 if [ -n "/lib/modules/2.6.32-431.el6.x86_64/build" ]; then make -C /lib/modules/2.6.32-431.el6.x86_64/build M=/usr/local/src/xtables-addons-1.47.1/extensions modules; fi; make[3]: Entering directory `/usr/src/kernels/2.6.32-431.el6.x86_64' CC [M] /usr/local/src/xtables-addons-1.47.1/extensions/compat_xtables.o /usr/local/src/xtables-addons-1.47.1/extensions/compat_xtables.c: In function 'xtnu_ipv6_find_hdr': /usr/local/src/xtables-addons-1.47.1/extensions/compat_xtables.c:633: error: too few arguments to function 'ipv6_find_hdr' make[4]: *** [/usr/local/src/xtables-addons-1.47.1/extensions/compat_xtables.o] Error 1 make[3]: *** [_module_/usr/local/src/xtables-addons-1.47.1/extensions] Error 2 make[3]: Leaving directory `/usr/src/kernels/2.6.32-431.el6.x86_64' make[2]: *** [modules] Error 2 make[2]: Leaving directory `/usr/local/src/xtables-addons-1.47.1/extensions' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/src/xtables-addons-1.47.1' make: *** [all] Error 2
# 尝试-1(本环境无效) vi /usr/src/kernels/2.6.32-431.el6.x86_64/include/linux/autoconf.h ******************************************* ## 注释下面这一行,网查很多这个解决方案,但是依旧没有解决 /*#define CONFIG_IP6_NF_TARGET_REJECT_MODULE 1*/ ******************************************* # 尝试-2(有效解决) vim extensions/compat_xtables.c ************************************************ ## 把报错的ipv6的代码段注释掉,很傻逼,但是最起码可以编译了 /*int xtnu_ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, int target, unsigned short *fragoff, int *fragflg) { return ipv6_find_hdr(skb, offset, target, fragoff); } EXPORT_SYMBOL_GPL(xtnu_ipv6_find_hdr);*/ ## 最开头和最结尾的"/* */"是注释符 ************************************************