Felsöka Trådlösa Nätverk

Hoppa till: navigering, sök


Avsikt

Den här sidans mål är att vara en guide till hur man kan felsöka problem med trådlösa nätverk. Det är flera delar som är inblandande när man ansluter till ett trådlöst nätverk, både när man använder NetworkManager eller YaST.

Huvudkommponenterna för att sätta upp en trådlös nätverksanslutning är:

  • nm-applet eller KNetworkManager
  • NetworkManager och/eller Yast
  • wpa_supplicant
  • den trådlösa drivrutinen (vissa tillsammans med mac80211)

NetworkManager

Vilka loggfiler behövs

För att felsöka problem med NetworkManager behövs följande loggfiler efter en misslyckad anslutning:

  • /var/log/NetworkManager
  • /var/log/wpa_suppliant (om möjligt med extra debuginformation aktiverat)
  • information från kommandot dmesg

Aktivera wpa_supplicant debuginformation

För att få maximal debuginformation av wpa_supplicant behöver du göra en ändring i filen /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service.

Ändra den här raden

Exec=/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -f /var/log/wpa_supplicant.log

till

Exec=/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -dddt -f /var/log/wpa_supplicant.log

och kör följande kommando som root:

> rcnetwork stop
> killall wpa_supplicant
> rcnetwork start

Nu kommer wpa_supplicant skriva debuginformation till /var/log/wpa_supplicant.

Hur du sätter up kontakten manuellt

Stoppa NetworkManager och wpa_supplicant

För att kunna aktivera kontakten manuellt så får inte NetworkManager eller wpa_supplicant köra.


> rcnetwork stop
> killall wpa_supplicant

Om din accesspunkt inte använder någon säkerhet kan du använda iwconfig för att upprätta kontakten. Även med WEP-kryptering kan du använda det här sättet. För alla andra säkerhetstyper (WPA-PSK, WPA-EAP, 802.1x med dynamisk WEP) behöver du använda wpa_supplicant.

Standardkommandon

Först kör du iwconfig för att se vilka trådlösa interface du vill använda.

> iwconfig
lo        no wireless extensions.

eth1      no wireless extensions.

eth0      unassociated  ESSID:""
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated
          Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:3  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:53   Missed beacon:0

I det här exemplet är eth0 det trådlösa interfacet.

Om du inte vet namnet (Essid) på dit trådlösa nätverk så kan du skanna för att ta reda på det.

> iwlist eth0 scan
...
          Cell 02 - Address: XX:XX:XX:XX:XX:XX
                    ESSID:"XXXXXX"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:2
                    Frequency:2.417 GHz (Channel 2)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=37/100  Signal level=-78 dBm
                    Extra: Last beacon: 488ms ago
...

Det här kommandot visar alla accesspunkter inom räckhåll. Om din accesspunkt inte dyker upp beror det oftast på att den inte skickar ut sitt essid. Försök då skanna efter ditt speciella nätverk.

> iwlist eth0 scan essid ditt_essid_här
...

iwconfig

Osäker uppkoppling

Om du använder en mac80211-drivrutin (e.x. iwl3934, iwl4965, ath5k, b43, rtl8187, rt2x00, ...) så behöver interfacet vara uppe innan du kan kontakta det trådlösa nätverket:

> ifconfig eth0 up

Att skapa en osäker trådlös uppkoppling med iwconfig är ganska enkelt.

> iwconfig eth0 essid ditt_essid_här

Vänta några sekunder och kör sedan iwconfig för att se om kontakten kunde aktiveras.

> iwconfig eth0
eth0      IEEE 802.11g  ESSID:"XXXXXX"
          Mode:Managed  Frequency:2.417 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate:54 Mb/s   Tx-Power=20 dBm   Sensitivity=8/0
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=58/100  Signal level=-68 dBm  Noise level=-90 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:10

Den viktigaste informationen är

  • Access Point: XX:XX:XX:XX:XX:XX - ska visa MAC-adressen till din access punkt
  • Link Quality=58/100 - ska vara något annat än 0
  • Signal level=-68 dBm - ska vara något annat än 0
  • Noise level=-90 dBm - ska vara något annat än 0

Nu är den trådlösa kontakten uppe :-)

Men innan du kan göra något på nätverket behöver du få en IP-adress. Det beskrivs senare (Att få en IP-adress).

WEP-krypterad uppkoppling

Att skriva

wpa_supplicant

Att skapa en uppkoppling med wpa_supplicant är lite svårare än till ett osäkert trådlöst nätverk. Du behöver först skriva en konfigurationsfil. Konfigurationsfilen innehåller först standardinformation som är likadan för alla nätverk du vill använda.

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1

Nästa del är att ange en network-del i konfigurationsfilen. Den network-delen är olika beroende på vilken säkerhetsmetod du använder i ditt trådlösa nätverk.

WPA med en delad nyckel (PSK)

För ett WPA-PSK-säkert nätverk, behöver du bara kopiera följande och ändra parametrarna SSID och PSK till dina värden.

network={
	ssid="ditt_essid_här"
	psk="ditt_lösenord_här"
	key_mgmt=WPA-PSK
	priority=5
	proto=WPA
}

WPA-EAP

Att skriva

Starta uppkopplingen

För att använda den konfigurationsfilen du skapat med wpa_supplicant kör följande kommando:

> wpa_supplicant -Dwext -ieth0 -c/etc/din_konfigurations_fil -dddt

-Dwext säger till wpa_supplicant att använda wext-drivrutinen för att kommunicera med den underliggande drivrutinen, de flesta moderna drivrutinera fungerar med den här inställningen (åtminstonde mac80211-baserade drivrutiner.
-ieth0 berättar vilket interface som ska använda för den trådlösa kontakten
-c/etc/your_config_file berättar för wpa_supplicant vilken konfigurationsfil som ska användas
-dddt aktiverar maximal debuginformation

Efter några sekunder borde wpa_supplicant visa någon liknande information:

1213018160.349324: State: GROUP_HANDSHAKE -> COMPLETED
1213018160.349334: CTRL-EVENT-CONNECTED - Connection to XX:XX:XX:XX:XX:XX completed (auth) [id=0 id_str=]
1213018160.349341: wpa_driver_wext_set_operstate: operstate 0->1 (UP)
1213018160.349348: WEXT: Operstate: linkmode=-1, operstate=6
1213018160.349880: EAPOL: External notification - portValid=1
1213018160.349899: EAPOL: External notification - EAP success=1
1213018160.349905: EAPOL: SUPP_PAE entering state AUTHENTICATING
1213018160.349911: EAPOL: SUPP_BE entering state SUCCESS
1213018160.349917: EAP: EAP entering state DISABLED
1213018160.349924: EAPOL: SUPP_PAE entering state AUTHENTICATED
1213018160.349930: EAPOL: SUPP_BE entering state IDLE
1213018160.349954: RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
1213018160.349965: RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
1213018161.356786: RSN: processing PMKSA candidate list
1213018161.356821: RSN: not in suitable state for new pre-authentication
1213018161.852768: EAPOL: startWhen --> 0

Ser du detta fungerar den trådlösa uppkopplingen och du kan verifera det ifrån en annan terminal med kommandot iwconfig som beskrevs tidigare.

wpa_gui

För att göra livet lättare med wpa_supplicant. Så finns det två program, wpa_cli och wpa_gui. Medans wpa_cli är en del av wpa_supplicant paketet, du behöver dock manuellt installera wpa_gui.

# zypper in wpa_supplicant-gui

För att wpa_gui ska kunna jobba med wpa_supplicant behöver du editera filen /etc/wpa_supplicant/wpa_supplicant.conf med gedit eller din favoriteditor.

# gedit /etc/wpa_supplicant/wpa_supplicant.conf

Du behöver bara lägga till "update_config=1" som sista rad i filen och spara den. För mer information om wpa_supplicant konfiguration kan du titta på /usr/share/doc/packages/wpa_supplicant/wpa_supplicant.conf

Nu startas du wpa_supplicant

# wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B

därefter

# wpa_gui

Då öppnas wpa_gui-fönstret, du trycker på scan och presenteras med en lista på accesspunkter inom räckhåll. Dubbelklicka på en och då öppnas ett nytt fönster där du fyller i ditt lösenord. Genom att trycka på Add så försöker wpa_gui ansluta till nätverket. Det här fungerar på öppna (utan säkerhet), WEP- och WPA-säkrade nätverk. wpa_gui skriver också ner parametrarna till wpa_supplicant.conf filen, så du kan titta på den med:

# cat /etc/wpa_supplicant/wpa_supplicant.conf

Tänk på: wpa_gui fungerar inte med den instans av wpa_supplicant som startas av NetworkManager, då den använder D-Bus för kommunikation. Det fungerar dock med den instans som startas av ifup, till och med utan konfigurationsfil.

Att få en IP/adress

DHCP

Om ditt nätverk använder DHCP för att dela ut IP-adresser behöver du först se om du använder dhcpcd eller dhclient och stoppa dom.

> ps -A | grep dhc
# kill pid

Nu kan du använda antinge dhcpcd wlan0 | eth1 eller dhclient wlan0 | eth1 för att få en tilldelad IP-adress

# dhcpcd wlan0

Om dhccpcd försvinner och du för tillbaka prompten så ska intefacet ha fått en IP-adress. Verifera det med kommandot ifconfig.

> ifconfig wlan0
eth0      Protokoll:Ethernet  Hardware Adresse 00:12:F0:39:49:B4
          inet Adresse:192.168.0.173  Bcast:192.168.0.255  Maske:255.255.255.0
          inet6 Adresse: fe80::212:f0ff:fe39:49b4/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 Sendewarteschlangenlänge:1000
          RX bytes:46360 (45.2 Kb)  TX bytes:1468 (1.4 Kb)
          Interrupt:23 Speicher:b4001000-b4001fff

Den intressant delen är inet Adresse:192.168.0.173.

Manuell IP-konfiguration

Sätt bara önskad IP-adress med kommandot ifconfig:

> ifconfig eth0 192.168.0.145

Verifiera att kontakten fungerar

Bästa sättet att verifiera at kontakten är upp och fungerar är att pinga en server på Internet.

>  ping google.com
PING google.com (64.233.167.99) 56(84) bytes of data.
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=1 ttl=242 time=156 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=2 ttl=242 time=151 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=3 ttl=242 time=151 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2008ms
rtt min/avg/max/mdev = 151.011/152.976/156.665/2.648 ms

Om kommandot ger samma information som ovan så fungerar det!

Om du inte får ett svar, kan du testa och se om åtminstonde access punkten är kontaktbar. I det här exemplet har den adressen 192.168.0.1:

ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.75 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=2.14 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=1.75 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=1.84 ms
^C
--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3012ms
rtt min/avg/max/mdev = 1.754/1.874/2.145/0.160 ms

Om du kan pinga accesspunkten men inte en Internetadress, så kan det vara fel på namnlösningen. Det kan bero på att du har två nätverkskort aktiva (trådbundet och trådlöst) där ett har dhcpcd körandes.

Ta då ner båda interfacen och försök igen från ovan men bara med det trådlösa interfacet.

# ifdown eth0
# ifdown wlan0 
# ifup wlan0

Att göra: Förklar vad man nu ska göra..

Att fånga in paket eller monitoreringsläge

Programvara som behövs

För att fånga in paket på ett trådlöst nätverksinterface behöver du använda kismet. Efter det kan du titta på den information som kismet fångar upp med Wireshark

Aktivera monitoreringsläge med mac80211 baserade drivrutiner

Att skriva

FAQ

Q: Min kontakt försvinner efter några minuter
A: Vissa accesspunkter har en ovana med att släppa kontakten om kopplingen inte används under en viss tid. Ibland kan du ändra det här beteendet i konfiguration på din accesspunkt.

Författare

Helmut Schaa <hschaa@suse.de>

Översatt av

Claes Bäckström <claes.backstrom@fsfe.org>