Håndtering af netværk
Introduktion
I mange distributioner af Linux kontrolleres netværksforbindelsen af NetworkManager-dæmonen; den kan konfigureres af brugeren. I KDE er KNetworkManagmer (til KDE 3 og KDE 4) og Network Management (til KDE 4) de vigtigste brugerflader til NetworkManager.
Fejl
Rapportering af fejl
For at rapportere en fejl i Network Management skal du angive følgende information:
- Versionen af din distribution
- Er NetworkManager i brug? I nogle distributioner er det et tilvalg, da NetworkManager ikke tjener noget formål på et statisk, serveragtigt system. Stop nu, hvis det ikke er i brug.
- Versionsnummeret for Network Management appletten (NetworkManager-kde4.rpm i openSUSE, plasma-widget-network-manager i Kubuntu 9.04, plasma-widget-networkmanagment i Kubuntu Karmic, kde-plasma-networkmanagement i fedora)
- Versionen af pakken NetworkManager
- Versionen af pakken ModemManager
- Din computers hardware, hvis det ikke er en helt almindelig x86-kompatibel maskine. Er du en PPC-bruger? Så vil jeg vide det.
- Din netværkshardware (brug lshal for at finde ud af det)
- En systemlog fra NetworkManager fra et forsøg på opkobling
- for openSUSE: /var/log/NetworkManager
- for kubuntu: /var/log/syslog
- for fedora: /var/log/messages
- For trådløse netværk:
- Bruger den en skjult SSID?
- Hvilken type trådløs sikkerhed: WEP/WPA-PSK/WPA-EAP?
- Nøglelængde
- Nøgletype (passphrase eller hex for WEP)
- Ciphers (TKIP/AES)
- Auth mekanismer (TLS/TTLS/PEAP/...)
- For mobilt bredbånd:
- hardware
- anvendt driver (se dmesg, når du forbinder hardwaren)
- anvendt netværk
- netværkstype (GSM/CDMA/UMTS)
- hvilken apn er anvendt (hvis nogen)
- ModemManager logs ("killall NetworkManager", "killall modem-manager", start "modem-manager --debug", "NetworkManager --no-debug") kan være nyttige for at finde ud af om NetworkManager finder din hardware.
Og meget vigtigt: Kan du etablere forbindelse med en anden klient? For eksempel nm-applet under GNOME eller cnetworkmanager fra konsollen. Hvis du kan det, så prøv venligst at vedhæfte tilsvarende information som beskrevet i slutningen af denne artikel.
Fejlhåndtering
På de fleste stationære Linux-maskiner er Network Manager den øverste i en stor og skrøbelig stak af komponenter. Det er nødvendigt for at kunne håndtere det enorme antal forskellige konfigurationer. Når en opkobling mislykkes kan der være mange forskellige årsager overalt i stakken, men symptomerne vil typisk være noget i retnig af "Connection got to 28% and then failed". Fejl, som rapporteres til bugs.kde.org bliver triaged for at finde ud af, hvor i stakken fejlen optræder, sådan at den kan rettes af de, der er ansvarlige.
Stakken
Hardwaren
Trådløs hardware har et forbløffende stort antal fejl. Disse håndteres i det næste lag, hvis du er heldig.
Kernen
Den egentlige driver, som kontrollerer hardwaren findes her. Her er der også mange interessante fejl. Efter at et standard MAC-lag til trådløs forbindelse blev føjet til Linux-kernen, så er situationen blevet bedre. Noget hardware har ingen Linux-driver, så man kontrollerer den ved brug af værktøjet ndiswrapper, som indlæser Windows-drivere med deres fejl. Du kan se outputtet i systemloggen, og du kan komme i kontakt med driveren ved hjælp af kommandoerne i iwtools.
WPA Supplicant
wpa_supplicant er et værktøj, som har kontakt med driveren på lavt niveau og udbyder indstillinger for autentfikation og kryptering. Det er opensource og generelt af høj kvalitet. Før NetworkManager skulle brugere konfigurere det manuelt med kontrolfiler i /etc. På den måde kom nogle brugere en gang imellem i vanskeligheder. Det logger sædvanligvis til /var/log/wpa_supplicant.log. Nutildags kontrolleres det for det meste af....
NetworkManager
I de fleste almindelige Linux-distributioner er NetworkManager den centrale systemdæmonen for netværksdelen. Den har rodprivilegier, har kontrol over de lavere niveauer og giver klienter, som kører i en brugersession, mulighed for at kontrollere visse ting via DBUS. Den skriver i /var/log. NM kontrollerer også DHCP-klienter om nødvendigt og overskriver etc/resolv.conf med den DNS-server, som den har konfigureret. NetworkManager frembyder også en tjeneste i Systemindstillinger, som er ansvarlig for at læse din distributions netværkskonfigurationsfil (for hele systemet) og sende den videre til NetworkManager.
Brugerklienter
KNetworkManager til KDE 4, Network Management Plasmoid under KDE 4, KNetworkManager under KDE 3, nm-applet under GNOME og cnetworkmanager som sidste udvej. Disse er ansvarlige for
- at give feedback om netværkets status
- at formidle brugerens handlinger til NetworkManager og gemme
- at formidle detaljer om brugerens netværksforbindelse (policy) til NM
Selv om disse er de mest synlige dele af systemet, så har de mindst betydning for at foretage en succefuld opkobling. Eftersom de har den samme bindelse til NetworkManager, så kan de let erstatte hinanden.
Når ting går galt
Where Does It Hurt?
Simple. Start at the top of the stack and work down. When you find something that works, you found the site of the problem. When you run out of things you can change, hand over to an expert (probably the responsible team at your Linux distribution).
- Are you actually using NetworkManager on your system? Mandriva doesn't use it. ArchLinux uses wicd. Moblin uses Connman.
- Try a different NetworkManager client. If that helps, continue in the next section to try and further localise the problem in Network Management. Then bugs.kde.org, product "Network Management" is the place to go.
- Try to configure a connection using your distro's system configuration tools, so SystemSettings picks it up. It's unlikely but worth a go.
- Try a manually configured connection via wpa_supplicant. The documentation is rather sparse but there are example configurations include in the package. Here is the list of supported hardware. If wpa_supplicant on its own works, NetworkManager is at fault. Talk to your distro or report it at bugs.freedesktop.org.
- If that didn't work, reconfigure a wireless router to use a different (weaker) encryption type or none at all. If this works, the problem is either in wpa_supplicant or the driver. Either way, take it to your distro.
It's All KDE's Fault!
If you are reading this, you will have been able to make a connection using a different NetworkManager client.
First, make sure that you are not running another client as well as Network Management. This will lead to unpredictable results. If you were, remove and restart Network Management. You can run it externally to Plasma as
plasmoidviewer networkmanagement
if you want.
You should now try to figure out how the connection provided by Network Management differs from that provided by the other client. If you build Network Management from source you can use the tool 'qdbusfornm', which is a version of qdbus extended to handle NM's data types.
If you do not build from source, just replace
./qdbusfornm --system
by
qdbus --system --literal
in the command shown below. It is a bit harder to read but should give you the same output. If you use
qdbus --system --literal
please take the time to format the output so there is one key per line, similar to the qdbusfornm output below. This is easy and just takes time, so it is better for you to do this than a developer.
The value 0 below identifies the connection. Change it if you have more than one until you find the relevant connection.
./qdbusfornm --system org.freedesktop.NetworkManagerUserSettings/org/freedesktop/NetworkManagerSettings/0 org.freedesktop.NetworkManagerSettings.Connection.GetSettings
returns here
a{sa{sv}}(==802-11-wireless== band: bg mode: infrastructure security: 802-11-wireless-security ssid: opensuse-guest ==802-11-wireless-security== auth-alg: open key-mgmt: wpa-psk wep-tx-keyidx: 0 ==connection== autoconnect: true id: openSUSE type: 802-11-wireless uuid: {951cc7d9-1fa0-4525-9ab7-7199849e1b19} ==ipv4== dns-search: method: auto )
Now you should repeat using the other, working client and copy both sets of output, before attaching them securely to a bug report at bugs.kde.org. With this information we will quickly be able to implement a fix.
Crashes
If you have a crash ensure you install debugging symbols and take a backtrace. In Kubuntu you need to add the debug repository and install plasma-widget-networkmanagement-dbgsym.