Internetverbindungsfreigabe über Raspi

  • Hallo Zusammen,

    ich möchte auf meinem Raspi eine Internetverbindungsfreigabe (IVF) realisieren.
    Es geht darum, dass ich mich mit meinem Notebook an eth0 verbinde und dann den Internetzugriff des Raspi über wlan0 mitbenutzen möchte.

    Ich habe gemäß dieser Anleitung gehandelt: http://wiki.ubuntuusers.de/Internetverbindungsfreigabe, Bereich "Automatische Konfiguration DHCP", Abschnitt "WLAN auf LAN".

    Leider funktioniert es nicht.

    Raspbian Version:

    Code
    pi@raspberrypi ~ $ uname -a
    Linux raspberrypi 3.12.28+ #713 PREEMPT Fri Sep 19 16:43:32 BST 2014 armv6l GNU/Linux

    Auf dem Raspi läuft der isc-dhcp-server, der dem an eth0 angeschlossenen PC eine IP zuweist. Das funktioniert soweit.

    Inhalt der /etc/network/interfaces:

    Gegenüber der Anleitung fehlt die Zeile um das ip-forwarding zu aktivieren. Das kommt daher, weil ich festgestellt habe dass es so nicht funktioniert. Ich habe stattdessen in der Datei /etc/sysctl.conf folgende Zeile aktiviert:

    Code
    net.ipv4.ip_forward=1

    Nach einem Neustart konnte ich zumindest bestätigen, dass die Datei

    Code
    /proc/sys/net/ipv4/ip_forward


    den Wert 1 enthielt, IP forwarding also aktiviert ist.

    Allerdings schlägt ein

    Code
    ping www.heise.de

    vom PC an eth0 fehl.
    Ein auf dem Raspi über SSH Konsole ausgeführtes ping führt hingegen zu Antworten des Zieles.
    Was mache ich nur falsch?
    Könnte es sein, dass es oben hinter iptables "-i wlan0 -o eth0" heißen muß? Ich tue mir schwer damit, was bei bidirektionalen Netzwerk Interfaces input und was output ist?
    Könnte es weiterhin sein, dass hinter -s anstelle der statischen IP von eth0 die (dynamische) IP des angeschlossenen Rechners erwartet wird?

    Könnte mich außerdem bitte jemand aufklären was es mit den vorangestellten "up" in den letzten Zeilen der interfaces auf sich hat? Scheint mit einem Zeitpunkt oder einer Reihenfolge zu tun zu haben weil es auch noch ein post-up gibt.

    Im Voraus vielen Dank für Eure Hilfe!
    Viele Grüße
    Werner

    Einmal editiert, zuletzt von wmauss (4. Oktober 2014 um 23:02)

  • Ich tue mich mit Netzwerk immer etwas schwer, aber ich tippe auf deine Netzmaske. Denn ich denke da ist das gateway nicht mit drin. Setz die doch spasseshalber mal auf null statt auf 192. Vermutlich rede ich blödsinn.
    Up meint, das der befehl beim bzw. Nach dem ifup ausgeführt werden soll. Afaik

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Such mal hier im Forum nach "Accesspoint"
    Das Thema wurde zum Erbrechen hier schon durchgekaut.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • @ Der_Imperator:

    Gut, ich schaue mir die Beiträge an, mal sehen ob ich das mit meinem begrenzten Wissen übertragen kann.

    Es geht hier ja um eine im Vergleich zum klassischen Accesspoint umgekehrte Implementierung (also Internetzugriff über wlan0, lokaler Client hängt an eth0).
    Ich denke, da müssen sicher ein paar Parameter anders gesetzt werden.
    Ach ja, und hostapd wird vermutlich auch eher nicht gebraucht werden.

    Grüße
    Werner

    Habe jetzt mal mit dieser Anleitung begonnen: http://elinux.org/RPI-Wireless-Hotspot

    Ich habe die iptables Optionen -i und -o einmal unverändert übernommen und einmal the Interfaces dahinter vertauscht. Das habe ich sowohl von der Kommandozeile aus eingegeben als auch über die etc/netzwerk/interfaces.
    Also einmal so:

    Code
    pi@raspberrypi ~ $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    pi@raspberrypi ~ $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    pi@raspberrypi ~ $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT


    Und einmal so

    Code
    pi@raspberrypi ~ $ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    pi@raspberrypi ~ $ sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT             
    pi@raspberrypi ~ $ sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

    Weitere Änderungen habe ich nicht gemacht (z.B. bzgl. hostapd).

    Funktioniert beides nicht.

    Dass /proc/sys/net/ipv4/ip_forward den Wert 1 enthält, also IP Forwarding aktiv ist, habe ich geprüft.

    In der Anleitung war nicht die Rede davon, dass bei Eingabe der genannten Befehle von der Kommandozeile ein Neustart nötig ist (bei Eingabe über etc/network/interfaces natürlich schon). Das ist richtig, ioder?

    Kann man irgendwie diagnostizieren, was/wo es hängt?

    Grüße
    Werner

    Einmal editiert, zuletzt von wmauss (2. Oktober 2014 um 08:54)

  • Zitat


    Ach ja, und hostapd wird vermutlich auch eher nicht gebraucht werden.


    Solange du nicht die Netzwerke trennen möchtest, also LAN und WLAN im selben Netzwerk, der Router macht DHCP
    baust du eine Bridge, keinen AP oder Router.
    Somit brauchst du einfach nur die Bridge Utils zu installieren, eine Bridge konfigurieren und das ganze fluppt.
    War die Tage auch noch ein Thread hier.

    Zitat


    Es geht hier ja um eine im Vergleich zum klassischen Accesspoint umgekehrte Implementierung (also Internetzugriff über wlan0, lokaler Client hängt an eth0).
    Ich denke, da müssen sicher ein paar Parameter anders gesetzt werden.

    Ja, in den Anleitungen einfach eth0 gegen wlan0 tauschen und umgekehrt.

    EDIT :

    Wenn ich mir deine Konfig so anschaue hast du für das Netz an eth0 einfach ein Stückchen vom Netz von wlan0 genommen.
    Wenn du anfängst zu Subnetten dann musst du auch das Netz an wlan0 subnetten.
    Ergo :
    Setzt du eth0 auf 192.168.178.128/26 (255.255.255.192) ,
    darf wlan0 maximal 192.168.178.0/25 (255.255.255.128) sein.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (2. Oktober 2014 um 11:54)

  • Danke für die Infos!

    Ok, dann schaue ich mal nach entsprechenen Beiträgen zum Thema Bridge.

    Der Subnetfehler zeigt, dass ich das ganze Thema Subnetting noch nicht durchblicke.
    Ich dachte, ich verwende ein Subnet von 255.255.255.192 und habe damit vier getrennte Host Adressbereiche. Ich habe dann für eth0 eine IP aus dem dritten Bereich (192.168.178.129-192.168.178.190) verwendet, der DHCP Server an eth0 vergibt auch nur Adressen aus diesem Bereich und die Fritzbox, von der wlan0 seine IP erhält, vergibt nur noch Adressen aus dem ersten Adressbereich (192.168.178.1-192.168.178.62).
    So jedenfalls dachte ich hätte ich auch rpi444 verstanden.

    Offenbar aber falsch gedacht. Vielen Dank jedenfalls für deine Antworten.

    Werner

    Einmal editiert, zuletzt von wmauss (2. Oktober 2014 um 14:13)

  • Leute, es geht nicht.

    Ich habe nun eine ganze Reihe von Anleitungen durchgelesen und ausprobiert, zuletzt diese, die auch meiner Zielkonfiguration sehr nahe kommt (lediglich anderer dhcp Server an eth0):
    Raspbmc als Wlan/Lan Bridge

    Meine /etc/network/interfaces:

    Sowie meine /etc/dhcp/dhcpd.conf (isc-dhcp-Server für eth0):

    Code
    subnet 192.168.178.128 netmask 255.255.255.128 {
      authoritative;
      range 192.168.178.151 192.168.178.152;
      option broadcast-address 192.168.178.255;
      option routers 192.168.178.1;
      option domain-name "local";
      option domain-name-servers 192.168.178.1;
      default-lease-time 600;
      max-lease-time 7200;
    }

    Die Netmask habe ich für eth0 jetzt wunschgemäß verändert ggü. der Netmask des dhcp Servers auf der FRitzbox, mit der wlan0 in Verbindung steht.

    Zum Thema bridging habe ich mehrfach gelesen, dass der aktuelle Kenel das nicht mehr unterstützt. Zum Beispiel hier: http://www.linux-tips-and-tricks.de/de/raspberry/1…-bruecke-bauen/ Stimmt das? Jedenfalls haben die folgenden Einträge in /etc/network/interfaces

    Code
    # Bridge
     auto br0
     iface br0 inet dhcp
     pre-up ifup wlan0
     pre-up ifup eth0
     bridge_ports eth0 wlan0
     wpa-driver wext


    auch nicht zum Erfolg geführt.

    Würde mich wirklich über ein paar Ratschläge freuen.

    Grüße
    Werner


  • Leute, es geht nicht.

    Code
    post-up /sbin/iptables -A FORWARD -o wlan0 -i eth0 -s 192.168.178.0/17 -m conntrack --ctstate NEW -j ACCEPT

    Ein Fehler in der Netzmaske.
    /17 = 255.255.128.0
    /25 = 255.255.255.128

    Code
    post-up /sbin/iptables -A FORWARD -o wlan0 -i eth0 -s 192.168.178.0/25 -m conntrack --ctstate NEW -j ACCEPT

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Verdammt ärgerlich, solche Flüchtigkeitsfehler im zählen von einsen.
    Danke!
    Wäre zu schön gewesen, wenn es jetzt funktionieren würde. Tut es aber leider nicht.

    Ich sehe in /var/log/syslog und /var/log/messages nichts, was auf einen Fehler hindeutet.
    Kann es trotzdem sein, dass irgendein Paket fehlt, das installiert sein müßte?

    Grüße
    Werner

  • Um weitere Fehlerursachen auszuschließen, bin ich jetzt vom isc-dhcp-server auf den im zugrunde liegenden Beispiel verwendeten dnsmasq umgestiegen.
    Im Gegensatz zum Beispiel startet der Server allerdings nicht aufgrund des Eintrages in /etc/network/interfaces:

    Code
    post-up /usr/sbin/dnsmasq -i eth0 -I wlan0 -F 192.168.178.151,192.168.178.152,infinite


    D.h. nach einem "reboot" oder einem "service networking restart" zeigt sudo service dnsmasq status

    Code
    pi@raspberrypi ~ $ sudo service dnsmasq status
    [ ok ] Checking DNS forwarder and DHCP server: dnsmasq[....] (not running).


    Somit habe ich den Servicestart mittels

    Code
    update-rc.d dnsmasq defaults

    beim Systemstart automatisiert.
    Die nötige Konfigdatei /etc/dnsmasq.conf sieht so aus:

    Code
    interface=eth0
    dhcp-range=192.168.178.151,192.168.178.152,255.255.255.128,infinite
    except-interface=wlan0


    Der Dienst startet beim Systemstart und vergibt eine IP Adresse (192.168.178.151) an den an eth0 angeschlossenen PC.

    Der Netzzugriff vom PC über Raspbi's eth0 auf wlan0 schlägt nach wie vor fehl.
    :@

    Werner

    Der Vollständigkeit halber noch die aktuelle etc/network/interfaces:

    Vom Raspbi selbst funktioniert der Internetzugriff über wlan0 (mittels SSH Konsole an eth0), vom PC (Konsole) an eth0 nicht. Vom PC geht nur ein ping auf die statische IP von eth0.

    Einmal editiert, zuletzt von wmauss (3. Oktober 2014 um 23:38)

  • route -n:

    Code
    pi@raspberrypi ~ $ route -n
    Kernel-IP-Routentabelle
    Ziel            Router          Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 wlan0
    192.168.178.0   0.0.0.0         255.255.255.192 U     0      0        0 wlan0
    192.168.178.128 0.0.0.0         255.255.255.128 U     0      0        0 eth0
  • Hallo Zusammen,

    zu meiner Überraschung funktioniert heute mit dem an eth0 hängenden PC ein ping of the dyn. IP Adresse von wlan0 (192.168.178.4).
    Das ging gestern definitiv nicht, ich konnte nur die IP von eth0 anpingen.

    Einziger Unterschied ist, dass ich vorhin iptables über -F, -X und -t nat -F zurückgesetzt hatte.

    Allerdings geht weiterhin kein ping auf die Routeradresse (192.168.178.1).
    Das wundert mich, da wlan0 und der Router doch im selben Netz arbeiten (Netzmaske: 255.255.255.192).
    Oder verstehe ich da etwas falsch?

    Grüße
    Werner

    Einmal editiert, zuletzt von wmauss (4. Oktober 2014 um 13:48)

  • Warum machst du eigentlich NAT und ipv4 forwarding ?
    Hat das einen Grund ?
    Schmeiss das Nat raus und mach nur forwarding.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Einmal editiert, zuletzt von Der_Imperator (4. Oktober 2014 um 21:41)

  • @ Der-Imperator,

    wie Du siehst ist es schon schwierig genug, etwas zum laufen zu bringen wenn ich mich weitestgehend an die Anleitung halte. Deshalb weiche ich nicht weiter ab als unbedingt nötig.

    Aber auch ohne NAT ändert sich nichts.
    Die /etc/network/interfaces sieht dann so aus:

    Grüße
    Werner

    Ich habe mich jetzt an diese Anleitung gehalten. Es funktionierte auf Anhieb:
    http://rbnrpi.wordpress.com/project-list/w…ernet-ready-tv/
    Allerdings geht die Anleitung von einer statischen wlan0 IP Adresse aus. Ich habe diejenige als statische IP gewählt, die meine Fritzbox per DHCP zuweist (192.168.178.4).

    Hier die iptables Konfigurationsddatei:



    Grüße
    Werner

    Einmal editiert, zuletzt von wmauss (4. Oktober 2014 um 23:57)

  • Hallo Zusammen,

    auf dieser Seite ist die Parametrierung von iptables ganz gut erklärt: http://www.netfilter.org/documentation/…AT-HOWTO-6.html

    Basierend darauf habe ich die das Konfigfile verändert, damit es auch noch funktioniert, wenn ein anderer WLAN Router dem wlan0 Interface eine andere IP Adresse zuweist:


    Das funktionierte ebenfalls auf Anhieb.

    Werner

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!