[Problem] Problem mit iptables

inte

Neuer User
Mitglied seit
6 Jan 2007
Beiträge
127
Punkte für Reaktionen
0
Punkte
0
Hallo liebe Freetz-Gemeinde,

ich habe offenkundig ein Problem mit iptables, denn die von mir gesetzten Regeln greifen offenbar nicht (oder nur sehr unzuverlässig).
Ich möchte den Tor-Socks Proxy wie auch Privoxy für einen Clienten fix voreinstellen.
Dazu habe ich in der rc.custom folgendes eingetragen:
Der erste Teil dient dazu, sämtliche Anfragen an Port 80 (also http, kein https - das kann Privoxy im intercepted-mode nicht händeln) nach Privoxy umzuleiten:

iptables -t nat -A PREROUTING -p tcp -i lan -s 192.168.3.10 --dport 80 -j REDIRECT --to 8118

mit

[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config

wird der intercepted mode von Privoxy überhaupt erst aktiviert (eine schlauere Möglichkeit als die rc.custom scheint es dazu offenbar nicht zu geben, oder?). Im Webinterface lassen sich keine Optionen an die Config anhängen. Witziger Weise scheint DAS offenbar soweit zu funktionieren. Das reicht mir aber natürlich nicht :)

Nun möchte ich diesem Clienten nämlich auch .onion-Domains zugänglich machen.
Dafür habe ich zunächst in der torrc folgende Änderungen vorgenommen (wieder via rc.custom, anders gehts ja scheinbar nicht??):

[ -z "$(grep VirtualAddrNetwork /var/mod/etc/tor/torrc)" ] && echo "VirtualAddrNetwork 10.192.0.0/10" >> /var/mod/etc/tor/torrc
[ -z "$(grep AutomapHostsOnResolve /var/mod/etc/tor/torrc)" ] && echo "AutomapHostsOnResolve 1" >> /var/mod/etc/tor/torrc
[ -z "$(grep AutomapHostsSuffixes /var/mod/etc/tor/torrc)" ] && echo "AutomapHostsSuffixes .exit,.onion" >> /var/mod/etc/tor/torrc
[ -z "$(grep TransPort /var/mod/etc/tor/torrc)" ] && echo "TransPort 9040" >> /var/mod/etc/tor/torrc
[ -z "$(grep DNSPort /var/mod/etc/tor/torrc)" ] && echo "DNSPort 9053" >> /var/mod/etc/tor/torrc

Also das lokale Netz konfiguriert, auf die die .onions gemappt werden sollen, und noch weitere Änderungen vorgenommen, die laut verschiedenen Seiten im Netz immer gleich oder ähnlich beschrieben sind).
Nun läuft also lokal ein DNS auf Port 9053, außerdem kann ich lokal auf der Fritzbox auch auf .onion-Domains connecten (getestet mit Telnet).
ABER: Ich will ja nicht lokal connecten, sondern der Client soll das tun.
Daher hab ich mir noch folgende iptables-Regeln überlegt:

iptables -t nat -A OUTPUT -p udp -s 192.168.3.10 -m udp --dport 53 -j REDIRECT --to-ports 9053

>> Leitet die DNS-Anfragen von der IP auf den 9053 auf dem Router um (also den lokalen TOR-DNS).

iptables -t nat -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --syn -j REDIRECT --to-ports 9040

>>Leitet alles was sonst noch von der IP kommt auf 9040 auf dem Router um.

iptables -t filter -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --dport 9040 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -s 192.168.3.10 -m udp --dport 9053 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --dport 9053 -j ACCEPT
iptables -t filter -A OUTPUT ! -o lo -s 192.168.3.10 -j DROP

>>Am Ende noch ein paar Regeln, die den Traffic zurücksenden bzw. Droppen, falls er wo anders hin möchte.
So.
Nun bin ich mir leider überhaupt nicht sicher, ob die Regeln richtig sind (scheinbar ja nicht, es klappt ja nicht), bzw. etwas genauer:
--ob der Syntax korrekt ist (insbesondere mit dem -s IP bin ich mir da nicht sicher)
--ob die Reihenfolge der Regeln korrekt ist?

Ich bin kein großer Iptables-Experte (bzw. meine letzten größeren Versuche mit Firewalls waren mit pf auf OpenBSD, und das fand ich einfacher :)).
Es wäre toll wenn mir noch jemand ein paar Tips geben könnte. Danke!

Hier nochmals die gesamte rc.custom am Stück:

modprobe ip_tables
modprobe iptable_filter
modprobe x_tables
modprobe xt_tcpudp
modprobe ipt_REDIRECT
modprobe ip_nat
modprobe iptable_nat
iptables -t nat -A PREROUTING -p tcp -i lan -s 192.168.3.10 --dport 80 -j REDIRECT --to 8118
[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config
[ -z "$(grep VirtualAddrNetwork /var/mod/etc/tor/torrc)" ] && echo "VirtualAddrNetwork 10.192.0.0/10" >> /var/mod/etc/tor/torrc
[ -z "$(grep AutomapHostsOnResolve /var/mod/etc/tor/torrc)" ] && echo "AutomapHostsOnResolve 1" >> /var/mod/etc/tor/torrc
[ -z "$(grep AutomapHostsSuffixes /var/mod/etc/tor/torrc)" ] && echo "AutomapHostsSuffixes .exit,.onion" >> /var/mod/etc/tor/torrc
[ -z "$(grep TransPort /var/mod/etc/tor/torrc)" ] && echo "TransPort 9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr" >> /var/mod/etc/tor/torrc
[ -z "$(grep DNSPort /var/mod/etc/tor/torrc)" ] && echo "DNSPort 9053" >> /var/mod/etc/tor/torrc
iptables -t filter -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --dport 9040 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -s 192.168.3.10 -m udp --dport 9053 -j ACCEPT
iptables -t nat -A OUTPUT -p udp -s 192.168.3.10 -m udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --syn -j REDIRECT --to-ports 9040
iptables -t nat -A OUTPUT -p tcp -d 10.192.0.0/10 -j REDIRECT --to-ports 9040
iptables -t filter -A OUTPUT ! -o lo -s 192.168.3.10 -j DROP
 
iptables -t filter -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --dport 9040 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -s 192.168.3.10 -m udp --dport 9053 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -s 192.168.3.10 -m tcp --dport 9053 -j ACCEPT
iptables -t filter -A OUTPUT ! -o lo -s 192.168.3.10 -j DROP
Wie "verträgt" sich die OUTPUT chain mit der source-IP-Address 192.168.3.10? Für die Clients an der FB, sind die PREROUTING, FORWARD, POSTROUTING chains "zuständig".
 
Hi sf3978,

ich hab mich an den Regeln von https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/irssi orientiert.
Hab mir schon gedacht dass da was nicht stimmt :)

Dort sind diese Regeln beschrieben:
# You may want to use a different set of rules depending on iptables versions, etc
# This does NOT COVER IPV6!!!
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner ircuser -m tcp --syn -j REDIRECT --to-ports 9040
iptables -t nat -A OUTPUT -p udp -m owner --uid-owner ircuser -m udp --dport 53 -j REDIRECT --to-ports 5353
iptables -t filter -A OUTPUT -p tcp -m owner --uid-owner ircuser -m tcp --dport 9040 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -m owner --uid-owner ircuser -m udp --dport 5353 -j ACCEPT
iptables -t filter -A OUTPUT ! -o lo -m owner --uid-owner ircuser -j DROP

Allerdings hab ich ja keine UserID sondern möchte das über die IP regeln...
Ist dann -d richtig, oder kann man das gar nicht machen? Meckern tut ipchains jedenfalls nicht, wenn man die Regeln so setzt, wie ich das probiere (nicht dass das irgendwie bedeuten würde dass sie richtig sind:))
 
Allerdings hab ich ja keine UserID sondern möchte das über die IP regeln...
Ist dann -d richtig, oder kann man das gar nicht machen?
-d wird für die destination-IP-Address benutzt. I. d. R. ist die OUTPUT chain für lokale Prozesse (auf der FritzBox) "zuständig". Evtl. kannst Du mit einem einfachen und für dich verständlichem Beispiel testen, ob iptables in der OUTPUT chain, "-s 192.168.3.10" benutzen kann.
 
Mh, ehrlich gesagt gibt es bei iptables nicht viele "mir verständliche Beispiele":)
Damned, ich glaube ich stelle mir doch nen OpenBSD-Router neben die Fritzbox, alleine schon wegen PF. Iptables ist ja offenbar von Sadisten programmiert grrr...
Aber, nichts überstürzen, ich probiere natürlich erst nochmal mit iptables.
Vielleicht hätte ja jemand ein passendes Ruleset impetto, würde mir natürlich extremst helfen.
Danke!
 
Ok nun klappts.

Ich habe nun folgende Einstellungen laut diesem Tutorial vorgenommen https://learn.adafruit.com/onion-pi/install-tor:

root@fritz:/var/mod/root# cat /mod/etc/tor/torrc
### generated by /tmp/flash/tor/tor_conf
User tor
Group tor
DataDirectory /var/tmp/tor
SocksPort 9050
SocksListenAddress 127.0.0.1
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .exit,.onion
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.3.1
DNSPort 5353
DNSListenAddress 192.168.3.1

root@fritz:/var/mod/root# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- 192.168.3.10 anywhere tcp dpt:www redir ports 8118
REDIRECT udp -- 192.168.3.10 anywhere udp dpt:domain redir ports 5353
REDIRECT tcp -- 192.168.3.10 anywhere tcpflags: FIN,SYN,RST,ACK/SYN redir ports 9040


Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@fritz:/var/mod/root#

Also, meine Fehler:
-Die urspruenglich gesetzten Routen waren absoluter Murks, UND die Torrc war fehlerhaft. Also gleich ZWEI Fehler auf einmal :)
Hier die Lösung:

Richtig ist folgender Eintrag in der rc.custom:
modprobe ip_tables
modprobe iptable_filter
modprobe x_tables
modprobe xt_tcpudp
modprobe ipt_REDIRECT
modprobe ip_nat
modprobe iptable_nat
iptables -t nat -A PREROUTING -p tcp -i lan --dport 80 -j REDIRECT --to 8118
[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config
iptables -t nat -A PREROUTING -i lan -p udp -s 192.168.3.10 --dport 53 -j REDIRECT --to-ports 5353
iptables -t nat -A PREROUTING -i lan -p tcp -s 192.168.3.10 --syn -j REDIRECT --to-ports 9040

In der /tmp/flash/tor/tor_conf muss ans Ende der Datei folgender Eintrag:

cat << 'EOF'
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .exit,.onion
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.3.1
DNSPort 5353
DNSListenAddress 192.168.3.1

Falls das mal jemand nachkochen möchte:
Anzupassen wären dann jeweils die internen IP-Adressen, also die des Routers (192.168.3.1 bei mir) und die des zu routenden Rechners (exemplarisch 192.168.3.10 bei mir) auf das eigene Netz.
HINT: VirtualAddrNetwork ggf. auch noch anpassen, falls man dieses private Subnetz selber bereits in Benutzung hat - dann einfach auf ein anderes, beliebiges, privates Netzwerk ausweichen, das nicht in bereits in Benutzung ist.
Noch zu erwähnen wäre, dass ich in meiner Config nun (in voller Absicht) sämtlichen http-Traffic durch Privoxy leite, also alles was an http geht wird anonymisiert. Das kann man aber natürlich auch wieder einschränken, indem man mit "-s IP" die Clients benennt, die durch Privoxy geroutet werden sollen.
Enjoy!
 
Zuletzt bearbeitet:
Hi,
ich muss mich hier jetzt mal ran hängen,hab in meinem FReetz Image für meine 7490, Privoxy,Tor und ipTables mit CGI.

Bis jetzt hab ich immer nur Privoxy und Tor genutzt indem ich auf meinem PC die Proxy Einstellungen so vorgenommen habe das diese sich immer mit dem Privoxy Port verbinden.

Jetzt wollte ich mich mal ein wenig mit ipTablets beschäftigen so das ich dort eine IP eines Client PC'S definiere und IPTablests das dann weiter an Privoxy bzw. Tor leitet.

Wenn ich das doch jetzt richtig verstehe, dann wäre doch die "Source" der jeweilige Client PC und die "Destination" Privoxy!?

Privoxy läuft in meinem Fall auf dem Port 9051 auf meiner FB, aber wie kann ich diesen Port in den ipTablets einstellen?

Hoffe ihr könnt mir hier ein paar Tips geben.

Danke
 

Anhänge

  • IPTabletts.jpg
    IPTabletts.jpg
    90.6 KB · Aufrufe: 11
Was Du beschreibst nennt man in diesem Fall NAT. Es gibt zahlreiche Threads, die das Thema NAT mit iptables/netfilter beleuchten (zuletzt hier).

Mit Deiner Box könnte das deshalb funktionieren, weil sie einen neueren Kernel verwendet. Du kannst versuchen, mit der Kernel-Konfiguration Deiner 7490 ein wenig herumzuprobieren (z.B. wie hier) und die Module nf_conntrack, nf_conntrack_ipv4,,nf_nat, ipt_REDIRCT und xt_state als Module zu bauen und nach dem Start der Box zu laden. Sollte das klappen, kannst Du das, was Du möchtest, analog zum Abschnitt des "transparenten Proxies" im Privoxy-Wiki vornehmen.
 
Jetzt hast du mich endgültig verwirrt:) :-( ich will doch nur festlegen das PC A alles über Privoxy sendet und PC B halt nicht.
Geht das nicht "einfacher"?

Was kann ich sonst mit ipTablets
Machen?
 
Du kannst im Netzwerk der Box festlegen, daß ein Gerät immer dieselbe feste IP zugewiesen bekommt.
Für diese IP (bspw. für PC A) kannst Du unter iptables eine entsprechende Regel anlegen.
Hattest Du Dir den Abschnitt über transparente Proxies angesehen ?
 
Zuletzt bearbeitet:
Hi,
so hab mir den transparenten Proxy mal angesehen, in meinem Freetz Image ist IPTablets drin, allerdings bekomme ich trotzdem wenn ich dem transparenten Proxy einstellen will über die Konsole diese Fehlermeldung:
Code:
root@fritz:/var/mod/root# modprobe ipt_REDIRECT
modprobe: module ipt_REDIRECT not found in modules.dep
root@fritz:/var/mod/root# modprobe ip_nat
modprobe: module ip_nat not found in modules.dep
root@fritz:/var/mod/root# modprobe iptable_nat
modprobe: module iptable_nat not found in modules.dep
Was läuft da noch falsch, bzw. fehlt in meinem Image?

Weiterhin hätte ich dann hierzu noch eine Frage
ptables -t nat -A PREROUTING -p tcp -i lan --dport 80 -j REDIRECT --to 8118
[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config

Wenn ich das hier
Code:
http://freetz.org/wiki/packages/iptables
richtig verstehe, müsste das ganze bei mir so aussehen:
Code:
ptables -t nat -A PREROUTING -p tcp -i 192.168.188.50 --dport 80 -j REDIRECT --to 192.168.188.1:9051
[ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config


wobei 192.168.188.50 der Client PC ist welcher über Privoxy/Tor geleitet werden soll und 192.168.188.1:9051 Privoxy ist.

Wäre das richtig?

Wenn ich das richtig verstehe, dann werden dann aber ja "nur" die Anfragen über Port 80 (http) über Privoxy geleitet? Wie kann ich denn den gesamten Traffic des Client PC's darüber leiten?

Danke
 
Scheinbar hast Du die Module nicht gebaut/installiert.
Check mal Deine Freetz-Config, oder gibt es Fehlermeldungen beim Kompilieren?
 
Btw:
Du kannst auch mal versuchen die Module mit insmod <Pfad zum Modul/Modulname> direkt zu laden. Wenn sie überhaupt gebaut wurden.

Ich halte das "ptables" in Deinem Posting für einen Cut'n Paste-Fehler oder? Muss natürlich "iptables" heißen :)
 
Zuletzt bearbeitet:
Kann es sein das es beim aktuellen freetz Trunk (nach svn up) kein iptabletes mehr gibt unter make menuconfig?
 
@Coolzero82:
Bei allem Verständnis dafür, daß man nicht jeden Tag hier lesen kann und muß, aber dann muß/sollte man eben die Beiträge, die in der Zeit der eigenen Abwesenheit aufgelaufen sind, auch nachträglich lesen ... das sollte m.E. eine Selbstverständlichkeit sein, denn sonst beruft sich jeder auf das Recht, die bereits abgehandelten Fragen erneut stellen zu dürfen und so erwartet dann jeder seine "individuelle Antwort".

Da für die 06.50 (und die hast Du sicherlich ausgewählt, aber auch das steht nicht in der Frage - für die 06.30 funktioniert die Auswahl aber) keine Kernel-Quellen eingebaut sind (die sind auch erst seit vorgestern Nachmittag verfügbar, also noch keine 48 Stunden), kannst Du gar keine Kernel-Module bauen und folglich auch keine Pakete, die solche Module benötigen.
 
Habe privoxy und tor auf meiner box und möchte das alle clients den Internet traffic über tor laufen lassen . Was mus ich umbiegen .Geht das auch mit der ANM Firewall oder braucht man dazu zwangsweise iptables.
 
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.