Hallo,
ich habe mir zwei Tage die Zaehne ausgebissen an meinem Problem, und nun hoffe ich kennt sich vielleicht hier jemand aus.
Zuerst einmal die Grundlagen: mir geht es um die automatische IP Vergabe nach https://tools.ietf.org/html/rfc3927 und nachfolgender Registrierung via mDNS/avahi-daemon. Gadget ist in meinem Fall ein Raspberry PI CM3, aber genauso gut koennte es ein RPI Zero oder im Prinzip jedes andere USB ethernet gadget sein. Dieses moechte ich mit meinem PC (Ubuntu 16.04) verbinden.
An meinem Mac benimmt sich das Gadget einwandfrei, ich schliesse da also ein Konfigurationsproblem erstmal aus. Das Gadget taucht auf, und einige Sekunden spaeter kann ich per <hostname>.local auf es zugreifen. So weit, so gut.
Schliesse ich es nun an meinen PC an, taucht auch erwartungsgemaess ein neues Netzwerk-Interface auf. Benannt etwas kryptisch enp8s0u1u1 benannt. Nach meinen Erkenntnissen ist das dafuer verantwortliche udev-Regelwerk in /lib/udev/rules.d/73-usb-net-by-mac.rules zu finden.
Womit wir zur ersten Frage kommen: wo waere nun ein guter Ort, den avahi-autoipd zu starten, damit der auf diesem Interface eine IP akquiriert? Versuche eine eigene /etc/udev/rules.d-Regel einzufuehren die zB so aussieht
ACTION=="move", SUBSYSTEM=="net", INTERFACE=="enp8s0u1u1", ENV{NM_UNMANAGED}="1"
waren nicht erfolgreich. Achtung: diese Regel ist nicht die eigentlich gewuenschte, die soll das Interface dem network manager entziehen, aber das klappt genauso wenig.
Womit wir beim zweiten Problem sind: wenn ich den autoipd von Hand starte (sudo avahi-autoipd -D --force-bind --syslog enp8s0u1u1) wird eine IP ausgehandelt. Deren Konfiguration scheitert aber in /etc/avahi/avahi-autoipd.action weil der NIC-Name zu lang ist 🙄
Das habe ich erstmal umschifft, indem ich die Datei bearbeitet habe, und das erzeugte alias bei der BIND-action etwas verkuerze:
ip addr add "$3"/16 brd 169.254.255.255 label "$2:avh" scope link dev "$2"
Man beachte das avh - das war mal avahi, und das ist dann zu lang (mehr als 15 Zeichen).
So weit so gut. Der wirklich aergerliche Teil kommt jetzt: ich habe dann ein Zeitfenster von vielleicht 5, vielleicht 15 Sekunden, bis das Kartenhaus zusammenfaellt. Mir ist nicht ganz klar *was* genau da passiert, aber es sieht so aus, als ob der network manager auf die Idee kommt, auf diesem neu erstellten Interface-Alias
enp8s0u1u1:avh Link encap:Ethernet HWaddr b2:35:80:42:7f:fc inet addr:169.254.9.228 Bcast:169.254.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
amok zu laufen. Das logfile vom Moment an den der avahi-autoipd von mir gestartet wird findet ihr hier: https://pastebin.com/wTC5uQFC
Meine Interpretation: das neu erscheinenede Alias-Interface wird vom NM bearbeitet. IPV6 und/oder DHCP angeworfen, kommt nix, und dann schmeisst er das Interface auf den Muell. So weit mein Verdacht.
Wie man sieht habe ich schon ein paar Dinge probiert:
das interface dem NM zu entziehen, siehe obiges udev-rule-snippet. Scheint kein Effekt zu haben.
eine Datei /etc/systemd/network/enp8s0u1u1.network anzulegen, in der ich
[Match] Name=enp8s0u1u1 [Network] DHCP=no IPv6AcceptRA=no
zu stehen habe. Da war die Hoffnung, dass der NM weder IPV6 noch DHCP auf dem Interface gestartet werden. Keine Auswirkung.
Momentan bin ich mit meinem Latein am Ende. Wenn da einer einen Tipp hat, wie ich
autoipd beim Erscheinen meines Interfaces starten
und das dann stabil halten kann
dem waere ich sehr dankbar.