root@vmstat:# apt-get install xtables-addons-commonесли сейчас попытаться добавить блокирующее правило в iptables, получим такой выхлоп:
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip --src-cc US -j DROP Could not open /usr/share/xt_geoip/LE/US.iv4: No such file or directory
root@vmstat:# apt-get install libtext-csv-xs-perlсоздаем папку для geoip баз:
root@vmstat:# mkdir /usr/share/xt_geoipчто-бы слить базы на сервер, достаточно запустить один из perl скриптов:
root@vmstat:# cd /usr/lib/xtables-addons root@vmstat:/usr/lib/xtables-addons# ./xt_geoip_dlну и собственно собираем, указав в качестве папки назначения /usr/share/xt_geoip, а в качестве источника все csv файлы в текущей папке
root@vmstat:/usr/lib/xtables-addons# ./xt_geoip_build -D /usr/share/xt_geoip *.csvвновь пробуем добавить правило
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip --src-cc US -j DROPесли ошибка не вылезла, значит все хорошо. В данном случае будут заблокированы все пакеты приходящие из США на любой сетевой интерфейс кроме локального, на порт 80. Обратите особое внимание на то, что команда iptables -I вставит правило самым первым в цепочку INPUT, поэтому сначала проанализируйте уже имеющиеся правила и подумайте куда конкретно разместить блокировку по geoip ( я бы создал отдельную цепочку для размещения в ней блокировок по geoip признаку ). В целом структура правил полностью соответствует остальным правилам iptables, например такой вариант ( ! --src-cc US ):
root@vmstat:# iptables -I INPUT ! -i lo -p tcp --dport 80 -m geoip ! --src-cc US -j DROPзаблокирует все страны кроме(!) США. Что-бы проверить работоспособность модуля, забаньте свою страну например на 80-м порту и попробуйте открыть сайт размещенный на вашем сервере, если ничего не открылось, блокировка работает исправно ). Удачи
Читать еще: