<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE artikkel PUBLIC "-//infoweb.ntnu.no//DTD Infoweb 1.0//NO"
          "http://infoweb.ntnu.no/infoweb.dtd">
<artikkel spraak="no">
<tittel> Trådløse nettverkskort i Linux</tittel>
<forfatter>grip</forfatter>
<sammendrag>
Sentrale ting man bør vite for å få trådløse nettverkskort til å fungere i Linux
</sammendrag>
<hoveddel>

<os2>Merknad</os2>
<avsnitt>
Denne artikkelen inneholder mye informasjon som ikke er relevant for nyere
distribusjoner av linux. Med f.eks. Ubuntu 7.04 får man som regel fungerende
trådløsfunksjon ut av boksen :)
</avsnitt>

<os2>Innledning</os2>
<avsnitt>
Å få trådløse nettverkskort til å fungere i Linux kan være vanskelig og noe frustrerende.
Denne artikkelen tar ikke sikte på å gjennomgå hvordan man kan få alle typer kort til å fungere, 
men snarere gi noen hint om hvordan man bør lete etter løsninger, og forklare noen sentrale oppsett og kommandoer. 
De fleste kommandoer gjengitt her må kjøres som brukeren <uthev>root</uthev>.
</avsnitt>


<avsnitt>
Den beste kilden til informasjon om trådløst i Linux er <ekstern uri="http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/">
denne nettsiden</ekstern>, sponset av <kursiv>Hewlett Packard</kursiv>, og det vil henvises til denne siden flere ganger i denne artikkelen.
</avsnitt>

<os2>Kjernen</os2>
<avsnitt>
De fleste nyere distribusjoner er satt sammen for å støtte mest mulig hardware, så det er mulig at du ikke 
trenger å kompilere din egen <uthev>kjerne</uthev>. Sjansen er imidlertid stor for at du må kompilere en ekstern <uthev>modul</uthev> som skal 
settes inn i kjernen,
og det kan hende at du må inn å se på oppsettet til kjernen.
Det anbefales derfor å lese hele denne seksjonen.

For mer informasjon om det å konfigurere og kompilere din egen Linux-kjerne kan man blant annet lese <ekstern uri="http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html">Kernel Rebuild Guide</ekstern>.

</avsnitt>

<os3>Nødvendige opsjoner</os3>
<avsnitt>
For å benytte trådløse nettverkskort i Linux må du ha støtte for det i kjernen. Du kan sjekke om du har dette
ved å se om filen <kommando>/proc/net/wireless</kommando> eksisterer. Hvis den ikke gjør det, må du endre konfigurasjonen av kjernen,
og kompilere den på nytt. Opsjonen som må være slått på er <kommando>CONFIG_NET_RADIO</kommando>. I <kommando>menuconfig</kommando> finnes dette her:
</avsnitt>

<avsnitt>
<konsoll>
I Linux 2.6:
Device Drivers->Networking support->Wireless LAN (non-hamradio)->Wireless LAN drivers (non-hamradio) and Wireless Extensions

I Linux 2.4:
Network Device Support->Wireless LAN (non-hamradio)->Wireless LAN (non-hamradio)
</konsoll>
</avsnitt>

<avsnitt>
Mange trådløse kort er ikke innebygde, men plasseres i en "sprekk" på siden av PC-en. Dette er <uthev>PCMCIA</uthev>- eller <uthev>Cardbus</uthev>-kort,
og for å benytte et slikt kort, og også en del innebygde kort, må det være støtte for PCMCIA/Cardbus i kjernen. Dette er tilfelle
i standard-oppsettet til kjernene i de fleste distribusjoner, 
så sannsyngligvis må du ikke endre dette.
Dersom du må konfigurere kjernen må du si ja til <kommando>CONFIG_PCMCIA</kommando>. I <kommando>menuconfig</kommando> finnes dette her:
</avsnitt>

<avsnitt>
<konsoll>
I Linux 2.6:
Bus Options (PCI, PCMCIA, EISA, MCA, ISA)->PCMCIA/Cardbus support->PCMCIA/Cardbus support

I Linux 2.4:
General Setup->PCMCIA/Cardbus support->PCMCIA/Cardbus support
</konsoll>
</avsnitt>

<avsnitt>
I tillegg inkludere støtte for de nødvendige typer PCMCIA/Cardbus på den samme siden i <kommando>menuconfig</kommando>. Her er det relativt trygt å
si ja, dersom man er usikker. 
</avsnitt>

<avsnitt>
I tillegg til å ha opsjonene ovenfor 
i kjernen må det benyttes en pakke som heter <kursiv>pcmcia-cs</kursiv>. Denne startes som regel som en tjeneste ved navn <kommando>pcmcia</kommando> eller lignende.
I distribusjonene <kursiv>Redhat</kursiv> og <kursiv>Fedora</kursiv> kan du konfigurere hvilke tjenester som skal starte ved oppstart via programmet <kommando>redhat-config-services</kommando>.
For mer informasjon om Linux og PCMCIA/Cardbus, henvises det til <ekstern uri="http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html">
PCMCIA Howto</ekstern>.
</avsnitt>

<os3>Drivere</os3>
<avsnitt>
For at at kortet ditt skal fungere, må du ha <uthev>drivere</uthev>. Disse er bygd inn i Linux-kjernen, enten fast eller som 
moduler som kan lastes dynamisk inn og ut.
Den standard Linux-kjernen har støtte for en del trådløse kort som følger <uthev>802.11b</uthev>-standarden. Dette er den standarden som 
det trådløse nettverket på NTNU benytter. 
I <kommando>menuconfig</kommando> finner du disse driverne her:
</avsnitt>

<avsnitt>
<konsoll>
I Linux 2.6:
Device Drivers->Networking support->Wireless LAN (non-hamradio)

I Linux 2.4:
Network device support->Wireless LAN (non-hamradio)
og 
Network device support->PCMCIA network device support->PCMCIA Wireless LAN
</konsoll>
</avsnitt>

<avsnitt>
Det er ikke alltid like lett å se om ditt kort er støttet
her, så det anbefales å sjekke Internettsiden som det er henvist til i innledningen, og å søke etter løsninger fra andre 
med samme nettverkskort på Internett.
</avsnitt>

<avsnitt>
Dersom du bygger driveren fast inn i kjernen skal den trådløse nettverksenheten som finnes på systemet automatisk være til stede etter
oppstart. Merk at dette ikke betyr at alt vil fungere automatisk, men du kan gå videre til å konfigurere enheten med <kursiv>Wireless-tools</kursiv>, 
slik det står beskrevet nedenfor under seksjonen <kursiv>Verktøy</kursiv>.
</avsnitt>

<avsnitt>
Dersom du bygger driverne inn som moduler kan du være nødt til å laste modulen manuelt med kommandoen
</avsnitt>

<avsnitt>
<konsoll>
root# modprobe navnpaamodul
</konsoll>
</avsnitt>

<avsnitt>
<kommando>navnpaamodul</kommando> er selvsagt navnet på modulen. Kommandoen 
</avsnitt>

<avsnitt>
<konsoll>
root# ifconfig -a 
</konsoll>
</avsnitt>

<avsnitt>
lister opp informasjon om alle nettverksenhetene, slik at du kan se hvilke enheter du har. Dersom du har fått lastet driverne
korrekt skal du ha fått en ny enhet i systemet, som for eksempel kan hete <kommando>eth1</kommando>, <kommando>wlan0</kommando> eller <kommando>ath0</kommando>. I denne artikkelen vil alle
eksemplene benytte navnet <kommando>eth1</kommando>.
</avsnitt>

<avsnitt>
Modulen må lastes hver gang du starter Linux på nytt, men du kan sette opp dette til å skje automatisk ved oppstart, eller 
når nettverkskortet forsøkes
benyttet. I de fleste distribusjoner kan du benytte filen <kommando>/etc/modules.conf</kommando> til dette, ved å legge til en linje som 
</avsnitt>

<kode>
alias eth1 navnpaamodul
</kode>

<avsnitt>
Dette betyr at nettverksenheten <kommando>eth1</kommando> assosieres med modulen <kommando>navnpaamodul</kommando>. Vær oppmerksom på at en del distribusjoner, som for eksempel
<kursiv>Debian</kursiv> og <kursiv>Gentoo</kursiv> genererer <kommando>/etc/modules.conf</kommando> automatisk ut ifra andre filer, og at manuell editering derfor må foregå i disse.
</avsnitt>

<os3>Drivere som ikke finnes i standard Linux-kjerne</os3>
<avsnitt>
Mange trådløse kort har drivere som av forskjellige grunner ikke finnes i den standard Linux-kjernen. Det kan for eksempel være
fordi de er for dårlig skrevet, for nye, for ustabile eller at ikke har åpen kildekode. Det betyr imidlertid ikke at man ikke 
kan bruke dem. Slike drivere finner man overalt på nettet, noen gang som lenker fra produsentenes sider, men som regel ikke. 
Igjen henvises det til siden nevnt i innledningen som den beste kilden til informasjon, med lenker til diverse drivere.
</avsnitt>

<avsnitt>
Dersom du finner en driver på nettet, må du laste den ned, kompilere den, og deretter laste den inn i kjernen. Siden den ikke
er en del av standard-kjernen må du laste den med kommandoen
</avsnitt>

<avsnitt>
<konsoll>
root# insmod banetilmodul
</konsoll>
</avsnitt>

<avsnitt>
<kommando>banetilmodul</kommando> er her filnavnet, inkludert banen, til modul-filen.
Moduler har filendelsen <kommando>.o</kommando> i Linux 2.4, og <kommando>.ko</kommando> i Linux 2.6. Når du har lastet modulen 
har du forhåpentligvis fått en ny nettverksenhet. Dette kan du sjekke med <kommando>ifconfig -a</kommando>, slik beskrevet ovenfor.
</avsnitt>

<os3>802.11a, 802.11g og kort uten Linux-drivere</os3>
<avsnitt>
To standarder med høyere kapasitet enn 802.11b er <uthev>802.11a</uthev> og <uthev>802.11g</uthev>, hvorav sistnevnte blir mer og mer utbredt.
De fleste 802.11g-kort støtter også 802.11b, og i nyere bærbare følger det gjerne slike kort med. Det finnes desverre Linux-drivere for svært få av disse kortene, på grunn av manglende informasjon fra produsentene. 
Det finnes også en del 802.11b-kort som av samme grunn ikke har Linux-drivere.
Trådløskortene som er en del av <kursiv>Intel Centrino</kursiv> er et eksempel på kort der dette er et problem.
Det er imidlertid verdt å nevne at det finnes løsninger som benytter Windows-drivere til å drive kortet i Linux.
En gratis løsning av denne typen <ekstern uri="http://ndiswrapper.sourceforge.net">ndiswrapper</ekstern>.
Denne støtter en rekke vanlige kort som ikke har drivere med åpen kildekode.
Det bør nevnes at mange er svært lite begeistret for denne typen løsninger, da det innebærer å laste inn ukjent kode
i Linux-kjernen, som kan skape uforutsette problemer og som det er umulig å ha kontroll på for de som driver med kjerne-utvikling. Det er derfor helt dødfødt å sende inn
bug-rapporter om noe som helst i Linux-kjernen dersom man benytter en slik binær modul.
</avsnitt>

<os2>Verktøy</os2>
<avsnitt>
For å benytte en trådløsenhet etter at driveren er korrekt lastet trenger du et sett med verktøy som heter <kursiv>Wireless-tools</kursiv>, skrevet
av Jean Tourrilhes. Denne pakken består av verktøyene <kommando>iwconfig</kommando>, <kommando>iwevent</kommando>, <kommando>iwgetid</kommando>, <kommando>iwlist</kommando>, <kommando>iwpriv</kommando> og <kommando>iwspy</kommando>.
De fleste nye distribusjoner har disse inkludert, eller kan installere pakken gjennom sitt standard pakkesystem.
Dersom du må legge de inn manuelt kan du laste de ned fra samme side som det er henvist til i innledningen.
Det viktigste verktøyet i denne pakken er <kommando>iwconfig</kommando>, som er alt du trenger for å konfigurere kortet. Her nevnes kun de mest sentrale
måtene å bruke <kommando>iwconfig</kommando> på. For en mer detaljert gjennomgang av mulighetene henvises det til annen dokumentasjon, for eksempel 
man-sidene til <kommando>iwconfig</kommando>, som du får fram ved å skrive 

</avsnitt>

<avsnitt>
<konsoll>
root# man iwconfig
</konsoll>
</avsnitt>

<os3>Se status på kortet</os3>
<avsnitt>
For å få en del informasjon om status på kortet, benyttes kommandoen
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1
</konsoll>
</avsnitt>

<avsnitt>
Dersom du bare skriver
</avsnitt>

<avsnitt>
<konsoll>
iwconfig
</konsoll>
</avsnitt>

<avsnitt>
skal du få opp trådløsinformasjon for alle nettverksenhetene, men det vil stå <kommando>no wireless extensions</kommando> på de enhetene som ikke
er trådløse.
</avsnitt>

<os3>Sette ESSID (nettverksnavn)</os3>
<avsnitt>
For å kunne benytte et trådløsnettverk må du sette navnet på nettverket, også kalt <uthev>ESSID</uthev> eller bare <uthev>SSID</uthev>.
NTNUs nettverk har ESSID <kommando>ntnu</kommando>, og dennee vil benyttes i eksemplene videre i artikkelen. For å benytte dennee brukes da kommandoen
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 essid ntnu
</konsoll>
</avsnitt>

<avsnitt>
Etter at du har gjort dette kan du få fram status for kortet slik det står beskrevet i forrige avsnitt. Dersom kortet med
hell har koblet til nettverket skal du, hvis du ber om status etter noen sekunder, se at det står, blant masse annen informasjon:
</avsnitt>

<avsnitt>
<konsoll>
ESSID:"ntnu"
</konsoll>
</avsnitt>

<avsnitt>
Dersom det er tomt mellom 
hermetegnene har kortet ikke koblet til nettverket. Du kan også benytte kommandoen <kommando>iwgetid </kommando> til å se hvilket nettverk du 
er koblet til. Mange kort kan søke etter tilgjengelige nettverk og koble til det først og beste det finner, ved å sette
ESSID til <kommando>any</kommando>.
</avsnitt>

<os3>Sette operasjonsmodus</os3>
<avsnitt>
Trådløskort støtter flere operasjonsmodi, hvorav <uthev>managed</uthev> og <uthev>ad-hoc</uthev> er de mest aktuelle for de fleste. Førstnevnte benyttes på
nettverk der aksesspunkt benyttes, slik som på NTNU. Sistnevnte benyttes når du vil koble sammen flere maskiner med trådløskort
uten at det finnes noe aksesspunkt, for eksempel for å overføre filer til hverandre. Det finnes flere modi, som ikke nevnes her,
men på mange kort får du ikke til å sette andre modi via <kommando>iwconfig</kommando>. For å sette modus til managed, benyttes kommandoen
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 mode Managed
</konsoll>
</avsnitt>

<avsnitt>
For å sette modus til ad-hoc, benyttes kommandoen
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 mode Ad-hoc
</konsoll>
</avsnitt>

<os3>WEP-kryptering (Wired Equivalent Privacy)</os3>
<avsnitt>
<uthev>WEP</uthev>-kryptering er en del av standarden <uthev>802.11</uthev>, og benyttes for å kryptere trafikk til og fra din maskin, samt å hindre
adgang til uvedkommende på nettverket. Denne formen for kryptering er svært lite sikker, spesielt på nettverk med stor
trafikk, men kan være nyttig for privatpersoner med egne trådløse nettverk for å holde naboene ute. Når WEP-kryptering 
benyttes settes det en nøkkel i aksesspunktet, som også må settes på klientsiden for at de to skal kunne forstå hverandre.
For å sette en slik nøkkel for et trådløskort via iwconfig benyttes kommandoen
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 key XXXXXXXX
</konsoll>
</avsnitt>

<avsnitt>
der <kommando>XXXXXXXX</kommando> må byttes ut med nøkkelen, representert i hexadesimale tall. Det er også mulig å sette nøkkelen som en ASCII-streng
ved å skrive
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 key s:YYYYYYYY
</konsoll>
</avsnitt>

<avsnitt>
der <kommando>YYYYYYYY</kommando> er ASCII-strengen.
Normalt må krypteringsnøkkelen settes før ESSID settes, men dersom du får problemer med WEP, kan det lønne
seg å prøve å stokke om på rekkefølgen. Dersom du har problemer kan du også forsøke å legge til nøkkelordet <kommando>restricted</kommando> eller <kommando>open</kommando>
foran nøkkelen, for eksempel slik:
</avsnitt>

<avsnitt>
<konsoll>
iwconfig eth1 key open XXXXXXXX
</konsoll>
</avsnitt>

<avsnitt>
Betydningen av dette varierer noe fra kort til kort.
</avsnitt>

<os3>Se tilgjengelige nettverk</os3>
<avsnitt>
Noen ganger kan det være praktisk å søke etter tilgjengelige nettverk, og til dette kan du benytte følgende kommando
</avsnitt>

<avsnitt>
<konsoll>
iwlist eth1 scanning
</konsoll>
</avsnitt>

<avsnitt>
Verktøyet <kommando>iwlist</kommando> kan også benyttes til å få frem annen informasjon.
</avsnitt>

<os3>Komme på nett</os3>
<avsnitt>
Selv om du har fått satt nettverks-id og kortet ditt nå er en del av trådløsnettverket, må du fortsatt få en <uthev>IP-adresse</uthev>, og få satt
opp diverse annen nødvendig informasjon for å kommunisere over nettverket. På de fleste nettverk får du dette tildelt via <uthev>DHCP</uthev>, dersom
du ber om det. Hvordan dette gjøres varierer fra distribusjon til distribusjon. På noen distribusjoner, som for eksempel 
<kursiv>Redhat</kursiv> og <kursiv>Fedora</kursiv>, brukes kommandoen
</avsnitt>

<avsnitt>
<konsoll>
dhclient eth1
</konsoll>
</avsnitt>

<avsnitt>
På andre distribusjoner kan du benytte kommandoen 
</avsnitt>

<avsnitt>
<konsoll>
dhcpcd eth1
</konsoll>
</avsnitt>

<avsnitt>
Dersom du vil sette statisk informasjon kan du gjøre dette via kommandoen <kommando>ifconfig</kommando>.
</avsnitt>

<os2>Automatisk konfigurasjon</os2>
<avsnitt>
Som regel ønsker man ikke å være nødt til å utføre alle kommandoene ovenfor hver gang man skrur på maskinen og vil koble
til et trådløst nettverk. Derfor har forskjellige distribusjoner løsninger for å definere oppsett som raskt kan lastes, eventuelt
ved oppstart av maskinen. Disse systemene er vidt forskjellige fra distribusjon til distribusjon, og kan ikke gjennomgås her.
Mange distribusjoner har grafiske konfigurasjonsverktøy som kan bruke til oppsett, vel og merke etter at de korrekte driverne 
er lastet. Disse kan ofte aksesseres via menyer i grafiske skrivebordsmiljø. <kursiv>Redhat</kursiv> og <kursiv>Fedora</kursiv> har for eksmpel et verktøy som heter
<kommando>redhat-config-network</kommando>.
</avsnitt>

<os2>VPN</os2>
<avsnitt>
For å benytte ditt trådløse nettverkskort ved NTNU må du benytte <uthev>VPN</uthev>. For mer informasjon om dette henvises det til 
<infoweb aid="128">denne Infoweb-artikkelen om VPN</infoweb>.
</avsnitt>

</hoveddel>
</artikkel>