Felsöka Trådlösa Nätverk
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>