PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [access_log] Apache hinter Router mit Portforwarding



RichieX
11.06.04, 09:07
Hi,

Ich habe meinen Apache hinter einem Router (iptables) am laufen, der mittels Portforwarding (Dest.-NAT) erreichbar ist. In der access_log und error_log ist nun aber die Zugriffs-IP immer die interne IP des Routers. Wie kann ich erreichen, dass reelle Adressen in der access(error)_log geloggt werden.

RichieX

Schärple
11.06.04, 10:12
So einfach denke ich gar nicht. Die Adressen werden ja _real_ in Interne umgesetzt. Die Table zum Aufschlüsseln der Socketverbindungen und damit ein Zurückübersetzten wird nicht im Header übertragen sondern am Router lokal gespeichert.

Harry
11.06.04, 10:21
Das hängt davon ab, ob Du ausschließlich DNAT benutzt, oder aber auch SNAT, um am Router die externe IP des anfragenden Clients in lokale Adressen umzuwandeln.
Benutzt Du zufällig ein Filterskript vom iptables Generator?

Harry

RichieX
11.06.04, 11:03
Zur Klärung der Fragen, der iptables Code (von Harry) :) - Dank an Harry!




# NAT fuer HTTP
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.28.110:80
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.28.110 --dport 80 -j ACCEPT



RichieX

Harry
11.06.04, 11:27
Hi RichieX,

vorausgesetzt, Du hast Masquerading auf dem Router aktiviert _und_ Dein Webserver hat den Router als Default-Gateway in der Routingtabelle eingetragen, kannst Du die Zeilen mit dem Target "-j SNAT" einfach auskommentieren und den Filter neu starten.

Dann bekommst Du in den Logfiles die "echten" IP-Adressen der Clients geloggt.

Harry

RichieX
11.06.04, 12:12
Funktioniert! Danke Harry. Nun zum zweiten mal. :)

RichieX