Errore porta forward iptables - Nessuna catena / destinazione / corrispondenza con quel nome


11

Sto provando a configurare iptables sul mio server Ubuntu 12.04 LTS per inoltrare la porta 443 a 8443.

Ma quando eseguo questo comando:

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

Ottengo il seguente errore:

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

La mia configurazione attuale di 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 

Cosa mi sto perdendo o facendo di sbagliato?

Risposte:


18

Perché PREROUTINGchain appartiene alla NATtabella, non alla FILTERtabella. Se non si menziona alcuna tabella in modo esplicito per -topzione, FILTERsi presuppone che venga utilizzata.

Quindi, è necessario menzionare il tipo di tabella con -t nat:

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

Si noti che, MANGLEe RAWanche le tabelle hanno una PREROUTINGcatena, ma poiché si reindirizzano solo le porte, si presume che si stia cercando la NATtabella.


Mi sta ancora dando lo stesso errore. Questa risposta è ancora valida?
Piepi,

@piepi Sì. Dovrebbe essere valido Forse dovresti fare una nuova domanda con il tuo problema in dettaglio.
heemayl

Upgrade e forse potresti rispondere a questo simile: askubuntu.com/questions/1140644/…
WinEunuuchs2Unix

3

La catena PREROUTING è disponibile solo per tavoli nat, mangle e raw.
iptables assume la tabella dei filtri, quindi è necessario specificare uno di questi, ad es.iptables -t nat ...


3

Ottengo un errore simile quando eseguo un 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).

Sono stato in grado di risolverlo reinstallando docker-engine

apt-get remove docker-engine
apt-get install docker-engine

0

È possibile installare (Config Server Security & Firewall) e utilizzare le seguenti impostazioni.

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: questa configurazione impedisce anche l'attacco DDOS di base.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.