Linux iptables abgelehnt - Wie aktiviere ich es wieder?


8

Ich habe also einen Client in meinem Netzwerk, der über meinen Computer mit arpspoof mit dem Router verbunden ist. Wenn ich weiß, dass ich die Paketweiterleitung stoppen möchte, führe ich Folgendes aus:

iptables -A FORWARD -j REJECT

Das funktioniert so, wie ich es erwartet hatte. Aber wenn ich versuche, etwas zu tun wie:

iptables -A FORWARD -j ACCEPT

Ich kann es nicht schaffen, dass die Pakete wie am Anfang durchlaufen werden.

Mache ich etwas falsch oder gibt es andere Argumente, die ich anders als "AKZEPTIEREN" verwenden sollte?


4
Durch die Art und Weise Sie verwenden -A, vielleicht möchten Sie verwenden -Pdie festlegen P olicy (Standard - Aktion , wenn keine andere Regel in der Kette gilt). Zum Beispiel iptables -P FORWARD DROP(kann nicht sein REJECT).
JoL

Was bedeutet "die Frage sollte angemessene Systemmanagementfähigkeiten nachweisen"? :)
Marco

Antworten:


35

IPtables verfügt über eine Liste von Regeln und überprüft für jedes Paket die Liste der Regeln in der angegebenen Reihenfolge. Sobald eine Regel gefunden wurde, die mit dem Paket übereinstimmt und eine Richtlinie angibt (ACCEPT, REJECT, DROP), wird das Schicksal des übereinstimmenden Pakets bestimmt. Es werden keine Regeln mehr geprüft.

Dies bedeutet, dass die Reihenfolge, in der Sie Befehle ausführen, wichtig ist. Wenn Sie verwenden iptables -A, fügen Sie am Ende der Regelliste eine Regel hinzu, sodass Sie eine Regelliste erhalten, die folgendermaßen aussieht:

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere

Da die REJECTRegel vor der ACCEPTRegel steht, wird sie zuerst ausgelöst, sodass keine Weiterleitung erfolgt.

Sie müssen daher die REJECTRegel löschen, anstatt eine ACCEPTRegel hinzuzufügen . Führen Sie aus, um die REJECT-Regel zu löschen

iptables -D FORWARD -j REJECT 

Weitere Informationen finden Sie in der Manpage zu iptables.


18

Das -AFlag weist iptables an, die Regel an die Kette anzuhängen, was bedeutet, dass sie unter Ihrer REJECTRegel endet. Da die erste Regel übereinstimmt, wird sie nie verwendet.

Sie listen Ihre Regeln mit auf iptables -L FORWARDund Sie werden dies selbst sehen. Führen Sie aus, um die hinzugefügte Regel zu entfernen

iptables -D FORWARD -j REJECT 

Bis es keine solchen Regeln mehr in der Kette gibt.


1

Was ist mit dem Ende der FORWARDRegel, um in eine neue Kette zu springen, in der es nur eine Regel gibt ? Es kann sein ACCEPToder REJECT. Sagen...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

Danach können Sie diese eine Regel in so accept-chainetwas wie ändern

iptables -R accept-chain 1 -j REJECT

Verkehr deaktivieren oder -j ACCEPTaktivieren.

Auch welche Menge zum Ein- und Ausschalten des Routings

echo "0" > /proc/sys/net/ipv4/ip_forward

zum Deaktivieren der Paketweiterleitung und "1"- zum Aktivieren.


0

Ordnung ist wichtig. Dadurch wird Ihre Regel oben eingefügt, anstatt sie anzuhängen.

iptables -I FORWARD 1 -j ACCEPT

-Ich soll einfügen und # 1 ist die Position

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.