Het is nodig dat je pc als access point werkt en als gateway. Ook zal hij dhcp en dns server worden voor je nieuwe wlan. Daarvoor heb je de volgende software nodig:
ifupdown - een collectie scripts om met 1 commando je netwerk aan of uit te zetten.
hostapd - Deze zorgt er voor dat je draadloze kaart in ap mode gaat en verzorgt de encryptie (wpa, wep of geen encryptie).
dnsmasq - Dit is een dns forwarder met ingebouwde dhcp server. dnsmasq vind je op bijna alle linux routers.
shorewall - Dit gebruik ik om netwerk verkeersregels in te stellen. Je pc zal netwerkverkeer van je draadloze clients door moeten sturen door je kabel. Hij zal ook dit verkeer moeten 'masqueraden' - hierover later meer.
Dus:
sudo apt-get install ifupdown shorewall dnsmasq hostapd
Eerst worden we even permanent root, da's handig:
sudo -s
Laten we beginnen met hostapd:
Hostapd komt met een voorbeeld configuratie bestand in /usr/share/doc/hostapd/examples/hostapd.conf.gz, dus dat pakket we uit:
zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz >/etc/hostapd/wlan.conf
wlan.conf is een arbitraire naam. Ik kan hier niet alle opties van hostapd behandelen, de voorbeeldconfiguratie is goed gedocumenteerd. Ik zal wel een aantal belangrijke opties noemen, de meeste opties kan je gewoon laten zoals ze zijn:
interface=wlan0
driver=nl80211
ssid= >de ssid (naam) die je je draadloze netwerk wil geven<
country_code=NL
auth_algs=1 - We gebruiken encryptie
wpa=2
wpa_passphrase= >Die zal je ook zelf moeten bedenken, een goede optie is:
https://www.grc.com/passwords.htm <
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
Goed, op naar dnsmasq:
Ook dnsmasq komt met een standaard configuratie en wel in /etc/dnsmasq.conf. Ook die ga ik niet helemaal behandelen, maar wel elke opties aanstippen:
interface=wlan0
dhcp-range=172.30.222.50,172.30.222.150,255.255.255.0,12h
dhcp-authoritative
En dan shorewall, dit wordt wat ingewikkelder, maar dan heb je ook wat. Deze firewall regels zullen er voor zorgen dat draadloze clients wel via jouw pc het internet op kunnen, maar geen toegang hebben tot services op jouw pc, afgezien van dnsmasq. Ik heb een archive gemaakt van de verschillende shorewall configuratie bestanden omdat het me te veel tijd kost om dit hier te posten:
Download eerst de attachment bij deze post: shorewall.tar.bz en voer hetvolgende uit:
cd /etc
tar zxvf shorewall.tar.gz
Verander hierna in het bestand /etc/default/shorewall
startup=0
in
startup=1
Dit zorgt er voor dat bij iedere boot shorewall gestart wordt en er geen toegang is tot je computer. De speciale netwerkregels voor wanneer je als ap wilt werken worden apart geladen - daarover straks meer.
Nu we alle programma's geconfigureerd hebben moeten we nog een manier hebben om alles te starten, voeg het volgende toe aan /etc/network/interfaces:
iface eth0 inet dhcp
iface ap inet static
pre-up /etc/init.d/network-manager stop
pre-up ifup eth0
hostapd /etc/hostapd/wlan.conf
up /etc/init.d/dnsmasq start
up /sbin/shorewall restart /etc/shorewall/ap
post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pre-down ifdown eth0
post-down /etc/init.d/network-manager start
down /etc/init.d/dnsmasq stop
down /sbin/shorewall restart
address 172.30.222.1
netmask 255.255.255.0
broadcast 172.30.222.255
network 172.30.222.0
Goed, wat houdt dat alles nu in?
Als je je pc als access point start wordt network-manager gestopt. Dit moet anders krijgt nm ruzie met hostapd en ifupdown. Hierna wordt eth0 met dhcp ingestelt. Dan wordt hostapd gestart. Deze zet de draadloze kaart in access point mode en begint met het zenden van de ssid en beacons en wacht op clients. De draadloze interface krijgt het ip adres 172.30.222.1. Dit is een C klasse lokaal ip adres. Ik heb bewust een range gekozen die niet veel gebruikt wordt om conflicten met bijvoorbeeld 192.168.1.0/24 te vermijden. Dan wordt dnsmasq gestart en shorewall wordt opnieuw gestart met de speciale access point regels. Daarna wordt er nog een extra netwerk regel toegevoegd om je pc de clients te laten masqueraden. Masqueraden is dat als jou pc netwerk verkeer doorstuurt naar de volgende router (of het internet), hij het adres van de afzender (client) vervangt met zijn eigen adres. Zo weet de router die het verkeer ontvangt waar het antwoord naar toe moet. Je pc stuurt daarna het verkeer door naar de originele afzender.
Dus wat gebeurt er nou als ik met een client verbind?
Je client maakt een draadloze verbinding met je pc. Hostapd zorgt voor de encryptie (wpa2-psk). Als de beveiligde verbinding eenmaal tot stand gekomen is, begint je client om een ip adres te vragen (dhcp). dnsmasq stuurt een ip adres terug naar de client. Dan ga je op de client naar een webpagina, zeg nu.nl. Je client stuurt een dns request naar je pc. dnsmasq zoekt nu.nl op en stuurt het antwoord naar je client. Je client stuurt netwerkverkeer naar je pc, met als eindadres de server van nu.nl. Je pc stuurt het netwerkverkeer van de draadloze kaart door naar de netwerkkabel, maar vervangt eerst het adres van client met zijn eigen kabel netwerk adres. Zo weet de andere kant van de kabel ook waar het antwoord naar toe moet. Het antwoord van de server van nu.nl neemt de omgekeerde route.
Dan nog de magische code om alles in werking te stellen:
ifup wlan0=ap
en als je wilt stoppen:
ifdown wlan0
En ga alsjeblieft niet zeggen dat het op deze manier te veel werk is, ik kan je beloven dat ik langer bezig ben geweest met dit alles dan jij.
Dus laat maar horen wat je er van vindt en of het lukt