Dig/linux/wireless
Inhoud
Het opzetten van een wireless verbinding onder Linux
Dit is een tutorial/howto voor mensen die wireless willen internetten op hun laptop. In de basis installatie gaan we uit van het feit dat we maar met 1 netwerk gaan connecten, en dat deze niet veranderd, zoals bijvoorbeeld thuis, of alleen op kantoor.
In de gevorderde installatie gaan we ervoor zorgen dat we met onze laptop klakkeloos kunnen connecten thuis, op werk, etc etc zonder enige instellingen aan te passen. Dit is zeer handig :)
Je hebt geen kennis nodig van Linux/Unix in het algemeen, aangezien ik zal proberen om alle acties volledig uit te schrijven zodat jij lekker makkelijk kan copy/pasten en dus relatief simpel je netwerk configuratie kan aanpassen. Mocht je vragen hebben, vragen staat vrij, maar stel je vragen even in het Linux topic in DIG.
We gaan uiteraard geen unencrypted verbinding opzetten, maar gaan WPA gebruiken, met een pre-shared key. Wil je een ander soort beveiliging, dan moet je zelf even uitzoeken wat er anders is vergeleken dez
Deze HOWTO is geschreven voor Ubuntu, maar kunnen ook voor andere Linux smaken gebruikt worden, de bestandslocaties zullen echter verschillen.
Intro
Nou, je hebt je Linux machine ingericht, maar bent nog afhankelijk van de UTP kabel om te internetten en dat terwijl je wireless kan internetten. Hoe moet je dat doen? Er zijn meerdere manieren om dit te doen, in Ubuntu (het OS wat ik draai) heb je verschillende mogelijkheden, echter zijn sommige mogelijkheden alleen mogelijk indien je GNOME of KDE draait (deze hebben beide een eigen netwerk manager en zodra je switched van KDE naar GNOME zal je het allemaal opnieuw moeten instellen. Dit wil je eigenlijk niet (ik wil dit liever niet, het lijkt anders veels te veel op Windows ;)).
Dus.. We gaan een manier gebruiken waarbij je direct gebruik kan maken van je wireless netwerk zonder dat je een GUI hebt, dus als je problemen hebt met X kan je alsnog links gebruiken en met je textbrowser browsen en problemen oplossen, ook kan je klakkeloos switchen tussen de verschillende windows managers. Dus onder GNOME of KDE, xcfe, of Windowmaker het werkt allemaal.
Ik gebruik in de voorbeelden vi, dit mag je vervangen door jouw favoriete editor, gvim, gedit, nano, pico, emacs, etc. etc.
Nog 1 ding, je moet wel een werkende internet verbinding hebben tijdens de installatie, anders kunnen we de benodigde software niet installeren..
Voordat ik het vergeet, maak een backup van de bestanden die je aanpast, ik sta niet in voor fouten in deze HOWTO, en je bent shafted als je een fout hebt gemaakt, maar je kan de fout niet meer herstellen!! We maken allemaal fouten..
Basis installatie (WPA)
- Instaleer wpa_supplicant
$ sudo aptitude install wpasupplicant
- Activatie van wpa_supplicant
vi /etc/default/wpasupplicant
ENABLE=1
Je moet een netwerknaam (SSID) en wachtwoord (pre-shared key) bedenken voor dit netwerk. Elke naam will do, maar kies er eentje die logisch is (of die bij je past). In dit voorbeeld gaan we voor het SSID 'fokWifi' gebruiken, en het wachtwoord is 'SesamOpenU'. Dit wachtwoord en SSID moet je op zowel je Linux machine definieren als op je wireless router. Anders gaan we nooit een connectie kunnen opzetten. Dus, duik je router config in, en stel de SSID in en het bijbehorende wachtwoord. Ik ga dit niet uitleggen omdat alle routers een andere interface hebben, en ik niet bekend ben met alle varianten. Maar de manual van je router moet je haarfijn kunnen uitleggen hoe je dit moet doen.
Mocht je problemen hebben om een wachtwoord te genereren, kijk dan even op deze pagina: http://www.speedguide.net/wlan_key.php
- Creeer je SSID en wachtwoord voor wpa_supplicant
$ wpa_passphrase fokWifi SesamOpenU network={ ssid="fokWifi" #psk="SesamOpenU" psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 }
- Open je wpa_supplicant config file
sudo vi /etc/wpa_supplicant.conf
- Definieer je nieuwe netwerk
## Home WPA - TPIK network={ ssid="fokWifi" scan_ssid=1 proto=WPA key_mgmt=WPA-PSK pairwise=TKIP psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 priority=5 }
- Sla je wijzigingen op en sluit het bestand af.
Nu kunnen we je netwerkkaart gaan configgen
- Open de configfile
sudo vi /etc/network/interfaces
In dit voorbeeld ga ik ervanuit dat je wireless kaart eth1 is, dit kan anders zijn in jouw geval!! Afhankelijk van wat je wilt, kies een van de opties zoals ze hieronder staan, de post-up actie zorgt ervoor dat je wpa_supplicant start voordat je netwerkkaart "opgestart" wordt. De pre-down actie zorgt ervoor dat wpa_supplicant gestopt wordt voordat je netwerkkaart wordt "gedeactiveerd". In het voorbeeld wordt de -D ext parameters meegegeven aan het script. Dit kan verschillen per model/type interface/netwerkkaart. Zie de manpage van wpa_supplicant voor meer ondersteunde drivers (`man wpa_supplicant`).
Je kan kiezen voor een statisch IP adres, of voor een dynamisch IP adres, dit is afhankelijk van wat jij precies wilt. Ikzelf prefeer een statisch IP adres, maar op je werk kan het heel goed zijn dat je voor DHCP moet kiezen. Vraag dit na bij de netwerkbeheerder van je bedrijf.
# Statisch IP adres auto eth1 iface eth1 inet static # Het IP adres dat je wilt hebben, let op, afhankelijk van je router kan dit verschillen met wat ik hier aangeef. address 192.168.1.9 netmask 255.255.255.0 # Het gateway IP adres moet het IP adres van je router zijn, en dit is NIET je externe IP adres (die van je ISP, maar je interne IP adres) gateway 192.168.1.1 post-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B pre-down pgrep wpa_supplicant | xargs kill -9 # Dynamisch IP adres (DHCP) auto eth1 iface eth1 inet dhcp post-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B pre-down pgrep wpa_supplicant | xargs kill -9
- Sla de wijzigingen op en sluit de file.
We zijn nu klaar met de basis installatie, ja kan heel makkelijk controleren of alles nu naar wens werkt door hetvolgende uit te voeren:
sudo /etc/init.d/networking restart
Je kan ook je computer rebooten om het te testen, wat je makkelijker vind :)
- Done!
Dat was vrij simpel, of niet?
Basic installatie (WEP)
WEP is een minder veilige vorm om je netwerk te beveiligen, maar aangezien sommige mensen nog wel WEP gebruiken zal ik een klein stukje besteden hieraan. Hoewel het voor het overgrote deel gewoon gelijk is aan WPA, zal je WEP netwerk een configuratie zoals deze hebben. De key is hierbij niet encrypted!!
# Single key 128bit WEP network={ ssid="fokWifi" key_mgmt=NONE wep_key0=ABCDEF01234567890123456789 wep_tx_keyidx=0 priority=5 }
Noot: Deze config is nog niet getest, en dient nog met een korrel zout genuttigd worden.
Geavanceerde installatie (WPA)
Voordat je met de geavanceerde installatie begint, zou ik het prettig vinden als je de basisinstallatie al hebt uitgevoerd, aangezien we vanuit dit uitgangspunt gaan beginnen :) Indien je dit nog niet gedaan hebt, page up, page up..
Let overigens op om niet gelijk alle aanpassingen door te voeren, je hebt wellicht nog je oude config nodig om bepaalde testcases te definieren.
- Installeer guessnet en ifplugd
sudo aptitude install guessnet ifplugd
- Maak een init.d script aan om wpa_supplicant te stoppen en te starten
sudo vi /etc/init.d/wpa.sh
- En copy/paste dit in de file:
SELF=`basename $0` WPA=wpa_supplicant PROGRAM=/sbin/${WPA} CONF=/etc/${WPA}.conf INTERFACE=eth1 #DRIVER=ipw2200 # Intel Interfaces DRIVER=wext # default linux driver DAEMONMODE="-B" # debug mode #DAEMONMODE="-ddd" OPTIONS="-c $CONF -i $INTERFACE -w -D $DRIVER $DAEMONMODE" case $1 in start) eval $PROGRAM $OPTIONS exit $? ;; stop) eval pgrep $WPA | xargs kill -9 exit $? ;; *) echo "Usage: $SELF <start|stop>" exit 2 ;; esac
- Zorg ervoor dat je dit bestand kan executen
sudo chmod +x /etc/init.d/wpa.sh
Nu moeten we er ook nog voor zorgen dat wpa_supplicant daadwerkelijk gestopt en gestart wordt als we de computer aan of uit gaan zetten.
# Voor het opstarten: sudo ln -s /etc/rc2.d/S19wpa /etc/init.d/wpa.sh # Voor het aflsuiten: sudo ln -s /etc/rc6.d/S21wpa /etc/init.d/wpa.sh
En nu wordt het tijd dat we je netwerken gaan configureren
sudi vi /etc/network/interfaces
Nu passen we het bestand /etc/network/interfaces aan om de verschillende netwerken te configureren, en dit is zoals hij er bij mij uitziet, dit is dus de gehele file. Zoals je ziet verschilt het met de basisinstallatie..
auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 ## Setup a comlicated thing # Our various networks, both work and home mapping eth0 script guessnet-ifupdown map default: none map verbose: true map debug: true map work-fixed map home-fixed mapping eth1 script guessnet-ifupdown map default: none map verbose: true map debug: true map work-wifi map home-wifi iface work-fixed inet dhcp test peer address 194.134.32.1 mac 00:00:0C:07:AC:01 source 194.134.32.247 metric 1 iface work-wifi inet dhcp test wireless essid Werk Wireless metric 2 iface home-wifi inet static test wireless essid fokWifi address 192.168.1.109 netmask 255.255.255.0 gateway 192.168.1.1 metric 1 iface home-fixed inet static test peer 192.168.1.1 mac 00:03:c9:73:20:41 source 192.168.1.119 address 192.168.1.119 netmask 255.255.255.0 gateway 192.168.1.1 metric 2
Wow, wat betekend dit allemaal? Ten eerste hebben we een mapping gemaakt per interface (zowel onze fixed als wireless interface), zodat we onze laptop op werk met een UTP kabel kunnen connecten, en ook wireless, hetzelfde geldt voor de thuissituatie.
Voor de interface work-fixed en home-fixed checken we of we kunnen communiceren met de default gateway. Je hebt hiervoor het MAC adres nodig van je gateway, dit kan je achterhalen door het volgende uit te voeren:
$ arp -a 32-LAN.fw1-asd2.nl.euro.net (194.134.32.1) at 00:00:0C:07:AC:01 [ether] on eth2
Mijn default gateway op werk is dus 194.134.32.1 heeft als MAC address 00:00:0C:07:AC:01, mijn IP adres is 194.134.32.247, en dus kunnen we nu de test definieren:
test peer address 194.134.32.1 mac 00:00:0C:07:AC:01 source 194.134.32.247
Je hoeft overigens niet altijd source IP te definieren, maar dit kan in sommige gevallen noodzakelijk zijn. Voor de compleetheid heb ik deze statements wel toegevoegd (op m'n werk moet ik bijvoorbeeld wel de source gedefinieerd hebben anders faalt mijn test).
Voor wireless netwerken is het makkelijker, we kunnen gewoon checken of het SSID bestaat:
test wireless essid Werk Wireless
Let op, dit SSID heeft spaties, en je hoeft dit niet met quotes (" of ') te noteren, maar gewoon zoals hierboven beschreven staat. Ik moet er wel bijzeggen dat de wireless test nog niet helemaal geimplementeerd is, your milage may vary...
We voeren gelijksoortige tests uit voor de situatie thuis. Voor meer informatie over de verschillende tests die je kan uitvoeren, raad ik je aan om in de man page van guessnet te kijken.
man guessnet
De oplettenden onder ons zien ook dat ik een metric heb gedefinieerd. Een metric geeft aan welke interface voorkeur heeft over andere interfaces. In ISP land kan je bijvoorbeeld hebben dat bepaalde lijnen duurder zijn voor gebruik en dan wordt de metric voor die interface/lijn omhoog geschroefd, zodat men eerst verkeer over goedkope lijn zal laten lopen, tenzij deze uitvalt en dan pas zal het verkeer over de duurdere lijn gerouteerd worden. Indien we zowel met fixed als wireless geconnect zijn kunnen we problemen krijgen met de routering, en daarom geef ik aan welke interface ten alle tijde gebruikt moet worden indien we op zowel fixed als wireless aangesloten zijn. Je mag zelf kiezen wat de voorkeur heeft, zolang er maar 1 de voorkeur heeft over de ander, dit is in dit voorbeeld de interface waarvan de metric het kleinst is. Als je nooit van plan bent om je PC tegelijkertijd op het vaste netwerk als op het wireless netwerk te plaatsen kan je dit weglaten, het hoeft niet! Je mag zelf kiezen of je dit wel of niet definieert.
- Testen of alles werkt!!
/etc/init.d/networking stop /etc/init.d/wpa.sh stop /etc/init.d/ifplugd stop
Als je nu ifconfig intikt, heb je alleen een 'lo' interface die actief is, de overige interfaces zijn niet actief.
$ ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:87 (87.0 b) TX bytes:87 (87.0 b)
/etc/init.d/ifplugd start /etc/init.d/wpa.sh start /etc/init.d/networking start
Nu kan je ifconfig intikken en dan moet je meer interfaces actief vinden:
$ ifconfig eth0 Link encap:Ethernet HWaddr 00:12:79:C2:BF:14 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:11 eth1 Link encap:Ethernet HWaddr 00:12:F0:05:8B:B3 inet addr:192.168.1.109 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::212:f0ff:fe05:8bb3/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3 errors:47 dropped:47 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:264007698 (251.7 MiB) TX bytes:27245554 (25.9 MiB) Interrupt:11 Memory:90080000-90080fff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0 TX packets:1 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:87 (87.0 b) TX bytes:87 (87.0 b)
- Done!