Iptables-Fehler: Unbekannte Option --dport

19

Der Befehl iptables nicht mehr erkennt eines der am häufigsten verwendeten Optionen , wenn Regeln definieren: --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 für die Aktivierung von Terraria-Verbindungen.

listiptablesFolgendes habe ich derzeit als Barebones- Iptables- Konfiguration ( mit Alias iptables -L -v --line-numbers), und es ist offensichtlich, dass dies --dportin 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 (inspiriert von dieser Frage ) zu definieren, um TCP- und UDP-Verbindungen zu akzeptieren, damit ich nicht zwei Regeln für alles definieren muss, für das ich TCP und UDP aktivieren möchte (z. B. Minecraft oder Terraria-Server oder ein anderer Dienst vollständig). Aber auch das funktioniert nicht:

[root@dragonweyr /home/calyodelphi]# iptables -P ACCEPT_TCP_UDP DROP
iptables: Bad built-in chain name.

Dies wird in höflicher Hinsicht sehr frustrierend (das Ausmaß der damit verbundenen Flüche würde einen Seemann dazu bringen, auf meinen Mund zu achten). Mein Google-fu ist schrecklich, deshalb habe ich noch keine funktionierende Lösung für all dies gefunden. Ich verwende CentOS 6.5 auf dem Router. Jede Hilfe und jeder Hinweis, den ihr anbieten könnt, wäre fantastisch.

BEARBEITEN:

Bonusfrage: Ich plane auch, die Portweiterleitung zu konfigurieren. Müssen weiterhin Regeln festgelegt werden, um eingehende Verbindungen über bestimmte Ports zu akzeptieren?

Calyo Delphi
quelle

Antworten:

27

Geben Sie zuerst eine -pOption wie -p tcpoder an -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 es auch versuchen, -p allaber ich habe das nie getan und finde in den Beispielen nicht allzu viel Unterstützung dafür.

dmourati
quelle
1
Ich habe es gerade mit probiert -p allund habe genau den gleichen Fehler bekommen. unknown option --dport. Es hat funktioniert, -p tcpaber das wird mir in diesem Fall nicht wirklich helfen, da es nur zu demselben Problem führt: das Definieren individueller TCP / UDP-Regeln für alles.
Calyo Delphi
Nach meiner Erfahrung hat die Verwendung von noch allnie mit der Angabe eines Ports funktioniert. Anstatt jedoch mehrere Regeln für verschiedene Protokolle zu haben, können Sie sich die Regeln in einer anderen Richtung überlegen. Erstellen Sie Regeln basierend auf dem Protokoll und verwenden Sie dann die multiportsOption, um einige Regeln zu gruppieren.
canadmos
Wenn ich also Terraria- und Minecraft-Verbindungen aktivieren möchte, kann ich mithilfe von Multiports 7777 und 25565 öffnen und für jedes Portpaar eine TCP- und UDP-Regel erstellen.
Calyo Delphi
3
Die Option -p muss ein einzelnes Protokoll sein, das das Konzept von Ports hat ( -p ICMP --dport whateverwürde aus offensichtlichen Gründen auch nicht funktionieren).
Falcon Momot
9

Protokoll (-p) ist erforderlich, wenn Sie --dport verwenden. Beispiel:

-p tcp
Diego Woitasen
quelle
Darüber hinaus muss ein Protokoll angegeben werden, das das Konzept von Ports aufweist, wie @FalconMomot bereits in einem Kommentar ausgeführt hat.
CVn
Sie haben Recht, für dieses Detail :)
Diego Woitasen
3

@dmourati und @diegows haben Ihre erste Frage bereits beantwortet, daher werde ich mich mit Ihrer zweiten Frage befassen. Und Bonusfrage. Und ich werde auch einen Bonus-Tipp einwerfen;)

iptables -P Akzeptiert nur eingebaute Ketten. In der filterTabelle würde, dass sein INPUT, OUTPUTund FORWARDKetten.

Die Portweiterleitung wird von der INPUTKette nicht verarbeitet, sodass Sie den Port in der INPUTKette nicht öffnen müssen . Es wird jedoch von der FORWARDKette gehandhabt . Sei vorsichtig damit.

Bonus-Tipp: Beim Lernen und / oder bei der Fehlerbehebung iptablesist der Output von " iptables-saveKopf & Schultern" besser als der Output von "Kopf & Schultern" iptables -L -v --line-numbers. Probieren Sie es aus, Sie werden angenehm überrascht sein :)

pepoluan
quelle
+1 für eine gute Antwort, aber ich bin ein wenig überrascht von Ihrem letzten Kommentar. Ich hasse es,iptables Probleme mit der -saveAusgabe zu diagnostizieren . warum findest du es besser als iptables -L -n -v [--line-numbers]?
MadHatter unterstützt Monica
@ MadHatter einfaches Beispiel: Sie können leicht sehen, dass Regeln mit den --dportOptionen tatsächlich -p tcpvor sich haben. Sie können auch sehen, wie / wann die Regelverarbeitung von einer eingebauten Kette (z. B. INPUT) zu einer benutzerdefinierten Kette (z. B. ACCEPT_TCP_UDP) wechselt. Diese beiden wichtigen Informationen sind in der Ausgabe von nicht sichtbar iptables -L -n.
Pepoluan
3
Ein weiterer Vorteil: Ich kann mit vim iptables-save > somefilebearbeiten somefileund dann iptables-apply -t 600 somefiletesten. Wenn ich mich versehentlich ausblende, kehren die Regeln nach 600 Sekunden zurück.
Pepoluan
Der Bonus-Tipp wird sehr geschätzt und bereits genutzt. iptables-saveBevor ich diese Frage stellte, benutzte ich, um aus einem Raw-Konfigurations-Dump zu lernen. Ich hatte jedoch nicht damit gerechnet, dass sich die FORWARDKette dort befindet, wo ich auf die Portweiterleitung achten muss. Ich werde darüber nachlesen müssen.
Calyo Delphi
@CalyoDelphi Wenn Sie nach "netfilter package flow diagram" suchen, werden Sie sehen, wo jede Tabelle und Kette gilt ;-)
pepoluan