iptables forward port error - Keine Kette / Ziel / Übereinstimmung mit diesem Namen

11

Ich versuche, iptables auf meinem Ubuntu 12.04 LTS-Server so zu konfigurieren, dass Port 443 an 8443 weitergeleitet wird.

Aber wenn ich diesen Befehl ausführe:

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

Ich erhalte folgenden Fehler:

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

Meine iptables aktuelle Konfiguration:

$ 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 

Was vermisse ich oder mache ich falsch?

Roy Hinkley
quelle

Antworten:

18

Weil die PREROUTINGKette zur NATTabelle gehört, nicht zur FILTERTabelle. Wenn Sie keine Tabelle explizit nach -tOption erwähnen , FILTERwird davon ausgegangen.

Sie müssen also den Tabellentyp mit -t natfolgenden Angaben erwähnen :

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

Beachten Sie, dass MANGLEund RAWTabellen auch eine PREROUTINGKette haben. Da Sie jedoch nur Ports umleiten, suchen Sie vermutlich nach der NATTabelle.

heemayl
quelle
Es gibt mir immer noch den gleichen Fehler. Ist diese Antwort noch gültig?
Piepi
@piepi Ja. Sollte gültig sein. Vielleicht sollten Sie eine neue Frage mit Ihrem Problem im Detail stellen.
Heemayl
Upvoting und vielleicht könnten Sie diese ähnliche Frage
WinEunuuchs2Unix
3

PREROUTING-Kette nur für Nat-, Mangle- und Raw-Tische erhältlich.
iptables setzt eine Filtertabelle voraus, daher müssen Sie eine davon angeben, z.iptables -t nat ...

Ven3k
quelle
3

Ich erhalte eine ähnliche Fehlermeldung, wenn ich einen Docker-Befehl ausführe

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).

Ich konnte es beheben, indem ich die Docker-Engine neu installierte

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

Sie können installieren (Config Server Security & Firewall) und die folgenden Einstellungen verwenden.

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."

Hinweis: Diese Konfiguration verhindert auch grundlegende DDOS-Angriffe.

Akinjiola Toni
quelle