iptables - Problem

O

onlineuser

Mitglied
Hi,

habe folgende Konfiguration.

Server mit 2 Netzwerkkarten.

wifi: 192.168.77.1
LAN: 192.168.1.5

Vom wifi kommt man nur via OpenVPN ins LAN. Jetzt hab ich WLAN-Komponenten, die kein OpenVPN können und diese möchte ich nun vorbeischleußen.

Für meine WLAN-Kamera hab ich dies eingetragen, damit man vom LAN aus die Konfigseite von der WLAN Kamera öffnen kann.

Zitat:
iptables -A FORWARD -i eth1 -s 192.168.77.26 -o br0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i br0 -s 0/0 -o eth1 -d 192.168.77.26 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i br0 -d 192.168.1.5 --dport 88 -j DNAT --to 192.168.77.26:80
iptables -A FORWARD -p tcp -i br0 -d 192.168.77.26 --dport 80 -j ACCEPT
Nun möchte ich einer WLAN Komponente erlauben, dass diese zum Proxy Server auf 192.168.1.1:8080 darf (übern Proxy surfen kann).

Und dies gelingt mir irgendwie nicht.

Vielleicht kann mir jemand helfen!?

Liebe Grüsse.
 
Bei den iptables-Regeln mal überall noch LOG dazu wäre sicher sinnvoll.

Dann könntest Du mal mittels tcpdump -i ... auf den diversen Interfaces schauen, wie weit dein Paket den für ihn angedachten Weg geht.

Kannst Du von der "Komponente" aus irgendwie spezifischer testen? telnet, nmap o.ä.?

Und welche Regel trägst Du denn für die "Komponente" ein? Hast Du auch am Proxy den Zugriff für die IP aus dem fremden Netz erlaubt? Welche Fehlermeldung bekommst Du denn? Timeout oder Connection refused?
 
Naja, für den Bypass zum Proxy für einen Client hab ich noch keine Regeln.

Den Port der WLAN Kamera hab ich mittels NAT dem 192.168.1.0/24 Netz zur Verfügung stellen können. Dann wird der 192.168.1.5:88 einfach auf 192.168.77.26:80 weitergeleitet.

Jedoch nun benötige ich es umgekehrt - habs mit NAT und REDIRECT versucht, aber hat nicht funktioniert.

Das mit dem LOG teste ich mal. Testen kann ich mit allen Tools. Am Proxy hab ich auch den Zugriff, jedochwenn ich den Bypass mittels NAT mache, dann sollte der Proxy so bleiben können, wie er ist, oder?

Als Fehlermeldung kommt ein Timeout. Der Request kommt also nicht beim Proxy an, obwohl am Server sehe ich in der ARP-Table, dass er die ZielIP (Proxy) bei einem Request hinzufügt.
 
Klassisch für den Timeout wäre z.B. ein Problem mit der Rückroute vom Proxy.

Bist Du sicher, dass der Request hier nicht erscheint? Das (D)NAT sollte ja nur die Ziel-IP umsetzen, deswegen könnte es schon sein, dass am Proxy konfiguriert werden muss. Sowohl besagter Rückweg als auch evtl. der Zugriff für die ihm "fremde" IP.
 
vermute auch, dass der Rückweg nicht funktioniert

Du meinst also auch, dass die analoge Regel passt?

Aber durchs NAT kommt beim Proxy eh die IP 192.168.1.5 als Request an und nicht die aus dem 192.168.77.x Netz. Somit sollte der Proxy die Anfrage ja wieder auf 192.168.1.5 retour schicken und der Server dann wieder weiter zum 192.168.77.27 (Client), oder?
 
Aber durchs NAT kommt beim Proxy eh die IP 192.168.1.5 als Request an und nicht die aus dem 192.168.77.x Netz.

Da liegt m.E. dein Denkfehler. Unten beschreibst Du eine DNAT-Regel. Dabei wird aber die Ziel-IP umgeschrieben und nicht die Quell-IP. Man spricht eine IP in einem, dem anfragenden Rechner bekannten bzw. routbaren Netz an und diese wird am Router umgeschrieben (translated) auf eine andere, i.d.R. private Zieladresse.

Wenn Du also an deinem Server eine DNAT-Regel einrichtest mit dhost 192.168.1.5, dport 8080 auf 192.168.1.1:8080, dann kannst Du den Proxy über die Router-IP ansprechen, am Proxy kommt dein Request aber mit der IP aus dem 192.168.77.0-Netz an. Ansonsten müsstest Du ein SNAT einrichten, welches für shost 192.168.77.27 & dport 8080 auf eben z.B. 192.168.1.5 als Source-IP nat'et. Dann passt auch die Rückroute automatisch, im DNAT-Fall musst Du dem Proxy erklären, wo 192.168.77.0/24 liegt - nämlich hinter 192.168.1.5. Natürlich würde es prinzipiell auch reichen, nur den einen Client zurückzurouten (Hostroute), dann fällt man halt beim nächsten mal wieder drüber ;)
 
hm, ok, das mit snat statt dnat klingt einleuchtend, jedoch funktioniert das auch nicht.

nochmal meine Konfiguration:

http://www.unixboard.de/vb3/attachment.php?attachmentid=3544&stc=1&d=1261611501


eth1 und br0 sind nicht gebridged. Client 2 bekommt von eth1 eine IP und kann mittels OpenVPN Client eine Verbindung herstellen und bekommt am OpenVPN Adapter dann von 192.168.1.1 eine IP vom 192.168.1.0er Netz.

Client 1 soll ohne OpenVPN den HTTP-Proxy auf 192.168.1.1 benutzen dürfen.

HTTP Proxy auf 192.168.1.1 läuft auf Port 8080

dies, denke ich, ist mal notwendig für die Hinroute zum Proxy:

iptables -A FORWARD -i eth1 -s 192.168.77.26 -o br0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i br0 -s 0/0 -o eth1 -d 192.168.77.26 -j ACCEPT

und das SNAT sollte den Rest erledigen, oder?

iptables -t nat -A POSTROUTING -p tcp -o eth1 -j SNAT --to 192.168.77.26
iptables -A FORWARD -p tcp -i br0 -d 192.168.77.26 --dport 1024:65535 -j ACCEPT

aber mit diesen 4 Regeln funktioniert es leider nicht.

Was mache ich falsch?
 

Anhänge

  • Schema.JPG
    Schema.JPG
    13,4 KB · Aufrufe: 28
Zuletzt bearbeitet:
Wolltest Du nicht überall noch -j LOG,... einfügen? ;)

Sorry, aber das bekomme ich zur vorgerückten Stunde so nicht mehr durchgedacht, was Du da versuchst. ?(

Die SNAT-Regel sollte m.M.n. die Source für Anfragen von -s 192.168.77.26 auf 192.168.1.5 umschreiben. Dann kommt die Anfrage an den Proxy mit der IP des Servers daher und wird korrekt an ihn zurückgegeben. So herum muss natürlich 192.168.77.26 wissen, wo 192.168.1.1 liegt, wenn er ihn direkt ansprechen soll -> Route über 192.168.77.1 bekanntmachen.
 
Ok, habs nun gelöst :-)

iptables -A FORWARD -i eth1 -s 192.168.77.26 -o br0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i br0 -s 0/0 -o eth1 -d 192.168.77.16 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -o br0 -j SNAT --to 192.168.1.5:1024-65535

Jetzt muss ich halt noch den Zielport usw. noch einschränken, damit wirklich nur die Kommunikation zum Proxy durchgelassen wird und der Rest verworfen wird.
 
Meines Erachtens sollte das ohne NAT einfach nur mit den entsprechenden Routing-Einträgen laufen.
 
hmm, ja tut es leider nicht, denn der Proxy bekommt sonst die Anfrage vom 192.168.77.26 und kennt dieses Netz nicht. Mit NAT sieht es fürn Proxy dann so aus, dass das PAket vom 192.168.1.5er kommt und retourniert auch wieder dorthin.

Etwas anderes wäre, wenn ich am Proxy eine Route zum 192.168.77.0er Netz setze.

Du meinst, es würden die ersten beiden Regeln reichen?
 
eine Route zum 192.168.77.0er Netz setze.

Meines Erachtens sollte das ohne NAT einfach nur mit den entsprechenden Routing-Einträgen laufen.

Genau, der Proxy muss eben wissen, wie er seine Pakete wieder zu dem Host, der gefragt hat schicken kann. Wenn du auf allen Geräten Kontrolle über die Routing Tabellen hast, musst du einfach nur den Router (also den Server mit den zwei NICs) so konfigurieren, dass er genau diese Pakete durchlässt. NAT brauchst du nur, wenn du aus irgendeinem Grund Pakete so aussehen lassen willst, als ob sie von wo anders herkommen oder wenn du einem der Geräte nicht sagen kannst, dass es für 192.168.x.y ein anderes Gateway als für 192.168.a.b benutzen soll. Aber deine WLAN Geräte nutzen doch eh schon den PC mit den zwei NICs als Default Gateway und den Proxy kannst du doch konfigurieren, oder? Hat dann auch den Vorteil, dass deine ACLs im Proxy sich auf die echten Absende-Adressen beziehen.
 
Ok, fürs Protokoll wäre es eventuell besser, dass die echten IPs auftauchen, jedoch ist da in meinem Fall nicht notwendig. Aber gut, ich werde es mal mit den Routen-Eintragen versuchen. :-)
 

Ähnliche Themen

Port Forwarding mit iptables

ip6tables Problem

iptables verständniss frage, xrdp nicht erreichbar.

Wired-Lan komisches Verhalten

[SOLVED][CentOS 7] Samba server nicht erreichbar trotz firewall regeln.

Zurück
Oben