Solution 1 :
Donnez d'abord un -p
option comme -p tcp
ou -p udp
.
Exemples :
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPTER
Vous pouvez également essayer -p all
mais je n'ai jamais fait cela et je ne trouve pas beaucoup de support pour cela dans les exemples.
Solution 2 :
Le protocole (-p) est requis si vous utilisez --dport. Exemple :
-p tcp
Solution 3 :
@dmourati et @diegows ont déjà répondu à votre première question, je vais donc aborder votre deuxième question. Et question bonus. Et je vais aussi ajouter un conseil bonus ;)
iptables -P
uniquement accepte les chaînes INTÉGRÉES. Dans le filter
table, ce serait INPUT
, OUTPUT
, et FORWARD
chaînes.
La redirection de port n'est pas gérée par le INPUT
chaîne, vous n'avez donc pas à ouvrir le port dans le INPUT
chaîne. Il fait être géré par le FORWARD
chaîne, cependant. Faites attention à cela.
Conseil bonus : Lors de l'apprentissage et/ou du dépannage iptables
, la sortie de iptables-save
est la tête et les épaules meilleure que la sortie de iptables -L -v --line-numbers
. Essayez-le, vous serez agréablement surpris :)
Solution 4 :
Une autre solution possible est que vous oubliez d'exécuter en tant que root. Je viens de rencontrer cela lors de l'utilisation du tutoriel debian
$ iptables -t nat -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
iptables v1.8.2 (nf_tables): unknown option "--dport"
$ sudo iptables -t nat -I PREROUTING --src 0/0 --dst 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080
# OK
Solution 5 :
Si iptables
signaler qu'il utilise nftables
, il faut utiliser iptables-legacy
à la place.
Par exemple:
Utilisez iptables-legacy -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Au lieu de iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
C'est un peu une vieille question, mais c'est la première dans les résultats de recherche.