iptables “host / rede não encontrada” com um endereço IP de exclamação

4

Estou tentando adicionar uma regra iptables para descartar todos os pacotes de entrada, exceto os de um IP específico. Seguindo o manual, tento executar isso:

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

mas recebo este erro:

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

Os manpages dizem para -s / --src / --source parameter ... A "!" argument before the address specification inverts the sense of the address. ... .

O primeiro problema que tive com esse ponto de exclamação foi que o shell o expandiu para um comando do histórico. A solução set +H foi aplicada e parece que não é mais um problema.

Por que o ponto de exclamação não é aceito para especificar um endereço invertido, como diz o manual?

PS: Claro que tentei usá-lo com um espaço entre ! e IP e não é aceito.

EDITAR
Pouco antes de aceitar uma resposta, talvez alguém também possa ajudar com uma resposta: por que a ordem dos parâmetros deve ser ! -s {IP} em vez de -s !{IP} , como diz o manual? apenas uma versão mais recente de iptables alterou essa sintaxe enquanto mantinha páginas de manual antigas? ou é de alguma forma configurável?

    
por ArtM 04.02.2013 / 17:29

2 respostas

3

Você precisará de um espaço entre ! e o endereço IP

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

Se você receber uma mensagem como Using intrapositioned negation ( - opção! isso ) is deprecated in favor of extrapositioned ( ! --opção este ).

Em seguida, coloque o! antes da opção "-s" como em -

 iptables -t filter -I INPUT ! -s 12.34.56.78 -p tcp -j DROP
    
por 04.02.2013 / 17:37
1

Você tentou escapar do! da sua concha?

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

EDIT: Minhas desculpas, vejo que você contabilizou para escapar do!, então você acabou de ter a ordem errada. O comando que eu colei acima funciona bem em minhas máquinas, deveria fazer por você.

    
por 04.02.2013 / 17:46

Tags