Dig/linux/wireless: verschil tussen versies
(→Meer informatie) |
|||
(22 tussenliggende versies door 6 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
− | = Het opzetten van een wireless verbinding onder Linux = | + | = HOWTO: Het opzetten van een wireless (draadloze) verbinding onder Linux = |
− | Dit is een tutorial/howto voor mensen die | + | Dit is een tutorial/howto voor mensen die draadloos willen internetten op hun laptop. In de basisinstallatie gaan we uit van de situatie dat we maar met één netwerk verbinding maken, en dat dit netwerk niet verandert, zoals bijvoorbeeld thuis, of alleen op kantoor. |
− | In de gevorderde installatie | + | In de gevorderde installatie zorgen we ervoor dat we onze laptop moeiteloos kunnen verbinden met de netwerken thuis, op werk, 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 | + | 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 kunt copy/pasten en dus relatief simpel je netwerk configuratie kunt aanpassen. |
Mocht je vragen hebben, vragen staat vrij, maar stel je vragen even in het Linux topic in DIG. | 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 | + | We gaan uiteraard geen onversleutelde (unencrypted) verbinding opzetten, maar zullen WPA gebruiken, met een pre-shared key. Wil je een ander soort beveiliging, dan moet je zelf even uitzoeken wat er anders is vergeleken met deze handleiding. Voor WEP is de installatie vrijwel hetzelfde, je kan hiervoor een paar stappen overslaan. |
− | Deze HOWTO is geschreven voor Ubuntu, maar | + | Deze HOWTO is geschreven voor Ubuntu (Debian), maar andere Linux distributies kunnen op dezelfde manier geconfigureerd worden, echter zullen de bestandslocaties verschillen. |
== Intro == | == Intro == | ||
− | Nou, je hebt je Linux machine ingericht, maar bent nog afhankelijk van de UTP kabel om te internetten en dat terwijl je wireless | + | Nou, je hebt je Linux-machine ingericht, maar bent nog afhankelijk van de UTP kabel om te internetten en dat terwijl je wireless kunt internetten. Hoe moet je dat doen? |
− | Er zijn meerdere manieren om dit te doen, in Ubuntu (het OS | + | Er zijn meerdere manieren om dit te doen, in Ubuntu (het OS dat ik draai) heb je verschillende mogelijkheden, echter sommige mogelijkheden zijn alleen mogelijk indien je GNOME of KDE draait (deze hebben beide een eigen netwerkmanager en zodra je overstapt van KDE naar GNOME zul je het allemaal opnieuw moeten instellen. Dit wil je eigenlijk niet (ik wil dit liever niet, het lijkt anders te veel op Windows ;)). |
− | Dus.. We gaan een manier gebruiken waarbij je direct gebruik | + | Dus.. We gaan een manier gebruiken waarbij je direct gebruik kunt maken van je draadloze netwerk zonder dat je een GUI hebt, dus als je problemen hebt met X kun je alsnog een tekstbrowser zoals links of w3m gebruiken om te browsen en problemen op te lossen, ook kun je probleemloos schakelen tussen de verschillende windowmanagers. Dus onder GNOME of KDE, XFCE, 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. | + | Ik gebruik in de voorbeelden vi als editor, dit mag je vervangen door jouw favoriete editor, gvim, gedit, nano, pico, emacs, etc. etc. |
− | Nog | + | Nog één ding, je moet wel een werkende internetverbinding hebben tijdens de installatie, anders kunnen we de benodigde software niet installeren. Gebruik hiervoor dus nog je UTP-kabel. |
− | Voordat ik het vergeet, maak een | + | Voordat ik het vergeet, maak een back-up van de bestanden die je aanpast, ik sta niet in voor fouten in deze HOWTO, en je bent in de aap gelogeerd als je een fout hebt gemaakt, maar je de fout niet meer kunt herstellen! We maken allemaal fouten. Het makkelijkst is een kopietje te maken van het bestand dat je gaat aanpassen met daarachter .bak geplakt, of eventueel .bak20080721 (met datum bv). |
− | == | + | == Basisinstallatie == |
* Instaleer wpa_supplicant | * Instaleer wpa_supplicant | ||
Regel 32: | Regel 32: | ||
</pre> | </pre> | ||
− | * Activatie van wpa_supplicant | + | * Activatie van wpa_supplicant |
<pre> | <pre> | ||
− | vi /etc/default/wpasupplicant | + | sudo vi /etc/default/wpasupplicant |
</pre> | </pre> | ||
Regel 41: | Regel 41: | ||
</pre> | </pre> | ||
− | + | Een kleine opmerking, ik heb opgemerkt dat ikzelf geen /etc/default/wpasupplicant meer heb, je kan deze stap dus overslaan. Mocht je wpa_supplicant niet kunnen opstarten, dan adviseer ik je om deze stap alsnog uit te voeren. Indien je problemen blijft ondervinden, de Linux guru's van DIG zijn behulpzaam. | |
− | * | + | Je moet een netwerknaam (SSID) en wachtwoord (pre-shared key) bedenken voor dit netwerk. Elke naam is geschikt, 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 definiëren als op je draadloze router. Anders zullen we nooit een verbinding kunnen opzetten. Dus, duik je router-configuratie in, en stel de SSID en het bijbehorende wachtwoord in. Ik ga dit niet uitleggen omdat alle routers een andere interface hebben, en ik niet bekend ben met alle varianten. Maar de handleiding van je router moet je haarfijn kunnen uitleggen hoe je dit moet doen. |
+ | |||
+ | Mocht je problemen hebben om een wachtwoord te bedenken, kijk dan even op deze pagina: http://www.speedguide.net/wlan_key.php | ||
+ | |||
+ | Als je gebruik maakt van WEP, dan kan je deze stap overslaan. | ||
+ | |||
+ | * Creëer je SSID en wachtwoord voor wpa_supplicant | ||
<pre> | <pre> | ||
Regel 54: | Regel 60: | ||
</pre> | </pre> | ||
− | * Open je wpa_supplicant | + | * Open je wpa_supplicant configuratiebestand |
<pre> | <pre> | ||
sudo vi /etc/wpa_supplicant.conf | sudo vi /etc/wpa_supplicant.conf | ||
Regel 60: | Regel 66: | ||
* Definieer je nieuwe netwerk | * Definieer je nieuwe netwerk | ||
+ | |||
<pre> | <pre> | ||
− | ## | + | # |
+ | # Please see /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz | ||
+ | # for more complete configuration parameters. | ||
+ | # | ||
+ | ctrl_interface=/var/run/wpa_supplicant | ||
+ | ctrl_interface_group=0 | ||
+ | |||
+ | eapol_version=2 | ||
+ | ap_scan=1 | ||
+ | fast_reauth=1 | ||
+ | |||
+ | ### Associate with any open access point | ||
+ | ### Scans/ESSID changes can be done with wpa_cli | ||
+ | network={ | ||
+ | key_mgmt=NONE | ||
+ | priority=1 | ||
+ | } | ||
+ | |||
+ | # Als je gebruik maakt van WEP | ||
+ | network={ | ||
+ | ssid="fokWifi" | ||
+ | key_mgmt=NONE | ||
+ | wep_key0="je_web_key" | ||
+ | wep_tx_keyidx=0 | ||
+ | priority=5 | ||
+ | } | ||
+ | |||
+ | # Of WPA. | ||
network={ | network={ | ||
ssid="fokWifi" | ssid="fokWifi" | ||
scan_ssid=1 | scan_ssid=1 | ||
− | |||
− | |||
− | |||
psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 | psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 | ||
priority=5 | priority=5 | ||
Regel 73: | Regel 104: | ||
</pre> | </pre> | ||
− | + | Let goed op! Als je WPA gebruikt, comment dan je WEP netwerk uit (dmv van # aan het begin van elke regel te zetten). Als je WEP gebruikt, dan doe moet je WPA uitcommenten. Huh? Zie je de eerste 4 regels in dit bestand, dat zijn de zogenaamde comments. Deze tekst wordt niet "gelezen" door de applicatie, en je kan dus zo commentaar plaatsen bij je configuratie.. | |
− | + | Voor WEP is het van belang dat je de juiste key index gebruikt, dus als je router index 1 gebruikt, zorg er dan voor dat je dit in je wpa_supplicant.conf bestand hebt staan: | |
− | * Open | + | <pre> |
+ | wep_key1="je_web_key" | ||
+ | wep_tx_keyidx=1 | ||
+ | </pre> | ||
+ | |||
+ | De priority geeft aan welk netwerk prioriteit heeft, als je 2 netwerken hebt waarmee je kan verbinden, en beide zijn gedefinieerd in bovenstaand configuratiebestand, dan zal wpa_supplicant proberen te verbinden met het netwerk welke de hoogste pioriteit heeft. | ||
+ | |||
+ | * Sla je wijzigingen op en sluit het bestand. | ||
+ | |||
+ | Nu kunnen we je netwerkkaart configureren | ||
+ | |||
+ | * Open het configuratiebestand | ||
<pre> | <pre> | ||
sudo vi /etc/network/interfaces | sudo vi /etc/network/interfaces | ||
</pre> | </pre> | ||
− | In dit voorbeeld ga ik | + | In dit voorbeeld ga ik ervan uit dat je draadloze 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 | + | Afhankelijk van wat je wilt, kies een van de opties zoals ze hieronder staan, de pre-up actie zorgt ervoor dat je wpa_supplicant start voordat je netwerkkaart "opgestart" wordt. De post-down actie zorgt ervoor dat wpa_supplicant gestopt wordt nadat 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 ook gebruik maken van het wpa.sh script (zie hieronder bij Geavanceerde installatie), dan moet je pre-up en post-down acties veranderen in prespectievelijk: `/etc/init.d/wpa.sh start' en `/etc/init.d/wpa.sh stop' |
− | Je | + | Je kunt kiezen voor een statisch IP adres, of voor een dynamisch IP adres, dit is afhankelijk van wat jij precies wilt. Ikzelf prefereer 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. |
<pre> | <pre> | ||
Regel 96: | Regel 138: | ||
# 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) | # 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 | gateway 192.168.1.1 | ||
− | + | # Voor Ubuntu 8.10 en hoger moet je de -w weglaten | |
− | + | pre-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B | |
+ | post-down pgrep wpa_supplicant | xargs kill -9 | ||
# Dynamisch IP adres (DHCP) | # Dynamisch IP adres (DHCP) | ||
auto eth1 | auto eth1 | ||
iface eth1 inet dhcp | iface eth1 inet dhcp | ||
− | + | # Voor Ubuntu 8.10 en hoger moet je de -w weglaten | |
− | + | pre-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B | |
+ | post-down pgrep wpa_supplicant | xargs kill -9 | ||
</pre> | </pre> | ||
− | * Sla de wijzigingen op en sluit | + | * Sla de wijzigingen op en sluit het bestand. |
− | We zijn nu klaar met de | + | We zijn nu klaar met de basisinstallatie, je kunt heel makkelijk controleren of alles nu naar wens werkt door het volgende uit te voeren: |
<pre> | <pre> | ||
Regel 114: | Regel 158: | ||
</pre> | </pre> | ||
− | Je | + | Je kunt ook je computer herstarten om het te testen, wat je makkelijker vindt :) |
* Done! | * Done! | ||
Regel 120: | Regel 164: | ||
Dat was vrij simpel, of niet? | Dat was vrij simpel, of niet? | ||
− | == | + | == Geavanceerde installatie == |
− | + | Voordat je met de geavanceerde installatie begint, zou ik het prettig vinden als je de basisinstallatie al hebt uitgevoerd, aangezien we vanuit dit uitgangspunt zullen 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 configuratie nodig om bepaalde testcases te definiëren. | ||
+ | |||
+ | * Installeer guessnet en ifplugd | ||
<pre> | <pre> | ||
− | + | sudo aptitude install guessnet ifplugd | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | + | * Configureer ifplugd | |
− | + | <pre> | |
− | + | sudo vi /etc/default/ifplugd | |
− | + | </pre> | |
− | |||
− | |||
− | + | En definieer nu welke interfaces hotplug moet monitoren/beheren en pas de argumenten aan (verwijder de -q): | |
<pre> | <pre> | ||
− | + | INTERFACES="eth0 eth1" | |
+ | #ARGS="-q -f -u0 -d10 -w -I" | ||
+ | ARGS="-f -u0 -d10 -w -I" | ||
</pre> | </pre> | ||
Regel 154: | Regel 194: | ||
</pre> | </pre> | ||
− | * En copy/paste dit in | + | * En copy/paste dit in het bestand: |
<pre> | <pre> | ||
+ | #!/bin/bash | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: wpa | ||
+ | # Required-Start: $network $syslog $local_fs | ||
+ | # Required-Stop: $network $syslog $local_fs | ||
+ | # Default-Start: 2 3 4 5 | ||
+ | # Default-Stop: 0 1 6 | ||
+ | # Short-Description: Start/stop script for wpa supplicant | ||
+ | # Description: Custom start/stop script for wpa_supplicant. | ||
+ | ### END INIT INFO | ||
+ | |||
SELF=`basename $0` | SELF=`basename $0` | ||
WPA=wpa_supplicant | WPA=wpa_supplicant | ||
PROGRAM=/sbin/${WPA} | PROGRAM=/sbin/${WPA} | ||
CONF=/etc/${WPA}.conf | CONF=/etc/${WPA}.conf | ||
− | INTERFACE= | + | INTERFACE=wlan0 |
− | + | DRIVER=wext | |
− | DRIVER= | + | DAEMONMODE="-B" |
− | + | LOGFILE=/var/log/$WPA.log | |
− | # | + | |
− | # | + | function start() { |
− | OPTIONS= | + | |
+ | # TODO: Support multiple drivers/interfaces | ||
+ | OPTIONS="-c $CONF -i $INTERFACE -D $DRIVER $DAEMONMODE" | ||
+ | |||
+ | # Debian Lenny | ||
+ | OPTIONS="$OPTIONS -W" && LOGFILE="" | ||
+ | |||
+ | ## You can remove this if you are running 8.10 and up. | ||
+ | # Ubuntu 8.10 and up doesn't need the -w anymore.. | ||
+ | # And the logfile option is not valid on 8.04 and lower | ||
+ | #local ver=$(lsb_release -sr | sed -e 's/\.//g'); | ||
+ | #[ $ver -lt 810 ] && OPTIONS="$OPTIONS -w" && LOGFILE="" | ||
+ | ## | ||
+ | |||
+ | # Log to a file | ||
+ | [ -n "$LOGFILE" ] && OPTIONS="$OPTIONS -f $LOGFILE" | ||
+ | |||
+ | echo " * Starting wpa supplicant" | ||
+ | eval $PROGRAM $OPTIONS | ||
+ | } | ||
+ | |||
+ | function stop() { | ||
+ | echo " * Stopping wpa supplicant" | ||
+ | local pid=$(pgrep -f $PROGRAM) | ||
+ | [ -n "$pid" ] && kill $pid | ||
+ | } | ||
+ | |||
+ | function debug() { | ||
+ | stop | ||
+ | DAEMONMODE="-ddd" | ||
+ | start | ||
+ | } | ||
+ | |||
+ | function restart() { | ||
+ | stop | ||
+ | sleep 2 | ||
+ | start | ||
+ | } | ||
+ | |||
+ | function status() { | ||
+ | pgrep -lf $PROGRAM | ||
+ | } | ||
+ | |||
+ | function usage() { | ||
+ | echo "Usage: $SELF <start|stop|status|debug>" | ||
+ | return 2 | ||
+ | } | ||
case $1 in | case $1 in | ||
− | + | start|stop|debug|status) $1 ;; | |
− | + | *) usage ;; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
esac | esac | ||
</pre> | </pre> | ||
− | * Zorg ervoor dat je dit bestand kan | + | * Zorg ervoor dat je dit bestand kan uitvoeren |
<pre> | <pre> | ||
sudo chmod +x /etc/init.d/wpa.sh | sudo chmod +x /etc/init.d/wpa.sh | ||
Regel 192: | Regel 279: | ||
<pre> | <pre> | ||
− | + | sudo update-rc.d -f wpa.sh defaults | |
− | sudo | ||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
Regel 204: | Regel 287: | ||
</pre> | </pre> | ||
− | 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 | + | 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 het gehele bestand. Zoals je ziet verschilt het met de basisinstallatie. |
<pre> | <pre> | ||
Regel 253: | Regel 336: | ||
</pre> | </pre> | ||
− | Wow, wat | + | Wow, wat betekent dit allemaal? |
− | Ten eerste hebben we een mapping gemaakt per interface (zowel onze | + | Ten eerste hebben we een mapping gemaakt per interface (zowel onze vaste als draadloze interface), zodat we onze laptop op werk met een UTP-kabel kunnen verbinden, 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 | + | 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 kun je achterhalen door het volgende uit te voeren: |
<pre> | <pre> | ||
Regel 263: | Regel 346: | ||
</pre> | </pre> | ||
− | 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 | + | 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 definiëren: |
<pre> | <pre> | ||
Regel 269: | Regel 352: | ||
</pre> | </pre> | ||
− | Je hoeft overigens niet altijd source IP te | + | Je hoeft overigens niet altijd source IP te definiëren, maar dit kan in sommige gevallen noodzakelijk zijn. Voor de volledigheid heb ik deze statements wel toegevoegd (op m'n werk moet ik bijvoorbeeld wel de source gedefinieerd hebben anders faalt mijn test). |
− | Voor | + | Voor draadloze netwerken is het makkelijker, we kunnen gewoon checken of de SSID bestaat: |
<pre> | <pre> | ||
test wireless essid Werk Wireless | test wireless essid Werk Wireless | ||
</pre> | </pre> | ||
− | Let op, | + | Let op, deze SSID heeft spaties, en je hoeft dit niet met aanhalingstekens (" of ') te noteren, maar gewoon zoals hierboven beschreven staat. Ik moet er wel bij zeggen dat de draadloze test nog niet helemaal geïmplementeerd is, het kan meer of minder succesvol uitpakken. |
We voeren gelijksoortige tests uit voor de situatie thuis. | We voeren gelijksoortige tests uit voor de situatie thuis. | ||
− | Voor meer informatie over de verschillende tests die je | + | Voor meer informatie over de verschillende tests die je kunt uitvoeren, raad ik je aan om in de man page van guessnet te kijken. |
<pre> | <pre> | ||
man guessnet | man guessnet | ||
</pre> | </pre> | ||
− | De oplettenden onder ons zien ook dat ik een | + | De oplettenden onder ons zien ook dat ik een �metric� heb gedefinieerd. Een metric geeft aan welke interface voorkeur heeft boven andere interfaces. In ISP-land kun 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 | + | Indien we zowel met fixed als wireless verbonden zijn kunnen we problemen krijgen met de routering, en daarom geef ik aan welke interface te allen tijde gebruikt moet worden indien we op zowel fixed als wireless aangesloten zijn. Je mag zelf kiezen wat de voorkeur heeft, zolang er maar één de voorkeur heeft boven 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 kun je dit weglaten, het hoeft niet! Je mag zelf kiezen of je dit wel of niet definieert. |
+ | |||
+ | * ifplugd configureren | ||
+ | |||
+ | Pas de file /etc/default/ifplugd aan. | ||
− | * Testen of alles werkt | + | <pre> |
+ | # This file may be changed either manually or by running dpkg-reconfigure. | ||
+ | # | ||
+ | # N.B.: dpkg-reconfigure deletes everything from this file except for | ||
+ | # the assignments to variables INTERFACES, HOTPLUG_INTERFACES, ARGS and | ||
+ | # SUSPEND_ACTION. When run it uses the current values of those variables | ||
+ | # as their default values, thus preserving the administrator's changes. | ||
+ | # | ||
+ | # This file is sourced by both the init script /etc/init.d/ifplugd and | ||
+ | # the udev script /lib/udev/ifplugd.agent to give default values. | ||
+ | # The init script starts ifplugd for all interfaces listed in | ||
+ | # INTERFACES, and the udev script starts ifplugd for all interfaces | ||
+ | # listed in HOTPLUG_INTERFACES. The special value all starts one | ||
+ | # ifplugd for all interfaces being present. | ||
+ | INTERFACES="eth0 eth1" | ||
+ | HOTPLUG_INTERFACES="" | ||
+ | #ARGS="-q -f -u0 -d10 -w -I" | ||
+ | ARGS="-f -u0 -d10 -w -I" | ||
+ | SUSPEND_ACTION="stop" | ||
+ | </pre> | ||
+ | |||
+ | * Testen of alles werkt! | ||
<pre> | <pre> | ||
/etc/init.d/networking stop | /etc/init.d/networking stop | ||
Regel 313: | Regel 421: | ||
</pre> | </pre> | ||
− | Nu | + | Nu kun je ifconfig intikken en dan moet je meer interfaces die actief zijn vinden: |
<pre> | <pre> | ||
Regel 345: | Regel 453: | ||
</pre> | </pre> | ||
− | * | + | * Klaar! |
= Meer informatie = | = Meer informatie = | ||
Regel 352: | Regel 460: | ||
* http://www.aaron-spettl.de/ubuntu/dynamische-netzwerkkonfiguration.php | * http://www.aaron-spettl.de/ubuntu/dynamische-netzwerkkonfiguration.php | ||
* http://vollink.com/gary/deb_wifi.html | * http://vollink.com/gary/deb_wifi.html | ||
+ | * https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic (Deze HOWTO in het Engels en iets uitgebreider). | ||
+ | |||
+ | [[categorie:DIG]] | ||
+ | [[categorie:Linux]] | ||
+ | [[categorie:HOWTO]] | ||
+ | [[categorie:Wifi]] | ||
+ | [[categorie:Wireless]] | ||
+ | [[categorie:Netwerken]] |
Huidige versie van 13 okt 2009 om 20:38
Inhoud
HOWTO: Het opzetten van een wireless (draadloze) verbinding onder Linux[bewerken]
Dit is een tutorial/howto voor mensen die draadloos willen internetten op hun laptop. In de basisinstallatie gaan we uit van de situatie dat we maar met één netwerk verbinding maken, en dat dit netwerk niet verandert, zoals bijvoorbeeld thuis, of alleen op kantoor.
In de gevorderde installatie zorgen we ervoor dat we onze laptop moeiteloos kunnen verbinden met de netwerken thuis, op werk, 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 kunt copy/pasten en dus relatief simpel je netwerk configuratie kunt aanpassen. Mocht je vragen hebben, vragen staat vrij, maar stel je vragen even in het Linux topic in DIG.
We gaan uiteraard geen onversleutelde (unencrypted) verbinding opzetten, maar zullen WPA gebruiken, met een pre-shared key. Wil je een ander soort beveiliging, dan moet je zelf even uitzoeken wat er anders is vergeleken met deze handleiding. Voor WEP is de installatie vrijwel hetzelfde, je kan hiervoor een paar stappen overslaan.
Deze HOWTO is geschreven voor Ubuntu (Debian), maar andere Linux distributies kunnen op dezelfde manier geconfigureerd worden, echter zullen de bestandslocaties verschillen.
Intro[bewerken]
Nou, je hebt je Linux-machine ingericht, maar bent nog afhankelijk van de UTP kabel om te internetten en dat terwijl je wireless kunt internetten. Hoe moet je dat doen? Er zijn meerdere manieren om dit te doen, in Ubuntu (het OS dat ik draai) heb je verschillende mogelijkheden, echter sommige mogelijkheden zijn alleen mogelijk indien je GNOME of KDE draait (deze hebben beide een eigen netwerkmanager en zodra je overstapt van KDE naar GNOME zul je het allemaal opnieuw moeten instellen. Dit wil je eigenlijk niet (ik wil dit liever niet, het lijkt anders te veel op Windows ;)).
Dus.. We gaan een manier gebruiken waarbij je direct gebruik kunt maken van je draadloze netwerk zonder dat je een GUI hebt, dus als je problemen hebt met X kun je alsnog een tekstbrowser zoals links of w3m gebruiken om te browsen en problemen op te lossen, ook kun je probleemloos schakelen tussen de verschillende windowmanagers. Dus onder GNOME of KDE, XFCE, of Windowmaker het werkt allemaal.
Ik gebruik in de voorbeelden vi als editor, dit mag je vervangen door jouw favoriete editor, gvim, gedit, nano, pico, emacs, etc. etc.
Nog één ding, je moet wel een werkende internetverbinding hebben tijdens de installatie, anders kunnen we de benodigde software niet installeren. Gebruik hiervoor dus nog je UTP-kabel.
Voordat ik het vergeet, maak een back-up van de bestanden die je aanpast, ik sta niet in voor fouten in deze HOWTO, en je bent in de aap gelogeerd als je een fout hebt gemaakt, maar je de fout niet meer kunt herstellen! We maken allemaal fouten. Het makkelijkst is een kopietje te maken van het bestand dat je gaat aanpassen met daarachter .bak geplakt, of eventueel .bak20080721 (met datum bv).
Basisinstallatie[bewerken]
- Instaleer wpa_supplicant
$ sudo aptitude install wpasupplicant
- Activatie van wpa_supplicant
sudo vi /etc/default/wpasupplicant
ENABLE=1
Een kleine opmerking, ik heb opgemerkt dat ikzelf geen /etc/default/wpasupplicant meer heb, je kan deze stap dus overslaan. Mocht je wpa_supplicant niet kunnen opstarten, dan adviseer ik je om deze stap alsnog uit te voeren. Indien je problemen blijft ondervinden, de Linux guru's van DIG zijn behulpzaam.
Je moet een netwerknaam (SSID) en wachtwoord (pre-shared key) bedenken voor dit netwerk. Elke naam is geschikt, 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 definiëren als op je draadloze router. Anders zullen we nooit een verbinding kunnen opzetten. Dus, duik je router-configuratie in, en stel de SSID en het bijbehorende wachtwoord in. Ik ga dit niet uitleggen omdat alle routers een andere interface hebben, en ik niet bekend ben met alle varianten. Maar de handleiding van je router moet je haarfijn kunnen uitleggen hoe je dit moet doen.
Mocht je problemen hebben om een wachtwoord te bedenken, kijk dan even op deze pagina: http://www.speedguide.net/wlan_key.php
Als je gebruik maakt van WEP, dan kan je deze stap overslaan.
- Creëer je SSID en wachtwoord voor wpa_supplicant
$ wpa_passphrase fokWifi SesamOpenU network={ ssid="fokWifi" #psk="SesamOpenU" psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 }
- Open je wpa_supplicant configuratiebestand
sudo vi /etc/wpa_supplicant.conf
- Definieer je nieuwe netwerk
# # Please see /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz # for more complete configuration parameters. # ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 eapol_version=2 ap_scan=1 fast_reauth=1 ### Associate with any open access point ### Scans/ESSID changes can be done with wpa_cli network={ key_mgmt=NONE priority=1 } # Als je gebruik maakt van WEP network={ ssid="fokWifi" key_mgmt=NONE wep_key0="je_web_key" wep_tx_keyidx=0 priority=5 } # Of WPA. network={ ssid="fokWifi" scan_ssid=1 psk=ede74f5a184bebee6c291d51a67f9e4c21672515d50beb58108ea6796c135aa6 priority=5 }
Let goed op! Als je WPA gebruikt, comment dan je WEP netwerk uit (dmv van # aan het begin van elke regel te zetten). Als je WEP gebruikt, dan doe moet je WPA uitcommenten. Huh? Zie je de eerste 4 regels in dit bestand, dat zijn de zogenaamde comments. Deze tekst wordt niet "gelezen" door de applicatie, en je kan dus zo commentaar plaatsen bij je configuratie..
Voor WEP is het van belang dat je de juiste key index gebruikt, dus als je router index 1 gebruikt, zorg er dan voor dat je dit in je wpa_supplicant.conf bestand hebt staan:
wep_key1="je_web_key" wep_tx_keyidx=1
De priority geeft aan welk netwerk prioriteit heeft, als je 2 netwerken hebt waarmee je kan verbinden, en beide zijn gedefinieerd in bovenstaand configuratiebestand, dan zal wpa_supplicant proberen te verbinden met het netwerk welke de hoogste pioriteit heeft.
- Sla je wijzigingen op en sluit het bestand.
Nu kunnen we je netwerkkaart configureren
- Open het configuratiebestand
sudo vi /etc/network/interfaces
In dit voorbeeld ga ik ervan uit dat je draadloze 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 pre-up actie zorgt ervoor dat je wpa_supplicant start voordat je netwerkkaart "opgestart" wordt. De post-down actie zorgt ervoor dat wpa_supplicant gestopt wordt nadat 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 ook gebruik maken van het wpa.sh script (zie hieronder bij Geavanceerde installatie), dan moet je pre-up en post-down acties veranderen in prespectievelijk: `/etc/init.d/wpa.sh start' en `/etc/init.d/wpa.sh stop'
Je kunt kiezen voor een statisch IP adres, of voor een dynamisch IP adres, dit is afhankelijk van wat jij precies wilt. Ikzelf prefereer 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 # Voor Ubuntu 8.10 en hoger moet je de -w weglaten pre-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B post-down pgrep wpa_supplicant | xargs kill -9 # Dynamisch IP adres (DHCP) auto eth1 iface eth1 inet dhcp # Voor Ubuntu 8.10 en hoger moet je de -w weglaten pre-up /sbin/wpa_supplicant -c /etc/wpa_supplicant.conf -D wext -i eth1 -w -B post-down pgrep wpa_supplicant | xargs kill -9
- Sla de wijzigingen op en sluit het bestand.
We zijn nu klaar met de basisinstallatie, je kunt heel makkelijk controleren of alles nu naar wens werkt door het volgende uit te voeren:
sudo /etc/init.d/networking restart
Je kunt ook je computer herstarten om het te testen, wat je makkelijker vindt :)
- Done!
Dat was vrij simpel, of niet?
Geavanceerde installatie[bewerken]
Voordat je met de geavanceerde installatie begint, zou ik het prettig vinden als je de basisinstallatie al hebt uitgevoerd, aangezien we vanuit dit uitgangspunt zullen 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 configuratie nodig om bepaalde testcases te definiëren.
- Installeer guessnet en ifplugd
sudo aptitude install guessnet ifplugd
- Configureer ifplugd
sudo vi /etc/default/ifplugd
En definieer nu welke interfaces hotplug moet monitoren/beheren en pas de argumenten aan (verwijder de -q):
INTERFACES="eth0 eth1" #ARGS="-q -f -u0 -d10 -w -I" ARGS="-f -u0 -d10 -w -I"
- 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 het bestand:
#!/bin/bash ### BEGIN INIT INFO # Provides: wpa # Required-Start: $network $syslog $local_fs # Required-Stop: $network $syslog $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop script for wpa supplicant # Description: Custom start/stop script for wpa_supplicant. ### END INIT INFO SELF=`basename $0` WPA=wpa_supplicant PROGRAM=/sbin/${WPA} CONF=/etc/${WPA}.conf INTERFACE=wlan0 DRIVER=wext DAEMONMODE="-B" LOGFILE=/var/log/$WPA.log function start() { # TODO: Support multiple drivers/interfaces OPTIONS="-c $CONF -i $INTERFACE -D $DRIVER $DAEMONMODE" # Debian Lenny OPTIONS="$OPTIONS -W" && LOGFILE="" ## You can remove this if you are running 8.10 and up. # Ubuntu 8.10 and up doesn't need the -w anymore.. # And the logfile option is not valid on 8.04 and lower #local ver=$(lsb_release -sr | sed -e 's/\.//g'); #[ $ver -lt 810 ] && OPTIONS="$OPTIONS -w" && LOGFILE="" ## # Log to a file [ -n "$LOGFILE" ] && OPTIONS="$OPTIONS -f $LOGFILE" echo " * Starting wpa supplicant" eval $PROGRAM $OPTIONS } function stop() { echo " * Stopping wpa supplicant" local pid=$(pgrep -f $PROGRAM) [ -n "$pid" ] && kill $pid } function debug() { stop DAEMONMODE="-ddd" start } function restart() { stop sleep 2 start } function status() { pgrep -lf $PROGRAM } function usage() { echo "Usage: $SELF <start|stop|status|debug>" return 2 } case $1 in start|stop|debug|status) $1 ;; *) usage ;; esac
- Zorg ervoor dat je dit bestand kan uitvoeren
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.
sudo update-rc.d -f wpa.sh defaults
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 het gehele bestand. 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 betekent dit allemaal? Ten eerste hebben we een mapping gemaakt per interface (zowel onze vaste als draadloze interface), zodat we onze laptop op werk met een UTP-kabel kunnen verbinden, 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 kun 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 definiëren:
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 definiëren, maar dit kan in sommige gevallen noodzakelijk zijn. Voor de volledigheid heb ik deze statements wel toegevoegd (op m'n werk moet ik bijvoorbeeld wel de source gedefinieerd hebben anders faalt mijn test).
Voor draadloze netwerken is het makkelijker, we kunnen gewoon checken of de SSID bestaat:
test wireless essid Werk Wireless
Let op, deze SSID heeft spaties, en je hoeft dit niet met aanhalingstekens (" of ') te noteren, maar gewoon zoals hierboven beschreven staat. Ik moet er wel bij zeggen dat de draadloze test nog niet helemaal geïmplementeerd is, het kan meer of minder succesvol uitpakken.
We voeren gelijksoortige tests uit voor de situatie thuis. Voor meer informatie over de verschillende tests die je kunt 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 boven andere interfaces. In ISP-land kun 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 verbonden zijn kunnen we problemen krijgen met de routering, en daarom geef ik aan welke interface te allen tijde gebruikt moet worden indien we op zowel fixed als wireless aangesloten zijn. Je mag zelf kiezen wat de voorkeur heeft, zolang er maar één de voorkeur heeft boven 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 kun je dit weglaten, het hoeft niet! Je mag zelf kiezen of je dit wel of niet definieert.
- ifplugd configureren
Pas de file /etc/default/ifplugd aan.
# This file may be changed either manually or by running dpkg-reconfigure. # # N.B.: dpkg-reconfigure deletes everything from this file except for # the assignments to variables INTERFACES, HOTPLUG_INTERFACES, ARGS and # SUSPEND_ACTION. When run it uses the current values of those variables # as their default values, thus preserving the administrator's changes. # # This file is sourced by both the init script /etc/init.d/ifplugd and # the udev script /lib/udev/ifplugd.agent to give default values. # The init script starts ifplugd for all interfaces listed in # INTERFACES, and the udev script starts ifplugd for all interfaces # listed in HOTPLUG_INTERFACES. The special value all starts one # ifplugd for all interfaces being present. INTERFACES="eth0 eth1" HOTPLUG_INTERFACES="" #ARGS="-q -f -u0 -d10 -w -I" ARGS="-f -u0 -d10 -w -I" SUSPEND_ACTION="stop"
- 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 kun je ifconfig intikken en dan moet je meer interfaces die actief zijn 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)
- Klaar!