Wireless Access Point (WAP) personalizzato

Da Guide@Debianizzati.Org.

(Differenze fra le revisioni)
(Verifica del supporto per la modalità master)
(hostapd)
 
(35 revisioni intermedie non mostrate.)
Riga 1: Riga 1:
-
{{Versioni compatibili|Jessie}}
+
{{Versioni compatibili}}{{Gateway-Router}}
== Introduzione ==
== Introduzione ==
Riga 107: Riga 107:
ssid=vostro_SSID
ssid=vostro_SSID
hw_mode=g
hw_mode=g
-
channel=4
+
channel=6
 +
wmm_enabled=1
# 802.11n
# 802.11n
-
wme_enabled=1
 
ieee80211n=1
ieee80211n=1
 +
# 802.11ac
 +
ieee80211ac=0
ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
# Authentication and encryption
# Authentication and encryption
Riga 127: Riga 129:
* '''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]);
* '''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.
* '''ssid''' specifica la stringa da usare appunto come SSID di rete.
-
* '''hw_mode''' specifica la modalità di funzionamento (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g). Si noti che la modalità '''n''' viene indicata attraverso un altro parametro che in ogni caso richiede di definire prima questo;
+
* '''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, si veda <code>/usr/share/doc/hostapd/examples/hostapd.conf.gz</code> su come scegliere un valore ottimale;
+
* '''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;
* '''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>);
* '''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.
* '''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;
+
* '''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);
* '''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, cioè solo wpa2 in questo caso;
+
* '''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_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.gz</code>.
+
* '''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:
A questo punto non rimane che testare un'ultima volta il file di configurazione col solito:
<pre># hostapd /etc/hostapd/hostapd.conf</pre>
<pre># hostapd /etc/hostapd/hostapd.conf</pre>
-
Se tutto va bene editare il file <code>/default/hostapd/hostapd</code> indicando il percorso del proprio file di configurazione, che per questa guida significa:
+
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>
<pre>DAEMON_CONF="/etc/hostapd/hostapd.conf"</pre>
Avviare quindi il demone <code>hostapd</code>:
Avviare quindi il demone <code>hostapd</code>:
-
<pre>/etc/init.d/hostapd start</pre>
+
<pre># /etc/init.d/hostapd start</pre>
-
=== Configurazione interfacce di rete ===
+
=== 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>.
+
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 ===
+
==== 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.
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).
+
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]]

Versione attuale delle 19:50, 15 set 2019

Debian-swirl.png Versioni Compatibili
Tutte le versioni supportate di Debian
Gateway-Router

Sommario


Indice

Introduzione

Sebbene in commercio esistano numerosi prodotti economici dedicati al ruolo di access point (AP d'ora in avanti), ci sono almeno alcune situazioni in cui è conveniente, o semplicemente interessante, usare una macchina completa per tale ruolo:

Info.png 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

# apt-get install iw hostapd wireless-tools

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.
In questa guida si farà dunque solo riferimento al solo iw, il nuovo strumento che sostituisce iwconfig e che supporta il già citato nl80211 (riferimento). Si tenga comunque presente che per impostare un dispositivo wireless in modalità master, cioè access point, è sufficiente l'utilizzo di hostapd, in quanto questo supporta tutti e quattro i driver d'interfaccia possibili, ovvero:

Configurazione

Convenzioni

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:

# iw list

che restituirà un lungo elenco di informazioni. Quello che interessa è la sezione Supported interface modes, che riporterà qualcosa del genere (esempio di output reale per chipset Intel(R) Dual Band Wireless AC 3160):

[...]
Supported interface modes:
    * IBSS
    * managed
    * AP
    * AP/VLAN
    * monitor
    * P2P-client
    * P2P-GO
    * P2P-device
[...]

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 hostapd 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 iwconfig wlan0 mode master, si otterrebbe il seguente messaggio d'errore:

Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument.

anche se il dispositivo in questione supportasse effettivamente tale modalità.

hostapd

Questo strumento offre letteralmente una miriade di parametri su cui agire, basta dare uno sguardo al file di configurazione d'esempio /usr/share/doc/hostapd/examples/hostapd.conf.gz, 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 hostapd, 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 /etc/hostapd/hostapd.conf, e si specifichino le seguenti direttive:

# Wireless interface
interface=wlan0
driver=nl80211
ssid=test
channel=1

Questa costituisce una configurazione assolutamente minimale, ma più che sufficiente per eseguire un primo test di funzionamento. Si digiti dunque da terminale:

# hostapd /etc/hostapd/hostapd.conf

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 questa pagina.

Una volta testato hostapd 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 iw list. Questa volta la sezione di interesse è Capabilities. Ad esempio per il chipset Intel(R) Dual Band Wireless AC 3160 l'output di interesse è:

[...]
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
[...]

che si tradurrà nella seguente riga di configurazione:

ht_capab=[HT40+][RX-STBC1][SMPS-STATIC][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]

È 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:

# 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

dove:

A questo punto non rimane che testare un'ultima volta il file di configurazione col solito:

# hostapd /etc/hostapd/hostapd.conf

Se tutto va bene abilitare/riavviare il servizio di hostapd nel modo appropriato alla propria versione di debian.

Systemd

Abilitare il servizio di hostapd

# systemctl unmask hostapd

Avviare hostapd

# systemctl start hostapd

Init.d

Editare il file /usr/share/doc/hostapd/examples/hostapd.conf aggiungendo sotto la sezione relativa a wlan0 la riga hostapd /etc/hostapd/hostapd.conf, ottenendo quindi qualcosa di simile a (cambiare con i propri dati):

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

Quindi eseguire

# /etc/init.d/hostapd start
# /etc/init.d/networking restart
Deprecato

Editare il file /default/hostapd/hostapd indicando il percorso del proprio file di configurazione, che per questa guida significa:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Avviare quindi il demone hostapd:

# /etc/init.d/hostapd start

Interfacce di rete

La procedura è quella standard, attraverso la definizione di /etc/network/interfaces o manualmente attraverso l'uso di ifconfig. Si ricordi che nel primo caso è necessario riavviare il demone networking (ma non prima di aver riavviato anche hostapd 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 hostapd è del tutto inutile specificare il parametro wireless-mode Master, 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).
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 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 /etc/hostapd/hostapd.conf la seguente direttiva:

bridge=br0

dove br0 è il nome del ponte di rete da usare. Riavviare il demone di hostapd e quindi quello di networking.
Systemd

# systemctl restart hostapd
# service networking

Init.d

# /etc/init.d/hostapd restart
# /etc/init.d/networking restart

Per maggiori dettagli sul bridging si veda 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.
Per maggiori informazioni sull'uso di iptables si veda questa guida, mentre per nftable 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 questa guida.

Approfondimenti

Manpages

Sitografia




Guida scritta da: Wtf 23:52, 12 set 2015 (CEST)

Swirl-auth20.png Debianized 20%

Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti