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