Använda Raspberry Pi som trådlös accesspunkt
Först måste man installera 2 paket som behövs hostapd och udhcpd med följande kommando
sudo apt-get install hostapd udhcpd
Vi måste först bestämma oss vilket nätverket som skall användas av APn, välj ett som du inte använder lokalt på någon annat nät som är kopplat till Raspberry PIn. I detta fall väljer jag nätet 192.168.155.xxx som nätverk och väjer IP-numret 192.168.155.1 som AP (Raspberry PIn).
När man kopplat in ett trådlöst nätverkskort så kan man se att systemet upptäckt det genom att operativsystemet tilldelar den ett enhetsnamn, för trådlösa nätverkskort börjar alla på wlan och ett löpnummer som startar från 0. Vi kan kontrollera villka nätverkskort som systemet hittat via kommandot
ifconfig -s
Här ser man att en trådlös enhet hittats, wlan0, man får ut mer information om interfacet med kommandot ifconfig <enhetsnamn> som i detta fal bli kommandot
ifconfig wlan0
Vad man kan se är att nätverksenheten inte har något IP-nummer, utan ett sådan kan man inte skicka trafik via detta interface. Vi måste konfigurerara det trådlösa näverkskortet att använda 192.168.155.1 genom att ändra på inställningarna för nätverket. Alla inställningar ligger i filen /etc/network/interfaces och om du inte ändrat på den bör se ut så här
1 2 3 4 5 6 7 8 9 |
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp |
Redigera filen med kommadont
sudo vi /etc/network/interfaces
ändra innehåller så att den ser ut så här
1 2 3 4 5 6 7 8 9 10 11 12 13 |
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp iface wlan0 inet static address 192.168.155.1 netmask 255.255.255.0 |
Om man stänger ner och kopplar upp nätverkskortet så läser systemet in de nya inställningarna
1 2 |
sudo ifdown wlan0 sudo ifup wlan0 |
Nu har nätverkskortet rätt adress. För att någon ska kunna ansluta sig till accesspunkten måste vi kunna dela ut IP-nummer till de enheter som ansluter sig. Till det behöver vi konfigurerar dhcp-server (udhcpd) som vi laddade ner i börja av denna artikel. Redigera filen /etc/udhcpd.conf så att följande rader finns med
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#första IP som kan tilldelas start 192.168.155.2 #sista IP som kan tilldelas end 192.168.155.50 #vilket kort som den ska dela ut IP:a på interface wlan0 #behövs på Raspberry PI remaining yes #vilka DNS servrar som ska används, här använder jag Googles öppna opt dns 8.8.8.8 8.8.4.4 # subnät behövs för att vet när paket ska skickas vidare opt subnet 255.255.255.0 # vilket IP som allt ska skickas via, den ip som vi satte up på wlan0 opt router 192.168.155.1 # hur länge vi lånar ut IP:n => 1 dag opt lease 86400 |
Efter jag ändrat i filen se den ut så här
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# Sample udhcpd configuration file (/etc/udhcpd.conf) # The start and end of the IP lease block start 192.168.155.2 #default: 192.168.0.20 end 192.168.155.50 #default: 192.168.0.254 # The interface that udhcpd will use interface wlan0 #default: eth0 # The maximim number of leases (includes addressesd reserved # by OFFER's, DECLINE's, and ARP conficts #max_leases 254 #default: 254 # If remaining is true (default), udhcpd will store the time # remaining for each lease in the udhcpd leases file. This is # for embedded systems that cannot keep time between reboots. # If you set remaining to no, the absolute time that the lease # expires at will be stored in the dhcpd.leases file. #remaining yes #default: yes # The time period at which udhcpd will write out a dhcpd.leases # file. If this is 0, udhcpd will never automatically write a # lease file. (specified in seconds) #auto_time 7200 #default: 7200 (2 hours) # The amount of time that an IP will be reserved (leased) for if a # DHCP decline message is received (seconds). #decline_time 3600 #default: 3600 (1 hour) # The amount of time that an IP will be reserved (leased) for if an # ARP conflct occurs. (seconds #conflict_time 3600 #default: 3600 (1 hour) # How long an offered address is reserved (leased) in seconds #offer_time 60 #default: 60 (1 minute) # If a lease to be given is below this value, the full lease time is # instead used (seconds). #min_lease 60 #defult: 60 # The location of the leases file #lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases # The location of the pid file #pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid # Everytime udhcpd writes a leases file, the below script will be called. # Useful for writing the lease file to flash every few hours. #notify_file #default: (no script) #notify_file dumpleases # <--- useful for debugging # The following are bootp specific options, setable by udhcpd. #siaddr 192.168.0.22 #default: 0.0.0.0 #sname zorak #default: (none) #boot_file /var/nfs_root #default: (none) # The remainer of options are DHCP options and can be specifed with the # keyword 'opt' or 'option'. If an option can take multiple items, such # as the dns option, they can be listed on the same line, or multiple # lines. The only option with a default is 'lease'. #Examles opt dns 8.8.8.8 8.8.4.4 option subnet 255.255.255.0 opt router 192.168.155.1 #opt wins 192.168.10.10 #option dns 129.219.13.81 # appened to above DNS servers for a total of 3 option domain local opt lease 86400 # Currently supported options, for more info, see options.c #opt subnet #opt timezone #opt router #opt timesrv #opt namesrv #opt dns #opt logsrv #opt cookiesrv #opt lprsrv #opt bootsize #opt domain #opt swapsrv #opt rootpath #opt ipttl #opt mtu #opt broadcast #opt wins #opt lease #opt ntpsrv #opt tftp #opt bootfile #opt wpad # Static leases map #static_lease 00:60:08:11:CE:4E 192.168.0.54 #static_lease 00:60:08:11:CE:3E 192.168.0.44 |
För att aktivera server-tjänsten måste även en fil till ändras, nämligen /etc/default/udhcpd, ändra innehållet så att det ser ut så här
1 2 3 4 5 6 7 8 9 |
# Comment the following line to enable #DHCPD_ENABLED="no" # Options to pass to busybox' udhcpd. # # -S Log to syslog # -f run in foreground DHCPD_OPTS="-S" |
ändringen består av att man lägger till ett brädgårdstecken först på rad 2, sedan kan vi starta upp tjänsten med kommandot
sudo /etc/init.d/udhcpd start
Nu ska vi konfigurera AP-tjänsten genom att konfigurerar filen /etc/hostapd/hostapd.conf så att den ser ut som nedan
1 2 3 4 5 6 7 8 9 10 11 12 13 |
interface=wlan0 driver=nl80211 ssid=RPI hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=hemligt1 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP |
man behöver även ändra en fil till för att få tjänsen att starta automatiskt, ändra filen /etc/default/hostapd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # DAEMON_CONF="/etc/hostapd/hostapd.conf" # Additional daemon options to be appended to hostapd command:- # -d show more debug messages (-dd for even more) # -K include key data in debug messages # -t include timestamps in some debug messages # # Note that -B (daemon mode) and -P (pidfile) options are automatically # configured by the init.d script and must not be added to DAEMON_OPTS. # #DAEMON_OPTS="" |
Ändringen gäller rad 10 där man lägger till sökvägen till konfigurationsfilen. Starta upp hostadp tjänsten med kommandot
sudo /etc/init.d/hostapd start
Nu är accesspunkten uppe så att man kan ansluta sig till den, men man kan bara komma åt det som ligger lokalt på Raspberry PI:n.
För att kunna surfa ut från maskinen krävs 2 saker, att paket skickas mellan de två nätverkskorten och att man gömmer avsändarens IP:n innan man skicka paketet vidare s.k NAT. Det första åtgärdar man genom att ange följande kommando
sudo sysctl -w net.ipv4.ip_forward=1
Ändringen slår igenom efter om start men man kan även aktivera det direkt (tills man startar on) men följande kommando
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Nu ska vi sätta upp reglerna som gör NAT, den grundläggande regeln är
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
och spara undan den i en fil som heter /etc/network/iptables.rules
sudo sh -c 'iptables-save > /etc/network/iptables.rules'
Vaför man inte kan bara köra sudo iptables-save > /etc/network/iptables.rules är att sudo (root-rättigheterna) gäller bara kommandot och inte > /etc/network/iptables.rules så du får access denied nät du fösöker spara filen.
Nu är det bara kvar att se till så att iptables reglerna läses in vid uppstart, det enklaste sättet är att lägga till en rad i /etc/network/interfaces, lägg till sist i filen raden
1 |
pre-up iptables-restore < /etc/network/iptables.rules |
Den kompletta listan av /etc/network/interfaces se ut så här
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp iface wlan0 inet static address 192.168.155.1 netmask 255.255.255.0 pre-up iptables-restore < /etc/network/iptables.rules |
Nu bör du ha en fungerande accesspunkt.
Recent Comments