
Für einige Weiterleitungsaufgaben verwende ich ein Skript, um eine benutzerdefinierte Kette hinzuzufügen. Ein Teil des Codes ist hier (als Root ausführen):
iptables -t nat -N v2ray_forwarder
iptables -t nat -I OUTPUT -j v2ray_forwarder
iptables -t nat -A v2ray_forwarder -p tcp -m set --match-set srv_ip dst -j RETURN
iptables -t nat -A v2ray_forwarder -d 0.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 10.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 127.0.0.0/8 -j RETURN
iptables -t nat -A v2ray_forwarder -d 192.168.0.0/16 -j RETURN
iptables -t nat -A v2ray_forwarder -p tcp -m set --match-set gfw_ip dst -j REDIRECT --to-port 1081
iptables -t nat -A v2ray_forwarder -p tcp -m set ! --match-set chn_ip dst -j REDIRECT --to-port 1081
Der Code funktioniert einwandfrei und ich bin sicher, dass die Pakete korrekt weitergeleitet wurden. Aber nachdem ich auf tippe sudo iptables -L
, kommt Folgendes:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Auf meinem Router (OpenWRT) iptables -L
wird immer angezeigt, dass alle Ketten vorhanden sind, aber auf meinem Laptop funktioniert es nicht. Kann mir jemand sagen, warum?
Danke schön!
Antwort1
Die benutzerdefinierten Ketten sind an eine Tabelle gebunden. Das bedeutet, dass Sie eine in der Tabelle erstellte Kette nicht mangle
in Regeln der filter
oder der nat
Tabellen verwenden können.
Der iptables -L
Befehl zeigt nur die filter
Tabellenketten an. Überprüfen Sie die Ausgabe von iptables -t nat -L
. Verwenden Sie den Befehl jedoch besser, iptables-save -c
um den vollständigen Regelsatz mit Zählern aufzulisten.