WLAN Verbindung erst verfügbar nachdem das Netzwerkkabel einmal drin war.

  • Hallo


    Ich versuche mein Netzwerk mit systemd zu konfigurieren aber ich komme nicht weiter. Ich kann mich nicht mit SSH über WLAN, nach einem reboot, verbinden. Sobald ich einmal das Netwerkkabel rein und raus gesteckt habe kann ich mich auch über WLAN einloggen.


    Was ich erreichen will, eth0 solle eine statische IP haben, Wlan0 eine dynamische über DHCP.

    Mein System:


    Code
    oliver@raspberrypi:~ $ cat /etc/os-release
    PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
    NAME="Raspbian GNU/Linux"
    VERSION_ID="9"
    VERSION="9 (stretch)"
    ID=raspbian
    ID_LIKE=debian
    HOME_URL="http://www.raspbian.org/"
    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
    BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


    Code
    oliver@raspberrypi:~ $ uname -a
    Linux raspberrypi 4.14.50-v7+ #1122 SMP Tue Jun 19 12:26:26 BST 2018 armv7l GNU/Linux


    Was ich bisher gemacht habe


    -Frisches System aufgesetzt

    -Neuen Benutzer angelegt mit

    Code
    adduser oliver

    -Den neuen Benutzer zu den folgenden Gruppen hinzugefügt

    Code
    oliver@raspberrypi:~ $ groups
    oliver adm dialout cdrom audio video plugdev games input netdev gpio i2c spi[

    Aufräumen am System

    Code
    apt-get -y remove dhcpcd5 openresolv
    systemctl disable networking.service
    systemctl enable systemd-networkd.service
    systemctl enable systemd-resolved.service
    rm -f /etc/resolv.conf
    ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf[


    -Konfigurationsdateien für die Schnittstellen unter /etc/systemd/network angelegt, eine für eth0 und eine für wlan0

    Code
    oliver@raspberrypi:~ $ ls -l /etc/systemd/network
    total 8
    
    lrwxrwxrwx 1 root root 9 Jun 27 00:17 99-default.link -> /dev/null
    -rw-r--r-- 1 root root 113 Sep 4 17:51 eth0.network
    -rw-r--r-- 1 root root 66 Sep 4 12:15 wlan0.network

    mit folgendem inhalt

    Dann noch eine Konfigurationsdatei für wpa-supplicant angelegt

    - Dann noch eine service.unit erstellt die wpa_supplicant für wlan0 startet.

    -Dann noch die Unit enabled und start.


    So das war es was ich gemacht habe.


    Hier noch mal die Status der service.unit


    Und noch ein ip address wenn ich auf dem WLAN bin.


    Kann sich das einer Erklären warum ich erst das Netwerkkabel einstecken muss? Habe ich was übersehen oder geht es schlicht nicht (DHCP und static IP)?


    Vielleicht kann mich einer in die richtige Richtung pushen.


    Vielen dank im voraus.


    Oliver

  • Kann sich das einer Erklären warum ich erst das Netwerkkabel einstecken muss? Habe ich was übersehen oder geht es schlicht nicht (DHCP und static IP)?


    Vielleicht kann mich einer in die richtige Richtung pushen.

    Warum brauchst Du 2 Interfaces mit jeweils einer IP-Adresse aus dem Subnetz der FritzBox? ... und dann auch noch so, dass dein Pi zwei default routen hat?


    Konfiguriere das LAN-Interface mit einer statischen IP-Adresse (und ohne Gateway), die nicht aus dem Subnetz der FritzBox ist.

    Wenn Du das nicht willst dann, das LAN-Interface ohne Gateway, IP von außerhalb des DHCP-Pools der FB, mit einer ungünstigeren metric für die definierte route in des Subnetz der FB und mit arp-Filter für alle Interfaces.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Hallo rpi444


    Ich merke gerade das mein Grundverständnis von Netzwerken nicht so weit reicht, ich vertehe nur die hälfte.


    Ich möchte keine 2 Interfaces haben. Ich war der Annahme das linux bzw. systemd das on the fly umschaltet. Also wenn das Netzwerkkabel drin ist eth0, wenn kein Kabel angeschlossen ist wlan0.


    Mit der metric bzw route habe ich noch nicht richtig verstande. Hast du da eventuelle einen guten Link wo ich mich mal einlese kann?


    Ich habe mich jetzt erst mal über arp informert und wie ich es vertehe linkt arp eine ip Addresse mit einer MAC Addresse. Was ich aber noch nicht verstehe ist wie ich den Filter für wlan0 setze. Wlan0 ist ja DHCP und die IP Addresse kann ja wechseln.


    Was ich jetzt gemacht habe:


    Änderung der eth0.network


    Code
    root@raspberrypi:/home/oliver# cat /etc/systemd/network/eth0.network
    [Match]
    Name=eth0
    
    [Network]
    Description=pi3 eth0
    Address=192.168.0.205/24
    DNS=8.8.8.8


    Und einen Eintrag in arp


    Code
    arp -i eth0 -Ds 192.168.0.205 eth0 pub

    Was aber keinen Neustart überlebt.


    Was ich noch mal erwähnen möchte, das alles ist auf meinem Trainings Pi (keine Produktiv Maschiene). Ich mache das um mich in Netzwerke einzuarbeiten bzw. Netzwerke mehr zu Verstehen.

  • Ich möchte keine 2 Interfaces haben. Ich war der Annahme das linux bzw. systemd das on the fly umschaltet. Also wenn das Netzwerkkabel drin ist eth0, wenn kein Kabel angeschlossen ist wlan0.

    OK, dann habe ich das nicht richtig verstanden, denn ich bin davon ausgegangen, dass Du beide Interfaces gleichzeitig verwenden willst.

    Ob systemd das umschaltet weiß ich nicht, aber es gab (evtl. gibt es noch) ein tool ifplugd mit dam man so etwas machen konnte/kann.


    Wegen der FritzBox sollte das nicht benutzte Interface dann aber down sein bzw. keine IP-Adresse mehr haben, denn sonst stellt die FritzBox eine Verbindung via das gerade "aktive"/benutze Interface zum anderen "nicht benutzten" Interface her.


    Für das eth0-Interface war dann deine vollständige Konfiguration (d. h. mit gateway) schon richtig.


    arp-cache-Eintrag ist nicht erforderlich. arp-filter kann in der /etc/sysctl.conf gesetzt werden. Z. B.:

    Code
    net.ipv4.conf.all.arp_filter = 1
    net.ipv4.conf.default.arp_filter = 1
    net.ipv4.conf.eth0.arp_filter = 1
    net.ipv4.conf.wlan0.arp_filter = 1
    Quote
    • 1 - Allows you to have multiple network interfaces on the same subnet, and have the ARPs for each interface be answered based on whether or not the kernel would route a packet from the ARP'd IP out that interface (therefore you must use source based routing for this to work). In other words it allows control of which cards (usually 1) will respond to an ARP request.

    Quelle u. a.: http://linuxinsight.com/proc_s…conf_eth0_arp_filter.html


    Betr. metric siehe im Internet u. a.:

    https://www.techopedia.com/definition/2744/routing-metric

    https://en.wikipedia.org/wiki/Metrics_(networking)

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Hallo


    Ich habe jetzt für mich eine akzeptable Lösung gefunden. Ich nutze systemd mit DHCP für beide Interfaces und lasse meinen Router den Pi eine "feste" IP über DHCP zuweisen.


    Laut dem Archlinux Wiki ist ein on-the-fly über systemd möglich.


    Quote

    This setup will enable a DHCP IP for both a wired and wireless connection making use of the metric directive to allow the kernel to decide on-the-fly which one to use. This way, no connection downtime is observed when the wired connection is unplugged.

    The kernel's route metric (same as configured with ip) decides which route to use for outgoing packets, in cases when several match. This will be the case when both wireless and wired devices on the system have active connections. To break the tie, the kernel uses the metric. If one of the connections is terminated, the other automatically wins without there being a gap with nothing configured (ongoing transfers may still not deal with this nicely but that is at a different OSI layer).


    Falls es wenn interessiert, ich habe beide Konfigurationsdateien für die Schnittstellen unter /etc/systemd/network wie im Archlinux Wiki angepasst.


    Code
    root@raspberrypi:/home/oliver# cat /etc/systemd/network/eth0.network 
    [Match]
    Name=eth0
    
    [Network]
    Description=pi3 eth0 DHCP
    DHCP=yes
    
    [DHCP]
    RouteMetric=10
    Code
    root@raspberrypi:/home/oliver# cat /etc/systemd/network/wlan0.network 
    [Match]
    Name=wlan0
    
    [Network]
    Description=pi3 wlan0 DHCP
    DHCP=yes
    
    [DHCP]
    RouteMetric=20

    Jetzt funktioniert alles wie ich möchte. WLAN (oder auch LAN) ist direkt nach einem reboot da. Wenn das Netzwerkkabel eingesteckt/ausgesteckt wird wird auf das andere interface umgeschaltet.


    Noch mal danke an rpi444 für die Hilfe und die Links.


    Gruß


    Oliver