Hey Ihr, Ich wende mich mal vertrauensvoll an euch, in der Hoffnung, dass jemand Rat weiß. Vorab: Ich habe bereits unzählige Stunden mit Google verbracht. Diverse Guides, HowTo's und "was wenns nicht klappt" haben leider nicht geholfen. Das Problem besteht weiterhin - dabei ist das was ich lösen möchte eigentlich recht simpel. Zu meinem Problem: Ich habe einen W-LAN-Router einen festen PC (Windows 7) und ein kleines Notebook mit Linux (Ich arbeite ohne GUI). Da mein PC keine W-LAN Karte hat, ich ihm zwischendurch aber doch das Internet zur Verfügung stellen möchte, wollte ich das Linux Notebook die Schnittstellen Vermitteln lassen. Das Notebook bekommt per DHCP seine IP aus dem W-LAN, die eth0 Schnittstelle habe ich per Hand konfiguriert. Um mal eine kleine "ASCII-Grafik" mit Zahlen zu bauen: <192.168.2.1> <192.168.2.5> <192.168.88.1> <192.168.88.9> Router <---WLAN---> Linux-NB <-----LAN-----> PC Die ganzen Netzmasken liste ich mal nicht auf, das sollte alles stimmen. Das Linux Notebook kennt sein default Gateway in sachen Router. Ping geht, surfen entsprechend auch. Der Windows PC kennt das Linux-Book als Gateway und den Router als DNS. Ping zwischen Linux und Windows PC geht auch in beide Richtungen. (Firewall beim Windows ist deaktiviert) Dann habe ich das IP-Forwarding beim Linux aktiviert "sysctl net.ipv4.ip_forward=1". Als Antwort bekomme ich "net.ipv4.ip_forward = 1" zurück. Ok, das scheint auch OK zu sein. Ich kann aber absolut keine Pakete vom Windows PC in Richtung Router schicken. Ich habe versucht, das "Problem" mit TCPDUMP etwas einzugrenzen. So wie es für mich aussieht Routet das Linux nicht? Die Ping-Pakete kommen im TCP dump an, es kommt aber keine Antwort. 00:09:56.657182 IP 192.168.88.9 > speedport.ip: ICMP echo request, id 1, seq 13, length 40 00:09:59.008702 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:16:36:c1:90:3c (oui Unknown), length 300 00:09:59.842397 IP 192.168.88.9.62456 > 192.168.1.99.snmp: GetRequest(62) 25.3.2.1.5.1 25.3.5.1.1.1 25.3.5.1.2.1 00:10:01.462269 IP 192.168.88.9 > speedport.ip: ICMP echo request, id 1, seq 14, length 40 00:10:06.462359 IP 192.168.88.9 > speedport.ip: ICMP echo request, id 1, seq 15, length 40 00:10:10.022270 IP 192.168.88.9.62456 > 192.168.1.99.snmp: GetRequest(62) 25.3.2.1.5.1 25.3.5.1.1.1 25.3.5.1.2.1 00:10:11.462415 IP 192.168.88.9 > speedport.ip: ICMP echo request, id 1, seq 16, length 40 Vielleicht hat einer von euch eine gute idee. Achso hier noch mal mein Route-Table in der Linux-Kiste. Da habe ich nichts verändert, das war in allen Tutorials auch nicht beschrieben. Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default speedport.ip 0.0.0.0 UG 0 0 0 wlan0 192.168.2.0 * 255.255.255.0 U 0 0 0 wlan0 192.168.88.0 * 255.255.255.0 U 0 0 0 eth0 Windows Firewall ist aus, das Linux ist Debian. Vielen Dank schonmal für die Hilfe. Gruß Markus
tcpdump mit -n aufrufen. Wie sind die Routen auf den Kisten in den jeweiligen Netzen, die müssen wissen wo es lang geht. Schickt die Linux Kiste die Pakete raus ? FW auf Linux Kiste ? (iptables -L -n -v)
Also so wie es für mich aussieht schickt die Linux-Kiste die Pakete nicht weiter. Die IP-Tables habe ich nicht konfiguriert, da habe ich nichts gemacht. iptables -L -n -v zeigt auch leere Tables für Input, Forward und Output an. Aber muss ich denn da überhaupt so viel rumkonfigurieren? Also in den Ganzen Guides stand immer nur ip_forward aktivieren und fertig. Die Linux kiste soll lediglich zwischen den beiden Netzen routen. -n schrieb: > Wie sind die Routen auf den Kisten in den jeweiligen Netzen, die müssen > wissen wo es lang geht. Die Frage verstehe ich nicht so ganz. Die Linux-Kiste weiß auf jeden fall, wo sein Gateway für den Internetzugang ist. Die Windows Kiste weiß, dass die Linux Kiste sein Gateway ist und dass der DNS beim Router zu finden ist. Beantwortet das die Frage oder habe ich etwas falsch verstanden? Danke schon mal für die schnelle Antwort
Ah kurzer Nachtrag: Wenn ich mir die iptables anschaue dann zählt der Counter bei Input und Forward hoch. Bei Output bleibt er bei 0.
Noch ein Kurzer Nachtrag (sorry für die ganzen Posts) Mit der Windows-Maschine kann ich die IP-Adresse der W-LAN-Schnittstelle der Linux-Kiste anpingen. Also ich kann aus 192.168.88.x die 192.168.2.102 (IP-Adresse der W-LAN-Schnittstelle) anpingen. Das bedeutet ja, dass das Routing funktioniert oder? Den Router selbst (192.168.2.1) kann ich aus dem 88.x Netz jedoch nicht erreichen. Mit der Linux-Kiste schon. Sehr kurios...
Markus R. schrieb: > Den Router selbst (192.168.2.1) kann ich aus dem 88.x Netz jedoch nicht > erreichen. Mit der Linux-Kiste schon. Sehr kurios... Und woher weiß der Router wo 88.x sein soll ?
Markus R. schrieb: > Also so wie es für mich aussieht schickt die Linux-Kiste die Pakete > nicht weiter. Wie überprüft ?
Na die Anfrage kommt doch von der Linux Kiste, da geht die Antwort wohl hin zurück. Zumindestens kann ich alle anderen Clients im 2.x Netzwerk aus dem 88.x Netzwerk erreichen. Das Routing zwischen den beiden Netzwerken klappt also...
...und die Linux Kiste schickt die pakete demnach doch weiter. Damit scheint alles okay zu sein.
Markus R. schrieb: > Na die Anfrage kommt doch von der Linux Kiste, da geht die Antwort wohl > hin zurück. Nein.
Der Router muss gesagt bekommen, wo er die Antwortpakete für 192.168.88.0/24 hinschicken soll. Man müsste also mindestens als Route eintragen: 192.168.88.0/24 via 192.168.2.5 Da das aber meist nicht möglich ist, kann man als Alternative auf der Linux-Box die 192.168.88.0/24 Pakete maskieren: # iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE Dann "sieht" der Router nur noch die Linux Box.
> Die Frage verstehe ich nicht so ganz. Die Linux-Kiste weiß auf jeden > fall, wo sein Gateway für den Internetzugang ist. Aber der Router weiss nicht, wohin er das Paket zurückschicken soll, er hat keine Ahnung vom 192.168.2.x-Netz. Du brauchst noch NAT/Masquerading, damit das Windows-Paket mit der Linux-Source-IP losgeschickt wird.
Jim Meba schrieb: > # iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE > > Dann "sieht" der Router nur noch die Linux Box. Dann gehen aber nur Verbindungen aus dem 88.x, nicht andersrum
Jim Meba schrieb: > # iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE Meinen Herzlichsten Dank! Des Problems Lösung wurde soeben gefunden. Die Zeile werde ich gleich mal in mein Bash-Script für die eth0 konfiguration aufnehmen. Vielen Dank!
Bridging geht mit WLAN nicht (ausser man ist selbst der Accesspoint). Das Problem ist, dass die Bridge beim Weg vom WLAN-Eingang zum LAN-Ausgang die Source-MAC ändern müsste (bzw. andersrum die Destination-MAC) ändern müsste. Zusätzlich muss man bei ARP-Paketen auch noch den Inhalt ändern, damit who-has-MAC (WLAN->ETH) bzw. tell-MAC (ETH->WLAN) stimmen und die IP-Stacks das Zeug überhaupt über die Bridge drüberbringen. Also quasi ein MAC-NAT... Man kann sowas zwar mit ebtables und arptabels hinbekommen, ist aber etwas fummelig und mangels arbtables-Fähigkeiten nicht ganz sauber.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.