TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
Ich bin noch dabei, alles aufzuarbeiten.... *puuuust* thomasschaefer schrieb: Zum einen musst Du Dich für einen Netzwerkdienst entscheiden. Man kann zwar den Networkmanager über plugins mit anderen Methoden mischen, aber leichter macht es die Sache nicht.
Ich habe heute nicht mehr die üblichen "klassischen" Tools installiert. Das heisst, die /etc/network/interfaces ist tot, /etc/init.d/networking ist tot, es ist kein Networkmanager installiert. Ich starte das Netz über systemd-networkd. Den ganzen alten Kram habe ich komplett entfernt, einschließlich ntp und rsyslog. Stattdessen läuft systemd-timesyncd, systemd-resolvd, systemd-journald. Ich bins eigentlich gewohnt, alles notwendige direkt via CLI zu customizen und so einzustellen, dass es ohne jeglichen Ballast optimal läuft, ganz egal ob eth0 oder wlan0... so war das eigentlich bisher unter IPv4. Speziell für wlan* habe ich mir einen eigenen Bash-Networkmanager geschrieben, der kein Daemon ist und trotzdem sehr komfortable WISP handeln kann. Nur ist jetzt mit IPv6 scheinbar alles anders....und Linux bewahrt seine Geheimnisse perfekt vor mir... lubux schrieb: Hast Du auf deinem Gerät, evtl. dhcpcd installiert? Wenn ja, dann kannst Du damit konfigurieren, ob mit oder ohne hwaddr.
Jein, zwar nicht dhcpcd, aber dafür isc-dhcp-client installiert, der anscheinend etwas weniger mächtig ist, aber bislang ausgereicht hat.... *hmmm* lubux schrieb: TomLu schrieb: Aber andersrum denke ich, wäre doch klasse, wenn ich jetzt mit den neuen Möglichkeiten bei Bedarf beides nutzen könnte.
Beides auf einem Gerät? Dann versuch mal mit den aktivierten PEs über sysctl und einer manuell (mit ip) generierter bzw. zugewiesener IPv6 mit fester Interface-ID (d. h. die hat dann "valid_lft forever preferred_lft forever").
Ja, mit fester Interface-ID ist nicht das Problem, aber ich finde nix, wie ich dynamisch den ISP-Prefix vom Router dazu bekomme. Ich denke, den brauch ich doch, damit es eine "global-scope"-Adresse ist.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: ..., aber ich finde nix, wie ich dynamisch den ISP-Prefix vom Router dazu bekomme. Ich denke, den brauch ich doch, damit es eine "global-scope"-Adresse ist.
Wenn Du es manuell machst, dann ist es nicht möglich bzw. geht es nicht "dynamisch". D. h., Du musst den ISP-Präfix kennen (nachschauen) und manuell eingeben. Andererseits, könntest Du testen ob die PE-Konfiguration mit sysctl und "slaac hwaddr" von einem Dienst/daemon, koexistieren können (d. h. sich nicht gegenseitig "stören"). Evtl. auch testen, ob der daemon für "valid_lft forever preferred_lft forever" bei der mit "slaac hwaddr" generierten externen IPv6-Adresse (mit ISP-Präfix), konfiguriert werden kann. EDIT: Schau mal z. B. mit:
sudo tcpdump -v -ni <Interface> 'icmp6 and (ip6[40] == 134)'
(oder geleichwertig) auf deinem IPv6-Client nach, welche "Informationen", bei der aktuellen IPv6-Konfiguration deiner FritzBox, beim IPv6-Client ankommen.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: Speziell für wlan* habe ich mir einen eigenen Bash-Networkmanager geschrieben, der kein Daemon ist und trotzdem sehr komfortable WISP handeln kann. Nur ist jetzt mit IPv6 scheinbar alles anders....und Linux bewahrt seine Geheimnisse perfekt vor mir...
BTW: Beim starten des WLAN bzw. generieren/zuweisen der IPv6-Adresse, sind evtl. bestimmte Abhängigkeiten/Startreihenfolgen zu beachten. Kann das den Bash-NM? Benutzt Du diesen Bash-NM evtl. mit Hilfe einer service-unit/systemd (in der Du evtl. erforderliche Abhängigkeien & Co., eintragen kannst)?
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
lubux schrieb: TomLu schrieb: ..., aber ich finde nix, wie ich dynamisch den ISP-Prefix vom Router dazu bekomme. Ich denke, den brauch ich doch, damit es eine "global-scope"-Adresse ist.
Wenn Du es manuell machst, dann ist es nicht möglich bzw. geht es nicht "dynamisch". D. h., Du musst den ISP-Präfix kennen (nachschauen) und manuell eingeben.
Ok, das habe ich verstanden.
Andererseits, könntest Du testen ob die PE-Konfiguration mit sysctl und "slaac hwaddr" von einem Dienst/daemon, koexistieren können (d. h. sich nicht gegenseitig "stören"). Evtl. auch testen, ob der daemon für "valid_lft forever preferred_lft forever" bei der mit "slaac hwaddr" generierten externen IPv6-Adresse (mit ISP-Präfix), konfiguriert werden kann.
Im Augenblick sind automatisch 2 IP mit global scope generiert, eine temparory und eine mit hwaddr. Also scheint es da keine Konflikte zu geben. Wo trage ich eigentlich "slaac hwaddr" ein?
Schau mal z. B. mit:
sudo tcpdump -v -ni <Interface> 'icmp6 and (ip6[40] == 134)'
Ja, das habe ich jetzt mal gemacht. So etwa alle 7-8 Minuten kommt ein Paket mit folgendem Inhalt rein.... und es enthält diese omniösen 7200 und 1800 Sekunden, die zuvor bei meinen IPs standen (valid und prefered). Aber wie gesagt, nach 900 Sekunden wurden die auf die Ursprungswerte resetted. Das verhindert, dass sie jemals "deprecated" werden.
tcpdump -v -ni eth0 'icmp6 and (ip6[40] == 134)'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:10:48.233004 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 112) fe80::****:****:****:*** > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 112
hop limit 255, Flags [other stateful], pref medium, router lifetime 1800s, reachable time 0s, retrans time 0s
prefix info option (3), length 32 (4): 2003:**:***:***::/64, Flags [onlink, auto], valid time 7200s, pref. time 1800s
rdnss option (25), length 24 (3): lifetime 1200s, addr: fd00:1::****:****:****:***
mtu option (5), length 8 (1): 1492
route info option (24), length 8 (1): ::/0, pref=medium, lifetime=1800s
route info option (24), length 16 (2): 2003:**:***:***::/56, pref=medium, lifetime=1800s
source link-address option (1), length 8 (1): **:**:**:**:**:** Zum Testen habe ich mal auf dem Client die RAs mit einem Eintrag in sysctl.conf ignoriert:
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
...mit dem Erfolg, dass ich nach einem "down" auf eth0 und anschliessendem "up" gar keine global-scope-ISP-IPv6 bekomme. Darauf hin habe ich die Adresse manuell hinzugefügt, mit dem Ergebnis = global scope und lifetime "forever". Aber ohne die RAs scheinen die PE jetzt tot zu sein. Das heisst, ich habe jetzt nur diese Static-IP und keine temporary mehr. Es sieht für mich so aus, als "push"t der Router diese 7200/1800 an die Clients. Warum aber meine Einträge in der sysctl ignoriert werden verstehe ich nicht. Aber egal... selbst wenn eine IP nur 1800 Sekunden prefered lft hat, so müssten doch diese 1800 Sekunden bis zum Ende durchlaufen und dann diese IP als "alt" markiert werden. Genau das passiert aber nicht, stattdessen alle 900 Sekunden ein Reset auf den Timer zurück auf 1800 und 7200 Sekunden.
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
lubux Benutzt Du diesen Bash-NM evtl. mit Hilfe einer service-unit/systemd (in der Du evtl. erforderliche Abhängigkeien & Co., eintragen kannst)?
Ich habe ja erst seit gestern IPv6 (und weiterhin auch noch IPv4) .... ich weiss noch gar nicht, ob es da mit IPv6 überhaupt Probleme geben wird. Das werde ich im Laufe der Zeit testen und versuchen zu beheben. Ich habe mir das Programm fürs Reisen und unsere Laptops geschrieben... und in EU ist ja bisher noch eher IPv4 bei den offenen WISP die Regel. Es kann beides, sowohl einfach im Vordergrund über einen Desktop-Starter oder alternativ direkt im Terminal gestartet werden. Es würde aber auch über eine service-unit beim Booten gehen, wo er dann einfach still die Verbindung herstellt und beim Shutdown wieder trennt. Aber, wie gesagt, es ist kein Daemon, der im Hintergrund fummelt und werkelt. Das Script tut alles immer nur direkt und auf Befehl, und immer nur einmal und "genau in diesem Moment".
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: Im Augenblick sind automatisch 2 IP mit global scope generiert, eine temparory und eine mit hwaddr.
Sind das 2 IPv6-Adressen mit dem ISP-Präfix? Welche Linux-Distribution hast Du auf deinem Gerät? EDIT: Poste mal auch die anonymisierte Ausgabe von:
ip -6 a
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
lubux schrieb: TomLu schrieb: Im Augenblick sind automatisch 2 IP mit global scope generiert, eine temparory und eine mit hwaddr.
Sind das 2 IPv6-Adressen mit dem ISP-Präfix?
Ja, beide haben den ISP-Präfix.... ohne jeden Zweifel.
Welche Linux-Distribution hast Du auf deinem Gerät?
Oh je... *guckmalverschämtinneecke*... muss ich das wirklich sagen? Eigentlich isses fast 'ne Custom-Distri, ge'debootstrap'ed, ohne Desktop-Environment, auf den Clients mit Openbox als Windowsmanager, dazu pcmanfm als Desktop-Drawer und lxpanel.... alles sehr systemnah, so gut wie kein overhead. Einige dedizierte Systeme und mein Testrechner haben gar keinen x-server. Im Moment schraub ich "hier" mit Debian und (entweder parallel oder anschliessend) mit Raspian, um Resultate zu verifizieren. Jetzt hoffe ich, dass das kein Problem ist... *hmmm* Dank Deines Rates mit tcpdump konnte ich jetzt eindeutig feststellen, was zum Reset des Client-IPv6-Lifetime-Timers führt... und zwar ist es eindeutig das Paket "Router Advertisement". Genau in dem Moment, wenn das reinkommt, springt "valid_lft" auf 7200 sec und "preferred_lft" auf 1800 sec.
Poste mal auch die anonymisierte Ausgabe von:
ip -6 a
ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2003:**:***:***:****:****:****:1234/64 scope global temporary dynamic
valid_lft 6886sec preferred_lft 1486sec
inet6 2003:**:***:***:****:****:****:****/64 scope global mngtmpaddr dynamic
valid_lft 6886sec preferred_lft 1486sec
inet6 fe80::****:****:****:****/64 scope link
valid_lft forever preferred_lft forever
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: Jetzt hoffe ich, dass das kein Problem ist... *hmmm*
Nein, ein Problem ist das nicht. Ich habe nur deshalb gefragt, weil es mit Ubuntu schon mal einen Bug mit den privacy extensions gegeben hat. TomLu schrieb: ip -6 a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2003:**:***:***:****:****:****:1234/64 scope global temporary dynamic
valid_lft 6886sec preferred_lft 1486sec
inet6 2003:**:***:***:****:****:****:****/64 scope global mngtmpaddr dynamic
valid_lft 6886sec preferred_lft 1486sec
inet6 fe80::****:****:****:****/64 scope link
valid_lft forever preferred_lft forever
Die IPv6 mit "scope global temporary dynamic" wird mit den PE generiert. Versuch mal zu eruieren, welcher Dienst die IPv6-Adresse mit "scope global mngtmpaddr dynamic", generiert.
|
thomasschaefer
Anmeldungsdatum: 20. Dezember 2013
Beiträge: 54
|
Dass die RA wieder die Timer zurücksetzen, war zu erwarten. Schön, dass Du nun es Dank tcpdump auch glaubst.
Aus dem gleichen Grund funktionieren PE nicht, wenn Du die RA-accepts ausschaltest.
PE schaltet man auf dem Client durch use_tempaddr ein bzw aus. Die Distributionsfrage ist mir relativ egal und in einem Ubuntuforum werde ich nichts gegen Ubuntu sagen. Auch bei der Wahl der Mittel hast Du alle Freiheiten. Du musst nur bedenken, je weiter Du von standardisierten Lösungen abweichst, desto tiefgründiger musst Du auch den Sachverhalt verstehen. Ein elementarer Unterschied zu IPv4 mit DHCP ist bei IPv6 nun mal SLAAC, welches weitestgehend schon auf Kernelebene stattfindet.(Ausnahme dns- dns-Resolver müssen weiterhin mit Programmen außerhalb des Kernels gesetzt werden)
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
lubux Die IPv6 mit "scope global temporary dynamic" wird mit den PE generiert.
Versuch mal zu eruieren, welcher Dienst die IPv6-Adresse mit "scope global mngtmpaddr dynamic", generiert.
Sorry, ich weiss nicht wie. Ich habe das Journal durchsucht, konnte aber nichts finden.Bei den Service-Units habe ich auch nichts gefunden. Im Moment weiss ich nicht, wo ich noch nachsehen könnte. *hmmmm* thomasschaefer schrieb: Dass die RA wieder die Timer zurücksetzen, war zu erwarten. Schön, dass Du nun es Dank tcpdump auch glaubst.
Aus dem gleichen Grund funktionieren PE nicht, wenn Du die RA-accepts ausschaltest.
PE schaltet man auf dem Client durch use_tempaddr ein bzw aus.
Ja, das habe ich jetzt verstanden. use_tempaddr ist bereits die ganze Zeit gesetzt. Die temporary-IPv6 wird ja auch generiert.
Ein elementarer Unterschied zu IPv4 mit DHCP ist bei IPv6 nun mal SLAAC, welches weitestgehend schon auf Kernelebene stattfindet.(Ausnahme dns- dns-Resolver müssen weiterhin mit Programmen außerhalb des Kernels gesetzt werden)
Das habe ich auch verstanden.... der Client generiert sich seine eigene IPv6 via slaac und verwendet dabei den vom Router empfangenen ISP-Prefix um eine Adresse mit global scope zu erzeugen. Die Kernfrage ist: Wie setze ich die Lifetime der temporären PE-IPv6? Das ist momentan in der sysctl gesetzt:
net.ipv6.conf.default.temp_prefered_lft = 43200
net.ipv6.conf.default.temp_valid_lft = 86400
net.ipv6.conf.all.temp_prefered_lft = 43200
net.ipv6.conf.all.temp_valid_lft = 86400
net.ipv6.conf.eth0.temp_prefered_lft = 43200
net.ipv6.conf.eth0.temp_valid_lft = 86400 Diese Einstellungen wird aber ignoriert, es stehen stattdessen 7200 (valid) und 1800 (prefered) drin. Aber selbst diese Werte werden nicht berücksichtigt, sondern bevor sie ablaufen, werden sie wieder auf die Initialwerte zurückgesetzt. Mit anderen Worten: Eine temporary-privacy-extension-IPv6 hat bei mir faktisch eine "forever"-Gültigkeit, obwohl Lifetime-Sekunden angegeben sind. Was kann dafür die Ursache sein? Wie kann man das auf dem Client eingrenzen und vielleicht sogar beheben?
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: ..., ich weiss nicht wie.
Poste mal die Ausgabe von:
sudo netstat -tulpen | grep -iE 'udp6|tcp6'
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
netstat -tulpen | grep -iE 'udp6|tcp6'
tcp6 0 0 ::1:631 :::* LISTEN 0 11986 538/cupsd
udp6 0 0 :::5353 :::* 111 12591 517/avahi-daemon: r
udp6 0 0 :::44286 :::* 111 12593 517/avahi-daemon: r .... ohne sudo.... sudo gibts bei mir nicht, sondern als root ausgeführt.
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: netstat -tulpen | grep -iE 'udp6|tcp6'
tcp6 0 0 ::1:631 :::* LISTEN 0 11986 538/cupsd
udp6 0 0 :::5353 :::* 111 12591 517/avahi-daemon: r
udp6 0 0 :::44286 :::* 111 12593 517/avahi-daemon: r
Wie ist der isc-dhcp-client konfiguriert? Evtl. den isc-dhcp-client deinstallieren und dhcpcd5 installieren.
|
TomLu
(Themenstarter)
Anmeldungsdatum: 23. August 2014
Beiträge: 603
|
lubux Evtl. den isc-dhcp-client deinstallieren und dhcpcd5 installieren.
Das habe ich heute mal gemacht.... und es hatte keine Auswirkung. Dann bin ich noch auf die beiden Parameter "IPv6PrivacyExtensions" und "ManageTemporaryAddress" gestoßen, die in der "/etc/systemd/network/eth0.network" eingetragen werden. Bei beiden antwortet mir (mein altes) systemd 215:
"Unknown lvalue 'IPv6PrivacyExtensions/ManageTemporaryAddress' in section 'Network/Adress'" Darauf hin habe ich aus Neugier mal ein neues "unverbogenes" Standard-System mit der lxde und einem aktuellen systemd aufgesetzt.... tja, das gleiche Verhalten. Und daraus schließe ich.... lubux Wie ist der isc-dhcp-client konfiguriert?
... das hier vermutlich die Quelle der Probleme liegt. Ich glaube mittlerweile, es ist eine Sache der Einstellungen auf dem Client. Muss ich in der "dhclient.conf" zudem noch bestimmte Einstellungen vornehmen? Bislang war ich der Meinung, die Kernel-Vars in sysctl.conf sind die maßgeblichen und reichen aus, um das PE-Verhalten zu steuern.... *hmmm*
|
lubux
Anmeldungsdatum: 21. November 2012
Beiträge: 13938
|
TomLu schrieb: lubux Evtl. den isc-dhcp-client deinstallieren und dhcpcd5 installieren.
Das habe ich heute mal gemacht.... und es hatte keine Auswirkung.
Wie sind die Ausgaben von:
cat /etc/dhcpcd.conf | grep -i slaac
ps -fC dhcpcd
? TomLu schrieb: Dann bin ich noch auf die beiden Parameter "IPv6PrivacyExtensions" und "ManageTemporaryAddress" gestoßen, die in der "/etc/systemd/network/eth0.network" eingetragen werden. Bei beiden antwortet mir (mein altes) systemd 215: "Unknown lvalue 'IPv6PrivacyExtensions/ManageTemporaryAddress' in section 'Network/Adress'"
Darauf hin habe ich aus Neugier mal ein neues "unverbogenes" Standard-System mit der lxde und einem aktuellen systemd aufgesetzt.... tja, das gleiche Verhalten. Und daraus schließe ich....
Evtl. ist das systemd auf deiner Linux-Distribution eingeschränkt. EDIT: Wenn Du einen raspberrypi hast, dann könntest Du für diesen evtl. arch linux installieren und schauen ob in dieser Distribution, das systemd bezgl. IPv6 auch eingeschränkt ist.
|