3 155
contributi
Wtf (discussione | contributi) |
Wtf (discussione | contributi) |
||
(51 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili | {{Versioni compatibili}}{{Gateway-Router}} | ||
== Introduzione == | == Introduzione == | ||
Riga 8: | Riga 8: | ||
* si è interessati ad una soluzione semi-professionale o addirittura professionale che sia completamente personalizzabile e che non obblighi a dipendere da software proprietario. | * si è interessati ad una soluzione semi-professionale o addirittura professionale che sia completamente personalizzabile e che non obblighi a dipendere da software proprietario. | ||
{{Box|Nota|Non tutti i dispositivi wireless supportano la modalità master, necessario per far funzionare tale dispositivo come AP. Verificare quindi tale aspetto prima di comprare un dispositivo.}} | {{Box|Nota|Non tutti i dispositivi wireless supportano la modalità master, necessario per far funzionare tale dispositivo come AP. Verificare quindi tale aspetto come descritto nella sezione "Configurazione" prima di comprare un dispositivo.}} | ||
== Installazione == | == Installazione == | ||
Riga 14: | Riga 14: | ||
<pre># apt-get install iw hostapd wireless-tools</pre> | <pre># apt-get install iw hostapd wireless-tools</pre> | ||
I ''wireless-tools'' forniscono diversi strumenti, tra cui ''iwconfig'', | I ''wireless-tools'' forniscono diversi strumenti, tra cui ''iwconfig'', un'utilità ormai deprecata e atta a configurare i dispositivi wireless prima dell'introduzione a livello kernel del driver di interfaccia '''nl80211'''.<br/> | ||
In questa guida si farà dunque solo riferimento al solo ''iw'', il nuovo strumento che sostituisce ''iwconfig'' e che supporta il già citato '''nl80211''' ([http://linuxwireless.org/en/users/Documentation/iw/#About_iw riferimento]). | |||
Si tenga comunque presente che per impostare un dispositivo wireless in modalità master, cioè access point, è sufficiente l'utilizzo di <code>hostapd</code>, in quanto questo supporta tutti e quattro i driver d'interfaccia possibili, ovvero: | |||
* HostAP | |||
* madwifi | |||
* prism54 | |||
* nl80211 (cfg80211/mac80211) | |||
== Configurazione == | == Configurazione == | ||
Convenzioni | === Convenzioni === | ||
* '''eth0''' è l'interfaccia a filo; | * '''eth0''' è l'interfaccia a filo; | ||
* '''wlan0''' è l'interfaccia senza fili; | * '''wlan0''' è l'interfaccia senza fili; | ||
* '''br0''' è il nome del ponte di rete che includerà le sopraccitate due interfacce fisiche, nel caso di soluzione con bridge di rete. | * '''br0''' è il nome del ponte di rete che includerà le sopraccitate due interfacce fisiche, nel caso di soluzione con bridge di rete. | ||
=== Verifica del supporto per la modalità master === | |||
Il primo passo è verificare che la propria scheda di rete supporti la modalità master, usando ad esempio il comando: | Il primo passo è verificare che la propria scheda di rete supporti la modalità master, usando ad esempio il comando: | ||
Riga 44: | Riga 53: | ||
Se nell'elenco compare la voce '''AP''', allora il dispositivo di rete può essere usato in modalità master e quindi come access point. | Se nell'elenco compare la voce '''AP''', allora il dispositivo di rete può essere usato in modalità master e quindi come access point. | ||
Una volta acclarato che il dispositivo wireless da usare supporta la modalità master è possibile passare alla configurazione di <code>hostapd</code> e quindi delle interfacce di rete. | |||
==== Nota su ''iwconfig'' e ''nl80211'' ==== | |||
Si noti che qualora si tentasse di impostare un dispositivo wireless basato su nl80211 in modalità master impartendo il comando <code>iwconfig wlan0 mode master</code>, si otterrebbe il seguente messaggio d'errore: | Si noti che qualora si tentasse di impostare un dispositivo wireless basato su nl80211 in modalità master impartendo il comando <code>iwconfig wlan0 mode master</code>, si otterrebbe il seguente messaggio d'errore: | ||
<pre> | <pre> | ||
Riga 50: | Riga 63: | ||
</pre> | </pre> | ||
anche se il dispositivo supportasse effettivamente tale modalità | anche se il dispositivo in questione supportasse effettivamente tale modalità. | ||
=== hostapd === | === hostapd === | ||
Questo strumento offre letteralmente una miriade di parametri su cui agire, basta | Questo strumento offre letteralmente una miriade di parametri su cui agire, basta dare uno sguardo al file di configurazione d'esempio <code>/usr/share/doc/hostapd/examples/hostapd.conf.gz</code>, inoltre è possibile avviare molteplici istanze dello stesso, ognuna con un suo specifico file di configurazione. | ||
In questa guida ci si limiterà a presentare i parametri essenziali ed a considerare l'esecuzione di una singola istanza di <code>hostapd</code>, scelte più che sufficienti per gestire il semplice caso di una rete domestica e/o di un piccolo ufficio. | In questa guida ci si limiterà a presentare i parametri essenziali ed a considerare l'esecuzione di una singola istanza di <code>hostapd</code>, scelte più che sufficienti per gestire il semplice caso di una rete domestica e/o di un piccolo ufficio. | ||
Si crei dunque un file di configurazione come utente root, ad esempio <code>/etc/hostapd/hostapd.conf</code>, e si specifichino le seguenti direttive: | |||
<pre> | |||
# Wireless interface | |||
interface=wlan0 | |||
driver=nl80211 | |||
ssid=test | |||
channel=1 | |||
</pre> | |||
Questa costituisce una configurazione assolutamente minimale, ma più che sufficiente per eseguire un primo test di funzionamento. Si digiti dunque da terminale: | |||
<pre># hostapd /etc/hostapd/hostapd.conf</pre> | |||
se non ci sono errori a video compariranno alcune righe informative e il demone rimarrà semplicemente attivo in primo piano. Si prema ''ctrl + C'' per terminarne l'esecuzione. | |||
Se viceversa l'esecuzione del demone viene terminata automaticamente e compare un messaggio d'errore relativo al driver si veda [http://linuxwireless.org/en/users/Documentation/hostapd/ questa pagina]. | |||
Una volta testato <code>hostapd</code> con una configurazione minimale è possibile scrivere una configurazione un po' più elaborata (e definitiva). Se il proprio dispositivo supporta la modalità '''802.11n''' è però necessario individuare prima quali funzionalità aggiuntive sono disponibili attraverso il solito <code>iw list</code>. Questa volta la sezione di interesse è <code>Capabilities</code>. Ad esempio per il chipset ''Intel(R) Dual Band Wireless AC 3160'' l'output di interesse è: | |||
<pre> | |||
[...] | |||
Capabilities: 0x1162 | |||
HT20/HT40 | |||
Static SM Power Save | |||
RX HT20 SGI | |||
RX HT40 SGI | |||
RX STBC 1-stream | |||
Max AMSDU length: 3839 bytes | |||
DSSS/CCK HT40 | |||
[...] | |||
</pre> | |||
che si tradurrà nella seguente riga di configurazione: | |||
<pre>ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]</pre> | |||
È ora possibile specificare un file di configurazione semi-definitivo, che nel caso del chipset ''Intel(R) Dual Band Wireless AC 3160'' potrebbe essere simile a quanto segue: | |||
<pre> | |||
# Wireless interface | |||
interface=wlan0 | |||
driver=nl80211 | |||
country_code=IT | |||
# Wireless environment | |||
ssid=vostro_SSID | |||
hw_mode=g | |||
channel=6 | |||
wmm_enabled=1 | |||
# 802.11n | |||
ieee80211n=1 | |||
# 802.11ac | |||
ieee80211ac=0 | |||
ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] | |||
# Authentication and encryption | |||
macaddr_acl=0 | |||
auth_algs=1 | |||
ignore_broadcast_ssid=1 | |||
wpa=2 | |||
wpa_passphrase=password_personale | |||
wpa_key_mgmt=WPA-PSK | |||
wpa_pairwise=TKIP | |||
rsn_pairwise=CCMP | |||
</pre> | |||
dove: | |||
* '''interface''' specifica il nome dell'interfaccia wireless da usare, chiaramente da modificare rispetto al valore indicato se diverso dal classico ''wlan0''; | |||
* '''driver''' specifica il driver interfaccia da usare, valore che ragionevolmente non sarà da modificare a meno di non usare kernel molto vecchi; | |||
* '''country_code''' è un valore non strettamente necessario e indica il codice paese in cui è attivo l'access point (si veda [https://en.wikipedia.org/wiki/ISO_3166-1 ISO 3166-1]); | |||
* '''ssid''' specifica la stringa da usare appunto come SSID di rete. | |||
* '''hw_mode''' specifica la frequenza di funzionamento (a = IEEE 802.11a 5 GHz, b = IEEE 802.11b 2.4 GHz, g = IEEE 802.11g 2.4 GHz). | |||
* '''channel''' specifica il numero di canale da usare. L'elenco dei canali utilizzabili è rilevabile sempre dall'output di <code>iw list</code>, per la precisione nelle sezioni ''Band 1 --> Frequencies'' (2.4 GHz) e ''Band 2 --> Frequencies'' (5 GHz). Il numero del canale è indicato tra parentesi quadre ed è disponibile se a fianco, racchiuso tra parentesi tonde, è indicato ''20.0 dBm''. Si veda <code>/usr/share/doc/hostapd/examples/hostapd.conf</code>per maggiori informazioni; | |||
* '''wmm_enabled''' deve essere impostato su (1) se si intende abilitare la modalità 802.11n e/o 802.11ac; | |||
* '''ieee80211n''' è usato per abilitare (1) o disabilitare (0) la modalità 802.11n; | |||
* '''ieee80211ac''' è usato per abilitare (1) o disabilitare (0) la modalità 802.11ac (richiede <code>hw_mode=a</code>); | |||
* '''ht_capab''' permette di definire le capacità aggiuntive del dispositivo wireless (inutile dichiarare questo parametro se <code>ieee80211n=0</code>); | |||
* '''macaddr_acl''' abilita (1) o disabilita (0) il filtro sul mac address dei dispositivi che si connettono all'access point. | |||
* '''auth_algs''' imposta l'algoritmo di autenticazione (0 = "Open System Authentication", 1 = "Shared Key Authentication", 3 = entrambi i precedenti); | |||
* '''ignore_broadcast_ssid''' abilita (1) o disabilita (0) la trasmissione dell'SSID di rete (ogni cliente deve già conoscerne il valore); | |||
* '''wpa''' indica la versione di wpa ammessa, (0 = wpa1, 1 = wpa2 (e wpa3 se supportato); | |||
* '''wpa_passphrase''' la password che ogni client dovrà immettere per connettersi all'access point; | |||
* '''wpa_key_mgmt''', '''wpa_pairwise''', '''rsn_pairwise''' si veda <code>/usr/share/doc/hostapd/examples/hostapd.conf</code>. | |||
A questo punto non rimane che testare un'ultima volta il file di configurazione col solito: | |||
<pre># hostapd /etc/hostapd/hostapd.conf</pre> | |||
Se tutto va bene abilitare/riavviare il servizio di <code>hostapd</code> nel modo appropriato alla propria versione di debian. | |||
==== Systemd ==== | |||
Abilitare il servizio di <code>hostapd</code> | |||
<pre># systemctl unmask hostapd</pre> | |||
Avviare <code>hostapd</code> | |||
<pre># systemctl start hostapd</pre> | |||
==== Init.d ==== | |||
Editare il file <code>/usr/share/doc/hostapd/examples/hostapd.conf</code> aggiungendo sotto la sezione relativa a <code>wlan0</code> la riga <code>hostapd /etc/hostapd/hostapd.conf</code>, ottenendo quindi qualcosa di simile a (cambiare con i propri dati): | |||
<pre> | |||
iface wlan0 inet static | |||
hostapd /etc/hostapd/hostapd.conf | |||
address 192.0.2.10/24 | |||
network 192.168.1.0 | |||
broadcast 192.168.1.255 | |||
gateway 192.168.1.1 | |||
</pre> | |||
Quindi eseguire | |||
<pre> | |||
# /etc/init.d/hostapd start | |||
# /etc/init.d/networking restart | |||
</pre> | |||
===== Deprecato ===== | |||
Editare il file <code>/default/hostapd/hostapd</code> indicando il percorso del proprio file di configurazione, che per questa guida significa: | |||
<pre>DAEMON_CONF="/etc/hostapd/hostapd.conf"</pre> | |||
Avviare quindi il demone <code>hostapd</code>: | |||
<pre># /etc/init.d/hostapd start</pre> | |||
=== Interfacce di rete === | |||
La procedura è quella standard, attraverso la definizione di <code>/etc/network/interfaces</code> o manualmente attraverso l'uso di <code>ifconfig</code>. Si ricordi che nel primo caso è necessario riavviare il demone <code>networking</code> (ma non prima di aver riavviato anche <code>hostapd</code> nel caso di bridge di rete), oppure riavviare la macchina. | |||
==== Configurazione statica o dinamica ==== | |||
Configurare la propria interfaccia senza fili come di norma. Si noti che usando <code>hostapd</code> è del tutto inutile specificare il parametro <code>wireless-mode Master</code>, anche nel caso di vecchi kernel, visto che provvede già quest'ultimo ad attivare la modalità master. | |||
Con questa configurazione sarà naturalmente accessibile la sola macchina su cui è fisicamente presente il dispositivo di rete wireless. Eventuali altri dispostivi presenti nella stessa LAN, ovvero sulla stessa subnet (ad esempio 192.168.1.0/24), continueranno a non essere raggiungibili (compreso un eventuale gateway per collegarsi a internet).<br> | |||
Perché anche il resto della rete diventi raggiungibile è necessario configurare o un bridge di rete oppure un routing (si vedano le prossime due sezioni). | |||
==== Configurazione in bridge di rete ==== | |||
Configurare un [[Ethernet Bridging | bridge di rete]] che includa l'interfaccia senza fili e l'interfaccia a filo (o le interfacce a filo) come di norma, quindi aggiungere a <code>/etc/hostapd/hostapd.conf</code> la seguente direttiva: | |||
<pre>bridge=br0</pre> | |||
dove '''br0''' è il nome del ponte di rete da usare. Riavviare il demone di <code>hostapd</code> e quindi quello di <code>networking</code>.<br> | |||
Systemd | |||
<pre> | |||
# systemctl restart hostapd | |||
# service networking | |||
</pre> | |||
Init.d | |||
<pre> | |||
# /etc/init.d/hostapd restart | |||
# /etc/init.d/networking restart | |||
</pre> | |||
Per maggiori dettagli sul bridging si veda [[Ethernet Bridging | questa guida]]. | |||
==== Configurazione con routing delle connessioni ==== | |||
Se l'interfaccia senza fili necessita di un indirizzo ip appartenente ad una subnet differente da quella dell interfaccia a filo, per esempio 10.0.0.0/8 invece di 192.168.1.0/24, allora si deve semplicemente configurare la scheda wireless in modalità statica o dinamica e quindi implementare le necessarie regole di iptables (o strumento equivalente) per effettuare il routing dei pacchetti dall'interfaccia senza fili a quella (o quelle) a filo.<br/> | |||
Per maggiori informazioni sull'uso di iptables si veda [[Debian e iptables | questa guida]], mentre per nftable [[Nftables | quest'altra]]. | |||
== Considerazioni finali == | |||
In questa guida non si è mai accennato a server DHCP semplicemente perché si è dato per scontato che nella LAN in cui andrà ad operare l'access point sia già presente un server DHCP. Qualora così non fosse l'utente dovrà naturalmente provvedere ad installarne e configurarne uno, per esempio seguendo [[Un server DNS e DHCP su Debian#Installazione e configurazione del server DHCP | questa guida]]. | |||
== Approfondimenti == | |||
=== Manpages === | |||
* <code>man iw</code> | |||
* <code>man hostapd</code> | |||
=== Sitografia === | |||
* [https://wireless.wiki.kernel.org/en/users/documentation/hostapd Hostapd] su wireless.wiki.kernel.org | |||
* [https://wireless.wiki.kernel.org/en/users/documentation/iw iw] su wireless.wiki.kernel.org | |||
* [https://wireless.wiki.kernel.org/en/users/documentation/modes wireless modes] su wireless.wiki.kernel.org | |||
* [https://help.ubuntu.com/community/WifiDocs/WirelessAccessPoint WAP] su help.ubuntu.com | |||
* [https://help.ubuntu.com/community/WifiDocs/MasterMode Master mode] su help.ubuntu.com | |||
* [http://www.cyberciti.biz/faq/debian-ubuntu-linux-setting-wireless-access-point/ Debian/Ubuntu WAP] su nixcraft | |||
{{Autori | |||
|Autore = [[Utente:Wtf|Wtf]] 23:52, 12 set 2015 (CEST) | |||
}} | |||
[[Categoria:Configurazione ethernet]][[Categoria:Configurazione wireless]] |
contributi