folgendes kleines skript läuft auf Rechner B und leitet die Pakete die von Rechner A(.55) kommen an Rechner C(.21) weiter
das ganze habe ich zum testen auf Rechnern durchgeführt, die ich vollständig administrieren kann.Code:iptables -F iptables -X iptables -t nat -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -A PREROUTING -i eth0 -s 1xx.xx.xx.55/32 -p udp -m udp --dport 9955 \ -j LOG --log-level 7 iptables -t nat -A PREROUTING -i eth0 -s 1xx.xx.xx.55/32 -p udp -m udp --dport 9955 \ -j DNAT --to 1xx.xx.xx.21:9955 iptables -A FORWARD -p udp --dport 9955 -d 1xx.xx.xx.21 -j ACCEPT
die Regeln habe ich dann auf dem eigentlichen Zielrechner eingespielt. Leider kommen dann die Pakete nicht mehr am Zielrechner an. Zwischen Testsystem und realem System gibt es allerdings ein paar Unterschiede.
den Sender im Testsystem sendet nicht so viele Daten und vor allem nicht so schnell hintereinander, wie im realen System.
Im realen System werden die Pakete anscheinend nicht durch die PREROUTING - Regeln modifiziert sondern gehen direkt zu INPUT und kommen auf den Rechner an anstatt über die FORWARD - Regeln weitergereicht zu werden.
Desweiteren habe ich das Problem, dass das Loggen der Daten in der Tabelle 'nat' nicht durchgängig funktioniert. Gelegentlich kommt es wohl doch vor, dass die Nachrichten mitgeloggt werden, allerdings kann ich das ganze nicht reproduzieren, evtl ordne ich das ganze auch fälschlicherweise der Tabelle zu.
nun zu meinen Fragen ;-):
- funktioniert das loggen im Bereich PREROUTING überhaupt? oder habe ich da etwas überlesen?
- gibt es da noch einen Cache, der offene Sessions speichert, auch wenn neue Regeln (mit obigem skript) geladen werden? Wenn ja, kann ich den irgendwie löschen?
- oder greift der Kernel evtl auf den Cache zurück und umgeht dadurch die Filterregeln? (die Pakete kommen wirklich zügig hintereinander < 0.1 sec, Paketgröße < 500 Byte)
Grüße
Reinhard
ps: für die Tests wie auch das Zielsystem wird CentOS 5.1 eingesetzt
Lesezeichen