Der Befehl iptables erkennt eine der am häufigsten verwendeten Optionen beim Definieren von Regeln nicht mehr: --dport
.
Ich erhalte diesen Fehler:
[root@dragonweyr /home/calyodelphi]# iptables -A INPUT --dport 7777 -j ACCEPT_TCP_UDP
iptables v1.4.7: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.
Der obige Befehl „Add Rule“ ist nur ein Beispiel zum Aktivieren von Terraria-Verbindungen.
Hier ist meine aktuelle Barebone-IPtables-Konfiguration ( listiptables
hat einen Alias zu iptables -L -v --line-numbers
), und es ist offensichtlich, dass das --dport
in der Vergangenheit funktioniert hat:
root@dragonweyr /home/calyodelphi]# listiptables
Chain INPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 39 4368 ACCEPT all -- lo any anywhere anywhere
2 114 10257 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
3 1 64 ACCEPT tcp -- eth1 any anywhere anywhere tcp dpt:EtherNet/IP-1
4 72 11610 ACCEPT all -- eth1 any anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 91 packets, 10045 bytes)
num pkts bytes target prot opt in out source destination
Chain ACCEPT_TCP_UDP (0 references)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- any any anywhere anywhere
Ich versuche auch, eine benutzerdefinierte Kette zu definieren (inspiriert vondiese Frage), um TCP- und UDP-Verbindungen zu akzeptieren, sodass ich nicht für alles, wofür ich TCP und UDP aktivieren möchte (wie etwa einen Minecraft- oder Terraria-Server oder einen ganz anderen Dienst), zwei Regeln definieren muss. Aber auch das funktioniert nicht:
[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.
Das wird langsam sehr frustrierend, höflich ausgedrückt (so viele Schimpfwörter, die dabei verwendet werden, würden einen Seemann dazu veranlassen, mir zu sagen, ich solle aufpassen, was ich sage). Mein Google-Fu ist furchtbar, daher habe ich noch keine funktionierende Lösung dafür gefunden. Auf meinem Router läuft CentOS 6.5. Jede Hilfe und jeder Hinweis, den Sie mir geben können, wäre großartig.
BEARBEITEN:
Bonusfrage: Ich plane auch, eine Portweiterleitung zu konfigurieren. Ist es immer noch notwendig, Regeln festzulegen, um eingehende Verbindungen über bestimmte Ports zu akzeptieren?
Antwort1
Geben Sie zuerst eine -p
Option wie -p tcp
oder ein -p udp
.
Beispiele:
iptables -A INPUT -p tcp --dport 22 -m Status --state NEU -j DROP
iptables -A INPUT -p udp --dport 53 --sport 1024:65535 -j AKZEPTIEREN
Sie könnten es auch versuchen, -p all
aber ich habe das nie getan und finde in den Beispielen nicht viel Unterstützung dafür.
Antwort2
Eine andere mögliche Lösung ist, dass Sie vergessen, als Root zu arbeiten. Ich bin gerade auf dieses Problem gestoßen, als ich das Debian-Tutorial verwendet habe.
$ 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 -p tcp -I PREROUTING --src 0/0 --dst 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
# OK
Antwort3
Wenn Sie --dport verwenden, ist das Protokoll (-p) erforderlich. Beispiel:
-p tcp
Antwort4
@dmourati und @diegows haben Ihre erste Frage bereits beantwortet, also werde ich mich Ihrer zweiten Frage widmen. Und Bonusfrage. Und ich gebe auch noch einen Bonustipp dazu ;)
iptables -P
nurakzeptiert INTEGRIERTE Ketten. In der filter
Tabelle wären das INPUT
, OUTPUT
, und FORWARD
Ketten.
Die Portweiterleitung wird nicht von der INPUT
Kette übernommen, Sie müssen den Port also nicht in der INPUT
Kette öffnen. Estutaber von der Kette angefasst werden FORWARD
. Seien Sie dabei vorsichtig.
Bonus-Tipp:Beim Lernen und/oder bei der Fehlerbehebung ist iptables
die Ausgabe von iptables-save
um Längen besser als die Ausgabe von iptables -L -v --line-numbers
. Probieren Sie es aus, Sie werden angenehm überrascht sein :)