Назад | Перейти на главную страницу

Как заблокировать все ip, которых нет в списке ipset

Я пытаюсь заблокировать весь трафик, кроме США и Канады. Я добавил все IP-адреса США и Канады в ipset geoblock, и когда я пробую эту команду. Я получаю сообщение об ошибке.

iptables -A INPUT -m set --set !geoblock src -j DROP
-bash: !geoblock: event not found

но когда я запускаю эту команду

ipset list

Я получаю все IP-адреса, поэтому в названии и ipset нет ничего плохого. Я использую iptables v1.4.21 на Cent os 7.3.1611

Решение:

Ниже приведена правильная командная строка:

iptables -A INPUT -m set ! --match-set geoblock src -j DROP

Пояснение:

javier@equipo-javier:~$ sudo ipset create geoblock hash:net
javier@equipo-javier:~$ sudo iptables -A INPUT -m set --set '!geoblock' src -j DROP
--set option deprecated, please use --match-set
iptables v1.4.21: Set !geoblock doesn't exist.

Try `iptables -h' or 'iptables --help' for more information.

1-е исправление:

javier@equipo-javier:~$ sudo iptables -A INPUT -m set --match-set '!geoblock' src -j DROP
iptables v1.4.21: Set !geoblock doesn't exist.

Try `iptables -h' or 'iptables --help' for more information.

2-е исправление:

javier@equipo-javier:~$ sudo iptables -A INPUT -m set ! --match-set geoblock src -j DROP
javier@equipo-javier:~$ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m set ! --match-set geoblock src -j DROP

В настоящее время работает

Как упомянула Зоредак, bash ошибка указывает на то, что это проблема с цитированием. Помещение этого аргумента в одинарные кавычки или использование обратной косой черты, чтобы избежать восклицательного знака, поможет обойти немедленную проблему:

iptables -A INPUT -m set --set '!geoblock' src -j DROP

или

iptables -A INPUT -m set --set \!geoblock src -j DROP