Erreur de port de transfert iptables - Aucune chaîne / cible / correspondance par ce nom

11

J'essaie de configurer iptables sur mon serveur Ubuntu 12.04 LTS pour transférer le port 443 à 8443.

Mais quand j'exécute cette commande:

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

J'obtiens l'erreur suivante:

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

Ma configuration actuelle d'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 

Qu'est-ce que je manque ou fais mal?

Roy Hinkley
la source

Réponses:

18

Parce que la PREROUTINGchaîne appartient à la NATtable, pas à la FILTERtable. Si vous ne mentionnez aucune table explicitement par -toption, alors FILTERc'est supposé.

Donc, vous devez mentionner le type de table avec -t nat:

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

Notez que, MANGLEet les RAWtables ont aussi la PREROUTINGchaîne mais comme vous redirigez les ports seulement, vous cherchez sans doute pour la NATtable.

heemayl
la source
Cela me donne toujours la même erreur. Cette réponse est-elle toujours valable?
piepi
@piepi Ouais. Doit être valide. Vous devriez peut-être poser une nouvelle question avec votre problème en détail.
heemayl
Votez et peut-être pourriez-vous répondre à cette question similaire: askubuntu.com/questions/1140644/…
WinEunuuchs2Unix
3

Chaîne PREROUTING uniquement disponible pour les tables nat, mangle et raw.
iptables suppose une table de filtres, vous devez donc en spécifier une, par exemple.iptables -t nat ...

Ven3k
la source
3

J'obtiens une erreur similaire lorsque j'exécute une commande 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).

J'ai pu le réparer en réinstallant le moteur docker

apt-get remove docker-engine
apt-get install docker-engine
Rockie Yang
la source
0

Vous pouvez installer (Config Server Security & Firewall) et utiliser les paramètres suivants.

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

Remarque: Cette configuration vous empêche également d'attaquer DDOS de base.

Akinjiola Toni
la source