Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] wlan mit systemd-networkd und wpa_supplicant  (Read 13261 times)

Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 927
[DE] wlan mit systemd-networkd und wpa_supplicant
« on: 2015/06/04, 10:56:58 »
Moin,
da bluelupo angefangen hat hier seine Netzwerk Umstellung auf systemd-networkd zu erklären, habe ich mich dazu auch entschlossen.

EDIT: dies ist eher für die, die:
1. keine Gui nutzen wollen
2. Neugierig sind
3. oder so wie ich, etwas spinnert sind ;)
Für alle anderen:
4. Nutzt lieber nm oder conman
6. Ich habe Euch gewarnt

Als erstes möchte ich anfügen, dass alles was ich hier schreibe geklaut ist und zwar von folgenden Quellen:

https://www.joachim-breitner.de/blog/664-Switching_to_systemd-networkd
http://beaveris.me/systemd-networkd-with-roaming/
https://www.debinux.de/2014/12/debian-basics-mit-systemd/
https://wiki.archlinux.org/index.php/Wireless_network_configuration#Part_II:_Wireless_management
https://blog.volcanis.me/2014/06/01/systemd-networkd/

Ich gehe hier nur auf die wichtigsten Schritte ein funktionierendes wlan einzurichten ein, alles weitere ist in bluelupos Beitrag zu finden:
http://forum.siduction.org/index.php?topic=5570.0

Alle Vorarbeiten wie das stoppen vom networking.service umbenennen der /e/n/i findet Ihr in jenem Beitrag,
auch das starten von networkd ist dort beschrieben.

Auch gehe ich davon aus, dass wpa_supplicant eingerichtet ist und funktioniert!
Auch nehme ich an, dass die Bezeichnung des wlan-interfaces wlan0 lautet, es kann aber auch jeden anderen Namen haben.
Ich werde dies mit <INTERFACE> bezeichnen wo es nötig ist.

Und ab geht es.

Altes entsorgen:

Code: [Select]

# systemctl stop networking.service
# mv  /etc/network/interfaces /etc/network/interfaces.ORIG
# systemctl disable networking.service


Neues anlegen:

Im Verzeichnis /etc/systemd/system wird eine Datei namens network-wireless@.service erstellt.

# cat /etc/systemd/system/network-wireless@.service

Code: [Select]

[Unit]
Description=Wireless network connectivity (%i)
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/sbin/ip link set dev %i up
ExecStart=/sbin/wpa_supplicant -B -i %i -c /etc/wpa_supplicant/wpa_supplicant-%i.conf
ExecStart=/sbin/dhclient %i

ExecStop=/sbin/ip link set dev %i down

[Install]
WantedBy=multi-user.target


Nun wird noch eine einfache config Datei in
/etc/systemd/network angelegt und zwar:
wlan.network, ich habe noch die Priorität  gesetzt mit 10-wlan.network und 20-eth.network.
Also wir legen eine wlan.network mit folgendem Inhalt an. für statische ip-.adressen, schaut kurz in die howto's

Code: [Select]

[Match]
# Name=<INTERFACE>
Name=wlan0

[Network]
DHCP=yes


Hier einige Alternativen für die Section [Network]
Code: [Select]
## für DHCP
DHCP=ipv4
DHCP=ipv6
DHCP=both

## für statisches ein Beispiel
DNS=192.168.1.254
Address=192.168.1.87/24
Gateway=192.168.1.254


So nun bennen wir noch die /etc/wpa_wpa_supplicant/wpa_supplicant.conf um

Code: [Select]

# mv wpa_supplicant.conf  wpa_supplicant-<INTERFACE>.conf


wobei bei mir <INTERFACE>==wlan0 ist.

Nun noch abschließend:

Code: [Select]
# rm /etc/resolv.conf
# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
## wpa_suplicant.service wird in diesem Falle nicht gebraucht,
## da wpa_supplicant durch
## network-wireless@<INTERFACE>.service gestartet wird
# systemctl mask wpa_supplicant.service
# systemctl enable systemd-resolved
# systemctl enable systemd-networkd
# systemctl enable network-wireless@<INTERFACE>.service
# systemctl start systemd-networkd
# systemctl start systemd-resolved
# systemctl start network-wireless@<INTERFACE>.service

Sollte wieder erwarten das wlan mal nicht laufen so könnte ein

Code: [Select]

systemctl start network-wireless@<INTERFACE>.service

helfen.

So nun sollte alles laufen, vielleicht ist ein Neustart (systemctl reboot) nötig.

Gruß hendrikL

Ps:: Ach ja, der Nachteil, also wie soll ich es sagen, es gibt keine GUI dafür, jetzt ist es raus, puh ;)
Neue Addressen müssen manuell eingetragen werden.
Oder auf jenem Wege:

Code: [Select]
wpa_passphrase <ESSID> <passphrase> >> wpa_supplicant-<INTERFACE>.conf
EDIT: stimmt hatte wpa_gui ganz vergessen, thx reinob

PPs.: Wenn dieser und bluelupos Betrag ins Englische von Jemanden der dieser Sprache gut mächtig ist Übersetzt würde, wäre ich und viele Andere sehr dankbar dafür, Danke!
« Last Edit: 2015/06/04, 21:50:33 by hendrikL »

Offline Geier0815

  • User
  • Posts: 586
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #1 on: 2015/06/04, 13:01:27 »
Sei doch so nett und halte uns auf dem Laufenden ob das Ganze bei dir stabil läuft. Nachdem ich einstmals versucht hatte systemd und wpa_supplicant unter einen Hut zu bekommen mußte ich damals feststellen das es nicht stabil lief und bin dann zu network-manager abgewandert. Wäre ja schön wenn es jetzt funktionieren würde.
Wenn Windows die Lösung ist...
kann ich dann bitte das Problem zurück haben?

reinob

  • Guest
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #2 on: 2015/06/04, 14:41:49 »
Hallo,

Ich nutze networkd und wpa_supplicant seit mehreren Monaten ohne Probleme. Als "GUI" kann man, wenn nötig, wpa_gui (package "wpagui") nutzen.

Dort kann man z.B. neue Netze definieren. (Option "update_config=1" in wpa_supplicant.conf nicht vergesen!).


Edit: @Geier0815: Du hattest wpa_supplicant aber nicht systemd-networkd. Vielleicht war das dein Problem?


(and sorry if my German is bad!)


Offline bluelupo

  • User
  • Posts: 2.068
    • BluelupoMe
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #3 on: 2015/06/04, 15:51:56 »
Mal eine Verständnisfrage zum Thema. Kann der networkd das nicht ohne wpa_supplicant regeln?

reinob

  • Guest
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #4 on: 2015/06/04, 16:29:53 »
Mal eine Verständnisfrage zum Thema. Kann der networkd das nicht ohne wpa_supplicant regeln?


Nein (noch nicht). Networkd ist nicht dafür gedacht (mehr für containers und so).


Es wäre eigentlich eine gute Idee..
(Ob Herr Poettering & co. *auch* *das* übernehmen wollen.. :)

Offline melmarker

  • User
  • Posts: 2.799
    • g-com.eu
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #5 on: 2015/06/04, 16:57:26 »
bluelupo - aber connman kann das
Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety. (Benjamin Franklin, November 11, 1755)
Never attribute to malice that which can be adequately explained by stupidity. (Hanlons razor)

Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 927
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #6 on: 2015/06/04, 21:43:38 »
Hallo Geier 0815, ich hätte dieses hier nicht gepostet, wenn es buggy wäre.
Ich nutze diese Methode schon einige Monate und bin zufrieden.

@reinob, thx for the hints

@ bluelupo in der wpa_supplicant-xyz.conf werden die Daten/Konfigurationen des wlan-zugangs hinterlegt, das ist alles, es reicht ja eine home/office-config dort unterzubringen.
Wie das jetzt ginge, dass bei jeder Neuanmeldung das Passwort eingeben werden muß, weiß ich nicht.
wpa_gui? Ansonsten wie agaida anmerkte nimm conman.
« Last Edit: 2015/06/04, 22:55:49 by hendrikL »

Offline der_bud

  • User
  • Posts: 1.072
  • member
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #7 on: 2015/06/05, 07:46:12 »
Bisher habe ich mein 99% nur zu Hause genutztes Notebook ohne wpa_supplicant genutzt, eine /e/n/interfaces mit fixer IP drin und gut. Hatte eigentlich gehofft die paar Zeilen 'einfach' in eine wlan.network übertragen zu können, aber dann muß ich mich doch mal mit wpa_supplicant beschäftigen. Dank eurer Posts hier scheint das ja doch kein Hexenwerk zu sein... :)
Du lachst? Wieso lachst du? Das ist doch oft so, Leute lachen erst und dann sind sie tot.

Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 927
Re: wlan mit systemd-networkd und wpa_supplicant
« Reply #8 on: 2015/06/05, 08:19:26 »
Könnte zB. so aussehen

Code: [Select]
# cat /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="<SSID>"
        scan_ssid=1
        psk="<pssst Geheim>"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=TKIP
        group=TKIP WEP104 WEP40
        auth_alg=OPEN
        priority=15
        id_str="home"
}

network={
        ssid="<noch eine ssid>"
        psk="<G123#eh456Heim>"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
}

network={
        ssid="HotelNET"
        key_mgmt=NONE
        auth_alg=OPEN
}