iptables encaminhar erro de porta - Nenhuma cadeia / destino / correspondência com esse nome

8

Estou tentando configurar o iptables no meu servidor Ubuntu 12.04 LTS para encaminhar a porta 443 para a 8443.

Mas quando eu executo este comando:

sudo iptables -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

Eu recebo o seguinte erro:

iptables: No chain/target/match by that name.

Minha configuração atual do iptables:

$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
DROP       tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

O que estou perdendo ou fazendo de errado?

    
por Android Addict 30.06.2016 / 20:39

3 respostas

14

Porque PREROUTING chain pertence à tabela NAT , não à tabela FILTER . Se você não mencionar nenhuma tabela explicitamente pela opção -t , então FILTER é assumido.

Então, você precisa mencionar o tipo de tabela com -t nat :

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443

Observe que as tabelas MANGLE e RAW também têm PREROUTING chain, mas como você está redirecionando apenas as portas, provavelmente está procurando pela tabela NAT .

    
por heemayl 30.06.2016 / 20:46
3

PREROUTING chain disponível apenas para tabelas nat, mangle e raw.
iptables assume tabela de filtros, então você deve especificar um destes, por exemplo. iptables -t nat ...

    
por Ven3k 30.06.2016 / 20:47
3

Eu recebo um erro semelhante quando executo um comando docker

docker run -d -p 8084:8080 knockdata/zeppelin-highcharts


d9c5d34f500d621585470b0e70b915395fcb6b3437859e0f610dbb58d51faf25
docker: Error response from daemon: driver failed programming external connectivity on endpoint elegant_jang  
(7ca0f5ad689f5443ce7533f66b4a86c34d2dbd9d076bac4812288dd3f6a76698):  
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8084 -j DNAT --to-destination 172.17.0.2:8080 
! -i docker0: iptables: No chain/target/match by that name.
(exit status 1).

Consegui corrigi-lo reinstalando o mecanismo docker

apt-get remove docker-engine
apt-get install docker-engine
    
por Rockie Yang 29.09.2016 / 09:22