[GELÖST] Problem mit iptables

Beppo98

Neuer User
Mitglied seit
5 Nov 2009
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Guten Abend,

nachdem ich jetzt die neueste Freetz-Version zum laufen bekommen habe, plage ich mich nun mit den iptables rum.

Mein Ziel ist die Einrichtung eines transparenten Proxys. Somit sollen alle anfragen auf Port 80 über den Proxy umgeleitet werden.

Das iptables-Paket habe ich in die Firmware integriert. Leider bekomme ich beim ausführen des folgenden Befehls:

Code:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8118
folgenden Fehler:

iptables: No chain/target/match by that name
Zu dem Fehler findet man zwar genügend Informationen, jedoch gelang es mir nicht, den Fehler auch zu beheben.

Hier ist die Liste der temporär eingebundenen Module:

Code:
[FONT="Courier New"]/var/tmp/flash # lsmod
Module                  Size  Used by    Tainted: P
ipt_REJECT              3581  0
ipt_iprange             1494  0
ipt_MASQUERADE          2579  0
ipt_LOG                 7037  0
iptable_filter          2158  0
ipt_REDIRECT            1562  0
iptable_nat             5837  1
ip_nat                 15833  3 ipt_MASQUERADE,ipt_REDIRECT,iptable_nat
ip_conntrack           46260  3 ipt_MASQUERADE,iptable_nat,ip_nat
ip_tables              11822  2 iptable_filter,iptable_nat
x_tables               13427  7 ipt_REJECT,ipt_iprange,ipt_MASQUERADE,ipt_LOG,ip
t_REDIRECT,iptable_nat,ip_tables
rtc_sysfs               2704  0
rtc_proc                3847  0
rtc_dev                 5493  1
sch_sfq                 5619  4
sch_llq                 9102  1
sch_tbf                 5664  1
kdsldmod              867132  4
musb_hdrc              37281  0
usbcore               125996  2 musb_hdrc
dect_io                21126  2
avm_dect              388083  1 dect_io
capi_codec            142935  0
isdn_fbox_fon5        761042  0
pcmlink               249602  3 avm_dect,capi_codec,isdn_fbox_fon5
rtc_avm                 6573  2 pcmlink
rtc_core                7083  4 rtc_sysfs,rtc_proc,rtc_dev,rtc_avm
rtc_lib                 2712  3 rtc_sysfs,rtc_avm,rtc_core
dsl_ur8               170609  0
jffs2                 115345  1
Piglet_noemif          36490  0
led_modul_Fritz_Box_7270    63132  6[/FONT]

Ich habe im Beispiel den verzweifelten Versuch gewagt alle vorhandenen Module welche für iptables relevant sein könnten zu installieren.

Ich wäre sehr dankbar, wenn ihr mir vielleicht auch Auskunft darüber geben könntet, welche Module nicht benötigt werden.

Gruß Beppo
 
Zuletzt bearbeitet:
Du könntest mal mit den Optionen experimentieren, um herauszufinden, an welcher es liegt. Meine Vermutung ist, daß es am REDIRECT liegt und die Datei /usr/lib/iptables/libipt_REDIRECT.so fehlt.
 
Hast Du getestet ob eth0 dein Input-Interface ist?
Denn bei mir funktioniert das mit privoxy:
$ipt -t nat -I PREROUTING 1 -m limit --limit 60/h -m state --state NEW -j LOG --log-prefix ***Port_80-connection:
$ipt -t nat -I PREROUTING 2 -i lan -p tcp --dport 80 -j REDIRECT --to-port 8118

Nov 6 19:42:28 fritz user.warn kernel: ***Port_80-connection:IN=lan OUT= MAC=00:xx:xx:xx:xx:xx:00:xx:xx:xx:xx:xx:xx:00 SRC=192.168.###.### DST=192.168.###.### LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=62154 DF PROTO=TCP SPT=58919 DPT=8118 WINDOW=65535 RES=0x00 SYN URGP=0

# lsmod
Module Size Used by Tainted: P
...
ipt_REDIRECT 1536 1
...
 
OK. Nach der "libipt_REDIRECT.so" kann man mit "find" schauen:
# find / -iname 'libipt_REDIRECT.so'
/usr/lib/xtables/libipt_REDIRECT.so
Diese Module sind bei mir geladen:
Code:
# lsmod
Module                  Size  Used by    Tainted: P
ipt_REDIRECT            1536  0
ipt_MASQUERADE          2496  0
ipt_multiport           2176  11
ipt_mac                 1504  0
ipt_state               1312  12
ipt_LOG                 7328  13
iptable_filter          2112  1
ipt_ipp2p               9280  0
ipt_helper              1440  0
ipt_ttl                 1440  0
ipt_mark                1184  0
ipt_layer7             12912  0
ipt_connmark            1216  0
ipt_tos                 1152  0
ipt_TOS                 1952  0
ipt_tcpmss              1856  0
ipt_TCPMSS              3648  0
ip_nat_ftp              2816  0
iptable_nat            22096  4 ipt_REDIRECT,ipt_MASQUERADE,ip_nat_ftp
ip_conntrack_ftp       71552  1 ip_nat_ftp
ip_conntrack_proto_sctp     7152  0
ip_conntrack           42288  7 ipt_MASQUERADE,ipt_state,ipt_helper,ip_nat_ftp,iptable_nat,ip_conntrack_ftp,ip_conntrack_proto_sctp
ipt_MARK                2144  0
ipt_iprange             1600  0
ipt_length              1216  0
ipt_limit               1856  3
ipt_REJECT              4800  10
iptable_mangle          2016  1
ip_tables              21088  24 ipt_REDIRECT,ipt_MASQUERADE,ipt_multiport,ipt_mac,ipt_state,ipt_LOG,iptable_filter,ipt_ipp2p,ipt_helper,ipt_ttl,ipt_mark,ipt_layer7,ipt_connmark,ipt_tos,ipt_TOS,ipt_tcpmss,ipt_TCPMSS,iptable_nat,ipt_MARK,ipt_iprange,ipt_length,ipt_limit,ipt_REJECT,iptable_mangle
Die mit "Used by 0" werden nicht benötigt. Privoxy und die Regel sind jetzt bei mir deaktiviert, deshalb jetzt "ipt_REDIRECT 1536 0".
 
Die Regel heisst --to-ports 8118 und nicht --to-port 8118



Code:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

Du kannst Dir das Handbuch im benachbarten Thread zur neuen iptables GUI holen, oder gleich das GUI verwenden.
 
Sorry, tatsächlich, mit --to-port geht es auch. iptables setzt das intern automatisch auf --to-ports um.
 
[...]. iptables setzt das intern automatisch auf --to-ports um.

Oder umgekehrt.;) Denn das howto von www.netfilter.org sagt Folgendes:
Umadressierung (Redirection)

Es gibt einen speziellen Fall von Destination NAT, der Redirection genannt wird: Es ist eine einfache Bequemlichkeit, die genau das gleiche tut wie NAT auf der eingehenden Schnittstelle.

## Eingehenden Webtraffic an Port 80 an unseren (transparenten) Squid-
# Proxy weiterleiten
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \
-j REDIRECT --to-port 3128
 
:gruebel:

iptables -t nat -S

sagt was anderes...

;)
 
Hey :)

da ich heute wieder an den Router konnte, habe ich eure Tipps gleich einmal probiert. Nach ein bisschen rumspielen hat sich aber das Problem fast von selbst gelöst. Der entscheidende Tipp war auch das Interface "lan".

Aktuell teste ich meine Einstellung mit der Installation folgender Module im Kernel:

Code:
/var/mod/root # modprobe ip_nat
/var/mod/root # modprobe ip_conntrack
/var/mod/root # modprobe ipt_REDIRECT
/var/mod/root # modprobe ipt_LOG
/var/mod/root # modprobe iptable_nat

Im Anschluss daran muss ich den Dienst über Freetz restarten, da ansonsten der im Eingangspost gepostete Fehler auftritt.

Anschließend funktioniert folgender Befehl auf Anhieb:

Code:
iptables -t nat -A PREROUTING -i lan -p tcp --dport 80 -j REDIRECT --to-port 8118

Rufe ich im Anschluss im Browser eine Seite auf, so erscheint folgende Meldung:

Invalid header received from client.

Es handelt sich also wohl um den gleichen Fall wie in diesem *Thread*

Um euch die Hilfe vielleicht etwas zu ersparen, habe ich bereits ein paar Informationen rausgesucht:

Code:
/var/mod/root # iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 49 packets, 3268 bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain POSTROUTING (policy ACCEPT 21 packets, 1686 bytes)
 pkts bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 13 packets, 1270 bytes)
 pkts bytes target     prot opt in     out     source               destination

/var/mod/root #

Code:
/var/mod/root # lsmod
ipt_REJECT              3581  0
ipt_REDIRECT            1562  0
ipt_MASQUERADE          2579  0
ipt_iprange             1494  0
ipt_LOG                 7037  0
ip_conntrack_ftp        6519  0
iptable_filter          2158  0
iptable_nat             5837  0
ip_tables              11822  2 iptable_filter,iptable_nat
x_tables               13427  11 xt_tcpudp,xt_MARK,xt_mark,xt_state,ipt_REJECT,i
pt_REDIRECT,ipt_MASQUERADE,ipt_iprange,ipt_LOG,iptable_nat,ip_tables
ip_nat                 15833  3 ipt_REDIRECT,ipt_MASQUERADE,iptable_nat
ip_conntrack           46260  5 xt_state,ipt_MASQUERADE,ip_conntrack_ftp,iptable
_nat,ip_nat

Code:
/var/mod/root # netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:49443           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:5060            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2502            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:51111           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:49000           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:51112           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2732            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:1011          0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.100:8118      0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2936            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8089            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1210            0.0.0.0:*               LISTEN

Da in dem anderen Thread leider der Threadhersteller keine Lösung gepostet hat bin ich nochmal auf eure Hilfe angewiesen. Ob ihr in der Zwischenzeit bereits rausgefunden habt, an was es liegen könnte.

Gruß Beppo
 
Was hättest Du denn für einen Header auf Port 8118 erwartet?


Was passiert denn, wenn du direkt auf http://fritz.box:8118/ gehst?

Du kanns es ja mal mit Port 8080 versuchen (der Kindersicherungs-Proxy der Fritz-Box von AVM)
 
Was hättest Du denn für einen Header auf Port 8118 erwartet?

Da bin ich mir jetzt leider selber nicht so sicher. Ich hätte gedacht, wenn ich die ganzen Anfragen einfach von Port 80 an den Proxy-Port 8118 weiterleite, dass ich somit den Proxy erzwinge. Ich weiß auch aktuell leider noch nicht, warum es Probleme mit dem Header gibt :(


Was passiert denn, wenn du direkt auf http://fritz.box:8118/ gehst?

Wenn die iptable-Regel nicht aktiviert ist, dann erscheint auf dieser Seite:

Invalid header received from client.


Du kanns es ja mal mit Port 8080 versuchen (der Kindersicherungs-Proxy der Fritz-Box von AVM)

Leider kann ich Privoxy nicht auf Port 8080 einstellen, da dort bereits der AVM eigene Proxy für die Kindersicherung läuft :(

Gruß Beppo
 
Du sollst testne, was dann passiert, wenn du deine Regel auf die Kindersicheurng umbiegst. Also die Resultate...
 
Offensichtlich erwartet der proxy einen proxy header, ist vielleicht kein transparenter proxy, oder falsch eingestellt.

iptables leitet die Anfrage konkret weiter, da die Ausgabe

Invalid Header received from client

ja von deinem Proxy kommt.

Wäre vielleicht ganz gut, wenn du aus dem "iptables Problem" ein "proxy Problem" machen würdest in deiner Headline, so dass das die Proxy - Cracks wahrnehmen und Dir vielleicht weiterhelfen, noch besser wärs, wenn Du erwähnen würdest, welchen Proxy Du benutzt..
 
Muss man den privoxy nicht konfigurieren um "transparent" zu sein?
 
Super, dann musst Du nur noch eins machen,

Die Thread-Überschrift auf Gelöst setzen und das Ganze als Privoxy / iptables Frage. Dann hat auch der Nächste was davon.

Ach ja, und noch netter wär's wenn du die Lösung nicht wieder löschst.
 
Welche Lösung? Ich seh hier keine...

Edit:

Na ja, immerhin in der Mail ;)

---Zitat von Silent-Tears---
Muss man den privoxy nicht konfigurieren um "transparent" zu sein?
---Zitatende---
Das war die Antwort :) Dankeschön :spocht:

Habe nur in der Config-Datei von Privoxy folgende Option hinzufügen müssen:


Code:
---------
accept-intercepted-requests 1
---------
Hier ist beschrieben wie mal Privoxy als transparenten Proxy konfigurieren.
*Klick* (http://www.privoxy.org/faq/configuration.html)

Somit habe ich es jetzt geschafft meine Konfiguration zu laufen zu bekommen :)

Gruß Beppo
 
[Edit frank_m24: Mehrere Beiträge zusammengefasst. Man kann seine Beiträge auch editieren.]
Sorry, war mit der Antwort etwas zu voreilig. Hatte im Browser manuell den Proxy eingetragen, weshalb es auch funktionierte ;) Aber genau das möchte ich ja nicht.

Mache zum Thema einen neuen Thread mit den Informationen hier auf, damit es übersichtlicher bleibt.

Mein Problem mit dem iptables ist ja soweit gelöst. Nun scheint es ja am Proxy zu liegen.

Gruß Beppo

[Beitrag 2:]
Ich entschuldige meine erneute Antwort, vielleicht bin ich auch gerade ein bisschen verwirrt. Aber es funktioniert jetzt doch ;)

Folgende Lösung gab es für das Proxy-Problem:

Wie Silent-Tears richtig erkannt, war der Privoxy nicht als transparenter Proxy konfiguriert. Um dies zu erreichen musste in der Configurationsdatei (/var/mod/etc/privoxy/config) folgende Option hinzugefügt werden:

Code:
accept-intercepted-requests 1

Dann funktioniert es auch mit den Headern ;) Danke nochmal für eure Hilfe.

Gruß Beppo

[Beitrag 3:]
Habe zum Thema kurz noch eine Frage.

Nach einem Neustart von Privoxy war nämlich die Konfigurationsdatei wieder überschrieben, was bedeutet, dass die Zeile accept-intercepted-requests 1 wieder entfernt war.

Wie schaffe ich es jetzt, dass diese Zeile auch beim Neustart nach enthalten ist?

Gruß Beppo
 
Schau mal, was das Kommando "modsave" so tut.
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
244,961
Beiträge
2,221,674
Mitglieder
371,731
Neuestes Mitglied
Taup3
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.