WLAN-Access-Point mit hostapd und USB-Stick: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<source lang="bash"> apt-get install iw </source>“) |
Admin (Diskussion | Beiträge) |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Vorarbeit == | |||
<source lang="bash"> | <source lang="bash"> | ||
apt-get install iw | apt-get install iw hostapd dnsmasq wireless-tools | ||
</source> | |||
Vorhanden sein muss eine Kabelnetzwerkkarte (''eth0''), sowie ein WLAN-Adapter (''wlan0'') der den AP-Modus unterstützt. Ob der AP-Modus unterstützt wird, kann mit folgendem Befehl abgefragt werden: | |||
<source lang="bash"> | |||
iw list | grep AP$ | |||
</source> | |||
Wenn die Ausgabe folgendermaßen aussieht, ist alle ok: | |||
<source lang="bash"> | |||
* AP | |||
</source> | |||
Der WLAN-Adapter wird vom Modul ''rt2800usb'' angesteuert und benötigt die Firmware ''rt2870.bin'' aus dem Paket [https://packages.debian.org/search?keywords=firmware-ralink firmware-ralink]. Ist die Firmware installiert, funktioniert der USB-Stick out-of-the-box und beherrscht auch den AP-Modus. Hier die genauen Informationen vom USB-System über den Stick: | |||
<source lang="bash"> | |||
> lsusb | |||
Bus 004 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter | |||
</source> | |||
Der Accesspoint wird mit der Software ''hostapd'' betrieben; für die Verteilung der IP-Adressen an die WLAN-Clients ist ''dnsmasq'' zuständig. | |||
== DHCP-Server == | |||
Erstellen einer neuen Konfigurationsdatei. Ein Backup der Alten kann nicht schaden (mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig). | |||
=== /etc/dnsmasq.conf === | |||
<source lang="bash"> | |||
interface=wlan0 | |||
no-dhcp-interface=eth0 | |||
dhcp-range=interface:wlan0,192.168.99.33,192.168.99.99,infinite | |||
</source> | |||
Der erste Eintrag legt wlan0 als DHCP-Interface fest, der zweite schliesst das Kabelnetzwerk eth0 vom DHCP aus. Der dritte Eintrag legt die für DHCP verfügbaren IP-Adressen fest. | |||
== hostapd == | |||
Editieren der Datei ''/etc/init.d/hostapd''. Dort muss ein Verweis auf die Konfigurationsdatei hinterlegt/angepasst werden: | |||
<source lang="bash"> | |||
DAEMON_CONF=/etc/hostapd.conf | |||
</source> | |||
=== /etc/hostapd.conf === | |||
<source lang="bash"> | |||
## Log-Einstellungen | |||
# "-1" = alle Module loggen, "3" z.B. loggt nur WPA | |||
logger_syslog=-1 | |||
# "2" = informative Meldungen, "1" = Debuggen, "0" = echt alles loggen | |||
logger_syslog_level=2 | |||
# wie oben, nur Ausgabe auf Konsole, wenn Programm nicht im Hintergrund läuft | |||
logger_stdout=-1 | |||
# wie oben | |||
logger_stdout_level=2 | |||
## Statusinformationen | |||
# temporäre Datei für Statusinformationen | |||
dump_file=/tmp/hostapd | |||
# Verzeichnis für Socket für hostapd_cli und andere externe Kontrollprogramme | |||
ctrl_interface=/var/run/hostapd | |||
## SSID und Kanal | |||
# Name des Accesspoints | |||
ssid=Hagleitner_Demo | |||
# Kanal | |||
channel=7 | |||
## Wireless Modus | |||
# g = IEEE 802.11g, Default: IEEE 802.11b | |||
hw_mode=g | |||
## Intervall für Rundspruch | |||
# Rundspruch (Beacon) "Ich bin ein AP!" in Millisekunden (1 - 65535) | |||
beacon_int=100 | |||
## DTIM-Ankündigung | |||
# Ein DTIM ist eine Art Weckruf an die Stationen: "Gleich wird es interessant!". | |||
# Es reicht jedes zweite Beacon mit dem DTIM zu bestücken. | |||
dtim_period=2 | |||
## Maximale Anzahl an Clients | |||
# Limit: 2007, man sollte aber realistisch bleiben... | |||
max_num_sta=20 | |||
## RTS/FRAGM abschalten | |||
# Das übernimmt das WLAN-Modul, ja, 2347=off | |||
rts_threshold=2347 | |||
# und 2346=off | |||
fragm_threshold=2346 | |||
## MAC-basierte Authentifizierung | |||
# 0 = akzeptieren, wenn nicht explicit abgelehnt (deny_mac_file) | |||
# 1 = ablehnen, wenn nicht explicit erlaubt (accept_mac_file) | |||
# 2 = RADIUS-Server verwenden, nach Durchsicht der obigen Listen | |||
# Zum Sperren/Erlauben diese Dateien anlegen und bestücken: | |||
# accept_mac_file=/etc/hostapd.accept | |||
# deny_mac_file=/etc/hostapd.deny | |||
macaddr_acl=0 | |||
## Authentifizierung | |||
# 1 = Open System, 2= Shared Key --> WEP | |||
# 3 = beides | |||
auth_algs=1 | |||
## WPA/WPA2 | |||
# 1 = WPA, 2 = WPA2, 3 = beides | |||
wpa=3 | |||
# WLAN-Key (Pre-shared Key) | |||
wpa_passphrase=mysecretpassphrase | |||
# Pre-shared-Key Management | |||
wpa_key_mgmt=WPA-PSK | |||
# WPA2 Verschlüsselung anbieten | |||
rsn_pairwise=CCMP | |||
# WPA Verschlüsselung anbieten | |||
wpa_pairwise=TKIP CCMP | |||
## Schlüsselerneuerung | |||
# Schlüsselteile nach 10 Min. erneuern | |||
wpa_group_rekey=600 | |||
# s.o. | |||
wpa_ptk_rekey=600 | |||
# erneuern nach 24 Std. | |||
wpa_gmk_rekey=86400 | |||
## Gerät und Treiber | |||
# USB-Stick einbinden | |||
interface=wlan0 | |||
# An Netlink-Interface übergeben | |||
driver=nl80211 | |||
# SSID nicht "verheimlichen" | |||
# 1 = Sende leere SSID und ignoriere Anfragen die die SSID nicht enthalten | |||
# 2 = Sende leere SSID, aber setze die Länge nicht auf 0, sondern genau auf die Länge der SSID, | |||
# einige Clients brauchen das. | |||
ignore_broadcast_ssid=0 | |||
## Ländercode | |||
# Ländercode setzen | |||
country_code=DE | |||
# Ländercode aktivieren, "0" = aus (default) | |||
ieee80211d=1 | |||
</source> | |||
'''Schnittstellen''' | |||
* driver=hostap für Geräte mit Prism2/2.5/3 Chipsatz. | |||
* driver=madwifi für Geräte mit Atheros (ar521x) Chipsatz. | |||
* driver=nl80211 für Geräte die mit einem mac80211-basierten Treiber funktionieren und den AP-Modus unterstützen. | |||
== Netzwerk-Konfiguration == | |||
=== /etc/network/interfaces === | |||
<source lang="bash"> | |||
auto lo | |||
iface lo inet loopback | |||
auto eth0 | |||
iface eth0 inet static | |||
address 10.200.118.7 | |||
netmask 255.255.0.0 | |||
gateway 10.200.0.1 | |||
# WLAN mit fester Adresse für hostapd | |||
auto wlan0 | |||
iface wlan0 inet static | |||
address 192.168.99.1 | |||
netmask 255.255.255.0 | |||
broadcast 192.168.99.255 | |||
# Firewall zurücksetzen, Tabellen leeren | |||
up /sbin/iptables -F | |||
up /sbin/iptables -X | |||
up /sbin/iptables -t nat -F | |||
# Kabelnetzwerk maskieren, Port-Forwarding sowie Nat aktivieren | |||
up iptables -A FORWARD -o eth0 -i wlan0 -s 10.200.0.0/24 -m conntrack --ctstate NEW -j ACCEPT | |||
up iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT | |||
up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | |||
up sysctl -w net.ipv4.ip_forward=1 | |||
# hostapd und dnsmasq (neu) starten | |||
up service hostapd restart | |||
up service dnsmasq restart | |||
auto wlan0:1 | |||
iface wlan0:1 inet dhcp | |||
wpa-ssid Hagleitner-ZyXEL | |||
wpa-psk mysecretpassword | |||
</source> | |||
== Startup & Debugging == | |||
<source lang="bash"> | |||
service networking restart | |||
</source> | |||
=== hostapd debuggen === | |||
<source lang="bash"> | |||
hostapd -dd /etc/hostapd.conf | |||
</source> | </source> |
Aktuelle Version vom 21. Oktober 2014, 09:48 Uhr
Vorarbeit
apt-get install iw hostapd dnsmasq wireless-tools
Vorhanden sein muss eine Kabelnetzwerkkarte (eth0), sowie ein WLAN-Adapter (wlan0) der den AP-Modus unterstützt. Ob der AP-Modus unterstützt wird, kann mit folgendem Befehl abgefragt werden:
iw list | grep AP$
Wenn die Ausgabe folgendermaßen aussieht, ist alle ok:
* AP
Der WLAN-Adapter wird vom Modul rt2800usb angesteuert und benötigt die Firmware rt2870.bin aus dem Paket firmware-ralink. Ist die Firmware installiert, funktioniert der USB-Stick out-of-the-box und beherrscht auch den AP-Modus. Hier die genauen Informationen vom USB-System über den Stick:
> lsusb
Bus 004 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Der Accesspoint wird mit der Software hostapd betrieben; für die Verteilung der IP-Adressen an die WLAN-Clients ist dnsmasq zuständig.
DHCP-Server
Erstellen einer neuen Konfigurationsdatei. Ein Backup der Alten kann nicht schaden (mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig).
/etc/dnsmasq.conf
interface=wlan0
no-dhcp-interface=eth0
dhcp-range=interface:wlan0,192.168.99.33,192.168.99.99,infinite
Der erste Eintrag legt wlan0 als DHCP-Interface fest, der zweite schliesst das Kabelnetzwerk eth0 vom DHCP aus. Der dritte Eintrag legt die für DHCP verfügbaren IP-Adressen fest.
hostapd
Editieren der Datei /etc/init.d/hostapd. Dort muss ein Verweis auf die Konfigurationsdatei hinterlegt/angepasst werden:
DAEMON_CONF=/etc/hostapd.conf
/etc/hostapd.conf
## Log-Einstellungen
# "-1" = alle Module loggen, "3" z.B. loggt nur WPA
logger_syslog=-1
# "2" = informative Meldungen, "1" = Debuggen, "0" = echt alles loggen
logger_syslog_level=2
# wie oben, nur Ausgabe auf Konsole, wenn Programm nicht im Hintergrund läuft
logger_stdout=-1
# wie oben
logger_stdout_level=2
## Statusinformationen
# temporäre Datei für Statusinformationen
dump_file=/tmp/hostapd
# Verzeichnis für Socket für hostapd_cli und andere externe Kontrollprogramme
ctrl_interface=/var/run/hostapd
## SSID und Kanal
# Name des Accesspoints
ssid=Hagleitner_Demo
# Kanal
channel=7
## Wireless Modus
# g = IEEE 802.11g, Default: IEEE 802.11b
hw_mode=g
## Intervall für Rundspruch
# Rundspruch (Beacon) "Ich bin ein AP!" in Millisekunden (1 - 65535)
beacon_int=100
## DTIM-Ankündigung
# Ein DTIM ist eine Art Weckruf an die Stationen: "Gleich wird es interessant!".
# Es reicht jedes zweite Beacon mit dem DTIM zu bestücken.
dtim_period=2
## Maximale Anzahl an Clients
# Limit: 2007, man sollte aber realistisch bleiben...
max_num_sta=20
## RTS/FRAGM abschalten
# Das übernimmt das WLAN-Modul, ja, 2347=off
rts_threshold=2347
# und 2346=off
fragm_threshold=2346
## MAC-basierte Authentifizierung
# 0 = akzeptieren, wenn nicht explicit abgelehnt (deny_mac_file)
# 1 = ablehnen, wenn nicht explicit erlaubt (accept_mac_file)
# 2 = RADIUS-Server verwenden, nach Durchsicht der obigen Listen
# Zum Sperren/Erlauben diese Dateien anlegen und bestücken:
# accept_mac_file=/etc/hostapd.accept
# deny_mac_file=/etc/hostapd.deny
macaddr_acl=0
## Authentifizierung
# 1 = Open System, 2= Shared Key --> WEP
# 3 = beides
auth_algs=1
## WPA/WPA2
# 1 = WPA, 2 = WPA2, 3 = beides
wpa=3
# WLAN-Key (Pre-shared Key)
wpa_passphrase=mysecretpassphrase
# Pre-shared-Key Management
wpa_key_mgmt=WPA-PSK
# WPA2 Verschlüsselung anbieten
rsn_pairwise=CCMP
# WPA Verschlüsselung anbieten
wpa_pairwise=TKIP CCMP
## Schlüsselerneuerung
# Schlüsselteile nach 10 Min. erneuern
wpa_group_rekey=600
# s.o.
wpa_ptk_rekey=600
# erneuern nach 24 Std.
wpa_gmk_rekey=86400
## Gerät und Treiber
# USB-Stick einbinden
interface=wlan0
# An Netlink-Interface übergeben
driver=nl80211
# SSID nicht "verheimlichen"
# 1 = Sende leere SSID und ignoriere Anfragen die die SSID nicht enthalten
# 2 = Sende leere SSID, aber setze die Länge nicht auf 0, sondern genau auf die Länge der SSID,
# einige Clients brauchen das.
ignore_broadcast_ssid=0
## Ländercode
# Ländercode setzen
country_code=DE
# Ländercode aktivieren, "0" = aus (default)
ieee80211d=1
Schnittstellen
- driver=hostap für Geräte mit Prism2/2.5/3 Chipsatz.
- driver=madwifi für Geräte mit Atheros (ar521x) Chipsatz.
- driver=nl80211 für Geräte die mit einem mac80211-basierten Treiber funktionieren und den AP-Modus unterstützen.
Netzwerk-Konfiguration
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.200.118.7
netmask 255.255.0.0
gateway 10.200.0.1
# WLAN mit fester Adresse für hostapd
auto wlan0
iface wlan0 inet static
address 192.168.99.1
netmask 255.255.255.0
broadcast 192.168.99.255
# Firewall zurücksetzen, Tabellen leeren
up /sbin/iptables -F
up /sbin/iptables -X
up /sbin/iptables -t nat -F
# Kabelnetzwerk maskieren, Port-Forwarding sowie Nat aktivieren
up iptables -A FORWARD -o eth0 -i wlan0 -s 10.200.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
up iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
up sysctl -w net.ipv4.ip_forward=1
# hostapd und dnsmasq (neu) starten
up service hostapd restart
up service dnsmasq restart
auto wlan0:1
iface wlan0:1 inet dhcp
wpa-ssid Hagleitner-ZyXEL
wpa-psk mysecretpassword
Startup & Debugging
service networking restart
hostapd debuggen
hostapd -dd /etc/hostapd.conf