O comando iptables não reconhece mais uma das opções mais utilizadas 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 adicionar regra acima é apenas um exemplo para habilitar conexões Terraria.
Aqui está o que tenho atualmente como configuração barebones do iptables ( listiptables
é alias de iptables -L -v --line-numbers
) e é óbvio que --dport
funcionou 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 emessa questão) para aceitar conexões tcp e udp para que eu não precise definir duas regras para tudo o que desejo ativar tcp e udp (como um servidor Minecraft ou Terraria, ou outro serviço inteiramente). 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 nisso faria um marinheiro me dizer para tomar cuidado com a boca). Meu Google-fu é terrível, então ainda não encontrei uma solução funcional para nada disso. Estou executando o CentOS 6.5 no roteador. Qualquer ajuda e dicas que vocês possam oferecer seriam incríveis.
EDITAR:
Pergunta 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?
Responder1
Primeiro dê uma -p
opção como -p tcp
ou -p udp
.
Exemplos:
iptables -A INPUT -p tcp --dport 22 -m estado --state NOVO -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACEITAR
Você também pode tentar, -p all
mas nunca fiz isso e não encontro muito suporte nos exemplos.
Responder2
Outra solução possível é que você está esquecendo de executar como root. Acabei de me deparar com isso ao usar o tutorial do debian
$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
# OK
Responder3
O protocolo (-p) é necessário se você usar --dport. Exemplo:
-p tcp
Responder4
@dmourati e @diegows já responderam sua primeira pergunta, então abordarei sua segunda pergunta. E pergunta bônus. E também vou dar uma dica bônus ;)
iptables -P
apenasaceita cadeias BUILT-IN. Na filter
tabela, seriam INPUT
, OUTPUT
e FORWARD
cadeias.
O encaminhamento de porta não é controlado pela INPUT
cadeia, portanto você não precisa abrir a porta na INPUT
cadeia. Istofazser manipulado pela FORWARD
corrente, no entanto. Tenha cuidado com isso.
Dica bônus:Ao aprender e/ou solucionar problemas iptables
, o resultado de iptables-save
é melhor do que o resultado de iptables -L -v --line-numbers
. Experimente, você ficará agradavelmente surpreso :)