如何让HAProxy使用GeoIP禁止某个国家IP访问?接下来我们使用GeoIP来过滤,而GeoIP数据库,一般都会保持更新,这个可以通过访问maxmind网站下载。GeoIP里包含我们要阻止的国家/地区的所有子网,获取这些子网后我们可以通过HAproxy的ACL来控制。
一、下载需要的安装包
yum install wget unzip gcc
二、下载
git clone https://github.com/berkayunal/haproxy-geoip-iprange.git wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
三、解压 GeoIP 数据库
unzip GeoIPCountryCSV.zip
四、格式化IP范围
cut -d, -f1,2,5 GeoIPCountryWhois.csv | head cut -d, -f1,2,5 GeoIPCountryWhois.csv | head | ./iprange
再次剪切文件,以将子网分成文件
cut -d, -f1,2,5 GeoIPCountryWhois.csv | ./iprange | sed 's/"//g' | awk -F' ' '{ print $1 >> $2".subnets" }'
五、获取子网
我们将获得234个根据状态解析的子网文件
六、设置ACL规则
接下来,我们将尝试通过子网ID使中国以外的国家/地区无法访问我们的网站。
#Access Control List acl indo-sub src -f /etc/haproxy/CN.subnets tcp-request connection reject if !indo-sub
七、测试
测试后发现其他国家的IP都无法通过HAProxy访问了。