Lösung 1:
Geben Sie zuerst -p
ein Option wie -p tcp
oder -p udp
.
Beispiele:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j ACCEPT
Sie könnten auch -p all
versuchen aber ich habe das noch nie gemacht und finde in den Beispielen nicht allzu viel Unterstützung dafür.
Lösung 2:
Das Protokoll (-p) ist erforderlich, wenn Sie --dport verwenden. Beispiel:
-p tcp
Lösung 3:
@dmourati und @diegows haben Ihre erste Frage bereits beantwortet, also werde ich Ihre zweite Frage angehen. Und Bonusfrage. Und ich gebe auch noch einen Bonus-Tipp;)
iptables -P
nur Akzeptiert EINGEBAUTE Ketten. Im filter
Tabelle, das wäre INPUT
, OUTPUT
, und FORWARD
Ketten.
Die Portweiterleitung wird nicht vom INPUT
gehandhabt Kette, sodass Sie den Port in INPUT
nicht öffnen müssen Kette. Es tut von FORWARD
behandelt werden Kette allerdings. Seien Sie dabei vorsichtig.
Bonustipp: Beim Lernen und/oder Beheben von iptables
, die Ausgabe von iptables-save
ist um Längen besser als die Ausgabe von iptables -L -v --line-numbers
. Probieren Sie es aus, Sie werden angenehm überrascht sein :)
Lösung 4:
Eine andere mögliche Lösung ist, dass Sie vergessen, als root auszuführen. Ich bin gerade darauf gestoßen, als ich das Debian-Tutorial benutzte
$ 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
Lösung 5:
Wenn iptables
berichten, dass es nftables
verwendet , muss iptables-legacy
verwendet werden stattdessen.
Zum Beispiel:
Verwenden Sie iptables-legacy -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Statt iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
Es ist eine ziemlich alte Frage, aber das ist die erste in den Suchergebnissen.