iptables forward port error - Nenhuma cadeia / destino / correspondência com esse nome

11

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

Mas quando eu executo este comando:

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

Eu obtenho 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 errado?

Roy Hinkley
fonte

Respostas:

18

Porque a PREROUTINGcadeia pertence à NATtabela, não à FILTERtabela. Se você não mencionar nenhuma tabela explicitamente por -topção, FILTERserá assumido.

Portanto, 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, MANGLEe RAWtabelas também têm PREROUTINGcadeia, mas como você está redirecionando apenas portas, você provavelmente está procurando a NATtabela.

heemail
fonte
Ainda está me dando o mesmo erro. Esta resposta ainda é válida?
piepi
@piepi Yeah. Deve ser válido. Talvez você deva fazer uma nova pergunta com seu problema em detalhes.
heemayl
Upvoting e talvez você poderia responder a esta outra semelhante: askubuntu.com/questions/1140644/...
WinEunuuchs2Unix
3

Cadeia de PREROUTING disponível apenas para tabelas nat, mangle e raw.
O iptables assume a tabela de filtros, então você deve especificar uma delas, por exemplo.iptables -t nat ...

Ven3k
fonte
3

Eu recebo erro semelhante ao executar um comando do 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 docker-engine

apt-get remove docker-engine
apt-get install docker-engine
Rockie Yang
fonte
0

Você pode instalar (Config Server Security & Firewall) e usar as seguintes configurações.

nano /etc/csf/csf.conf
SYNFLOOD = "" => SYNFLOOD = "1"
CONNLIMIT = "" => CONNLIMIT = "80;75,443;75,21;50”
PORTFLOOD = "" => PORTFLOOD = "80;tcp;5;250"
SYSLOG = “0” => SYSLOG = "1"
DOCKER = “0” => DOCKER = "1"

nano /etc/csf/csfpost.sh

#!/bin/sh

echo "[DOCKER] Setting up FW rules."

iptables -N DOCKER

iptables -t nat -N DOCKER

iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER

iptables -t nat -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER

# Masquerade outbound connections from containers
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

# Accept established connections to the docker containers
iptables -t filter -N DOCKER
iptables -t filter -A FORWARD -o docker0 -j DOCKER
iptables -t filter -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j 
ACCEPT

# Allow docker containers to communicate with themselves & outside world
iptables -t filter -A FORWARD -i docker0 ! -o docker0 -j ACCEPT
iptables -t filter -A FORWARD -i docker0 -o docker0 -j ACCEPT

echo "[DOCKER] Done."

Nota: Esta configuração também impede que você ataque DDOS básico.

Akinjiola Toni
fonte