erro iptables: opção desconhecida --dport

19

O comando não iptables reconhece uma das opções mais usadas na definição de regras: --dport.

Eu recebo este erro:

[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.

O comando add rule acima é apenas um exemplo para habilitar conexões Terraria.

Aqui está o que eu tenho atualmente como uma configuração de barebones iptables (com listiptablesalias para iptables -L -v --line-numbers), e é óbvio que --dportfuncionou no passado:

root@dragonweyr /home/calyodelphi]# listiptables 
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       39  4368 ACCEPT     all  --  lo     any     anywhere             anywhere            
2      114 10257 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
3        1    64 ACCEPT     tcp  --  eth1   any     anywhere             anywhere            tcp dpt:EtherNet/IP-1 
4       72 11610 ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain ACCEPT_TCP_UDP (0 references)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            

Também estou tentando definir uma cadeia personalizada (inspirada nesta pergunta ) para aceitar conexões tcp e udp, para que eu não precise definir duas regras para tudo o que desejo ativar para tcp e udp (como Minecraft ou Servidor Terraria ou outro serviço totalmente). Mas mesmo isso não funciona:

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

Isso está ficando muito frustrante, em termos educados (a quantidade de xingamentos envolvidos com isso faria um marinheiro me dizer para observar minha boca). Meu Google-fu é terrível, então ainda não encontrei uma solução que funcione para isso. Estou executando o CentOS 6.5 no roteador. Qualquer ajuda e sugestões que vocês possam oferecer seria incrível.

EDITAR:

Pergunta de bônus: também estou planejando configurar o encaminhamento de porta. Ainda é necessário definir regras para aceitar conexões de entrada em portas específicas?

Calyo Delphi
fonte

Respostas:

27

Primeiro, dê uma -popção como -p tcpou -p udp.

Exemplos:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP

iptables -A INPUT -p udp --dport 53 --sport 1024: 65535 -j ACEITAR

Você também pode tentar, -p allmas eu nunca fiz isso e não encontro muito apoio nos exemplos.

dmourati
fonte
11
Eu apenas tentei isso -p alle recebi exatamente o mesmo erro. unknown option --dport. Funcionou com -p tcpisso, mas isso realmente não vai me ajudar neste caso, uma vez que apenas leva ao mesmo problema: definir regras individuais de tcp / udp para tudo.
Calyo Delphi
Da minha experiência, o uso allnunca funcionou com a especificação de uma porta. No entanto, em vez de ter várias regras para diferentes protocolos, você pode pensar sobre as regras em uma direção diferente. Crie regras com base no protocolo e use a multiportsopção para agrupar algumas regras.
canadmos
Portanto, se eu quiser ativar as conexões Terraria e Minecraft, posso usar multiports para abrir 7777 e 25565 e criar uma regra TCP e UDP para cada par de portas?
Calyo Delphi
3
A opção para -p deve ser um protocolo único que tenha o conceito de portas ( -p ICMP --dport whatevertambém não funcionaria, por razões óbvias).
Falcon Momot
9

O protocolo (-p) é necessário se você usar --dport. Exemplo:

-p tcp
Diego Woitasen
fonte
Além disso, ele deve especificar um protocolo que tenha o conceito de portas, como @FalconMomot apontou em um comentário anterior.
um CVn
Você está certo, para esse detalhe :) #
687 Diego Woitasen
3

@dmourati e @diegows já responderam sua primeira pergunta, então abordarei sua segunda pergunta. E pergunta de bônus. E também vou dar uma dica de bônus;)

iptables -P aceita apenas cadeias incorporadas. Na filtermesa, que seria INPUT, OUTPUTe FORWARDcadeias.

O encaminhamento de porta não é tratado pela INPUTcadeia, portanto você não precisa abrir a porta na INPUTcadeia. Porém, ele é manipulado pela FORWARDcorrente. Tenha cuidado com isso.

Dica de bônus: ao aprender e / ou solucionar problemas iptables, a saída de iptables-savecabeças e ombros é melhor do que a saída de iptables -L -v --line-numbers. Experimente, você ficará surpreso :)

pepoluan
fonte
+1 para uma boa resposta, mas estou um pouco surpreso com seu último comentário. Eu odeio diagnosticar iptablesproblemas da -savesaída; por que você acha isso melhor do que iptables -L -n -v [--line-numbers]?
MadHatter apoia Monica
@MadHatter exemplo simples: Você pode ver facilmente as regras com as --dportopções realmente disponíveis -p tcp. Você também pode ver como / quando o processamento de regras salta de uma cadeia interna (por exemplo, INPUT) para uma cadeia personalizada (por exemplo, ACCEPT_TCP_UDP). Essas duas informações importantes não são visíveis na saída de iptables -L -n.
pepoluan
3
Outro benefício: eu posso fazer iptables-save > somefile, editar somefileusando o vim e depois iptables-apply -t 600 somefiletestá-lo. Se eu me bloquear inadvertidamente, após 600 segundos as regras serão revertidas.
pepoluan
A dica de bônus é muito apreciada e já está sendo usada. Eu estava usando iptables-savepara me ajudar a aprender com um despejo bruto de configuração antes de fazer essa pergunta. Eu não esperava que a FORWARDcadeia estivesse onde eu precisava prestar atenção no encaminhamento de portas. Vou ter que ler sobre isso.
precisa saber é o seguinte
@CalyoDelphi se você fizer uma busca por "diagrama de fluxo de pacote netfilter", você verá onde cada mesa e cadeia aplica ;-)
pepoluan