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

iptables «хост / сеть не найден» с восклицательным знаком IP-адрес

Я пытаюсь добавить iptables правило, чтобы отбрасывать любые входящие пакеты, кроме пакетов с определенного IP. Следуя инструкции, я пытаюсь запустить это:

    > iptables -t filter -I INPUT -s !12.34.56.78 -p tcp -j DROP

но я получаю эту ошибку:

    iptables v1.4.12.1: host/network `!12.34.56.78' not found

На страницах руководства говорится -s / --src / --source параметр ... A "!" argument before the address specification inverts the sense of the address. ....

Первая проблема, с которой я столкнулся с этим восклицательным знаком, заключалась в том, что оболочка расширила его до команды из истории. Решение set +H была применена, и, похоже, это больше не проблема.

Почему восклицательный знак не используется для указания перевернутого адреса, как написано в инструкции?

PS: Конечно, я пытался использовать его с пробелом между ! и IP и это не принято.

РЕДАКТИРОВАТЬ
Непосредственно перед тем, как принять ответ, возможно, кто-нибудь также сможет помочь с ответом на вопрос: почему порядок параметров должен быть ! -s {IP} вместо того -s !{IP} как сказано в инструкции? просто более новая версия iptables изменили этот синтаксис, сохранив старые страницы руководства? или это как-то настраивается?

Вам понадобится пробел между ! и IP-адрес

 iptables -t filter -I INPUT -s ! 12.34.56.78 -p tcp -j DROP

Если вы получите сообщение типа Using intrapositioned negation (- вариант! этот) is deprecated in favor of extrapositioned (! - вариант это).

Затем поместите! перед параметром "-s" как в -

 iptables -t filter -I INPUT ! -s 12.34.56.78 -p tcp -j DROP

Вы пытались сбежать! из вашей оболочки?

iptables -A INPUT \! -s 12.34.56.78 -p tcp -j DROP

РЕДАКТИРОВАТЬ: Мои извинения, я вижу, вы объяснили, что избежали!, Так что у вас просто неправильный порядок. Команда, которую я вставил выше, отлично работает на моих машинах, должна подойти вам.