User Tools

Site Tools


doc:appunti:linux:openwrt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:openwrt [2014/02/23 09:16] – [BARRIER BREAKER (Bleeding Edge, r39638)] niccolodoc:appunti:linux:openwrt [2023/10/31 08:08] (current) – [OpenVPN] niccolo
Line 4: Line 4:
   * [[http://wiki.openwrt.org/doc/uci|Unified Configuration Interface]]   * [[http://wiki.openwrt.org/doc/uci|Unified Configuration Interface]]
  
-===== BARRIER BREAKER (Bleeding Edge, r39638) =====+===== File di configurazione =====
  
-  * **''/etc/dropbear/authorized_keys''** +/etc/dropbear/authorized_keys  | Chiavi RSA pubbliche per accesso SSH senza password.  | 
-  * **''/etc/config/system''** +/etc/config/system             | Configurazione hostname, timezone, LED, ecc.   | 
-  * **''/etc/config/network''** +/etc/config/network            | Configurazione interfacce di rete.  | 
-  * **''/etc/config/dhcp''** +/etc/config/dhcp               | Configurazione DHCP, lease statici, ecc.  | 
-  * **''/etc/config/openvpn''** +/etc/config/openvpn            | Configurazione OpenVPN attive.  | 
-  * **''/etc/config/wireless''** +/etc/config/wireless           | Configurazione access point: ESSID, psk, ecc.  | 
-  * **''/etc/rc.d/S90openvpn''** (/etc/init.d/openvpn enable+/etc/rc.d/S90openvpn  | Link creato quando si esegue ''/etc/init.d/openvpn enable''  | 
-  * **''/etc/config/firewall''** +/etc/config/firewall           | Regole firewall.  | 
-  * **''/etc/crontabs/root''**+/etc/crontabs/root             | Cron job eseguiti con privilegi di root.  |
  
 +===== OpenWrt 19.07.6 =====
 +
 +==== Configurazione DHCP server con due MAC address ====
 +
 +Il file di configurazione è **/etc/config/dhcp**. Questo un esempio di configurazione per un lease IP statico con due MAC address diversi:
 +
 +<file>
 +config host                     
 +    option ip '192.168.5.38'
 +    option mac 'dc:a6:31:3b:a2:6e dc:a6:31:3b:a2:6f'
 +    option name 'amorgos'                    
 +</file>
 +
 +In questo modo il client ottiene **lo stesso indirizzo IP** quando si collega indifferentemente con il **WiFI** oppure con il cavo **Ethernet** (i due MAC address sono delle interfacce **eth0** e **wlan0** del client). Per riavviare il servizio:
 +
 +<code>
 +/etc/init.d/dnsmasq reload
 +/etc/init.d/odhcpd reload
 +</code>
 +
 +Al reload viene generato un nuovo file **/var/etc/dnsmasq.conf** e viene riavviato il processo **/usr/sbin/dnsmasq**.
 +
 +In alcuni casi il client continua a chiedere il vecchio indirizzo IP e non riceve il nuovo indirizzo assegnato. Ad esempio un **Raspberry Pi** con RaspiOS Buster (basato su Debian 10) utilizza **dhcpcd** e mantiene traccia dei lease ottenuti in **/var/lib/dhcpcd5/**. Per eliminare l'informazione sui vecchi lease è sufficiente rimuovere il file **eth0.lease** e procedere al rinnovo.
 +
 +ATTENZIONE: L'interfaccia web LuCI, sezione **Network** => **DHCP and DNS** => **Static Leases**, non è in grado di gestire il doppio MAC address, nella colonna **MAC-Address** viene mostrato il valore **none** e non è possibile aggiungere o modificare una impostazione del genere.
 +
 +==== Static lease fuori dal range DHCP ====
 +
 +Quando si desidera che il server DHCP assegni sempre lo stesso indirizzo IP ad un host (//static lease//), si crea una sezione **config host** in **/etc/config/dhcp** come visto sopra. L'indirizzo assegnato con **option ip** deve stare all'esterno del pool definito nella sezione **config dhcp**. Il range è definito dalle opzioni **start** e **limit**.
 +
 +<file>
 +config dhcp 'lan'
 +        option interface 'lan'
 +        option start '110'
 +        option limit '140'
 +        option leasetime '12h'
 +        option dhcpv6 'server'
 +        option ra 'server'
 +        option ra_management '1'
 +
 +config host
 +        option name 'nafplio'
 +        option dns '1'
 +        option mac 'b8:27:eb:52:a6:3b'
 +        option ip '192.168.5.2'
 +</file>
 +
 +===== OpenWrt 22.03 Lede =====
 +
 +==== OpenVPN ====
 +
 +:!: **ATTENZIONE**: Per avere una situazione coerente nell'interfaccia web LuCI si dovrebbe configurare il tunnel OpenVPN nella sezione **Network** => **Interfaces** e quindi aggiungere le regole di firewall nella sezione **Network** => **Firewall**. Tuttavia questo causa un problema grave se viene eseguito un **/etc/init.d/network restart** oppure se viene a mancare momentaneamente la connessione WAN: il demone **[[https://openwrt.org/docs/techref/netifd|netifd]]** trova l'interfaccia configurata con **proto none** e quindi rimuove l'indirizzo IP dal device, il demone OpenVPN non si accorge della situazione e lascia il tunnel attivo, ma senza indirizzo IP (quindi non funzionante). Togliere l'opzione **persist-tun** dalla configurazione OpenVPN mitiga solo in parte il problema perché se l'interruzione della WAN è di breve durata il **ping-restart** non interviene e quindi l'interfaccia resta non funzionante. Il problema è descritto nel post **[[https://forum.openwrt.org/t/openvpn-client-tun-adapter-loses-its-ip-address-on-network-restart/13825/|OpenVPN client tun adapter loses its IP address on network restart]]**.
 +
 +=== Due possibili metodi di configurazione ===
 +
 +Configurando un tunnel OpenVPN viene creato un //network device// che può essere utilizzato da OpenWRT in due modi diversi. Il primo prevede di creare una //network interface// specifica associata al device, tale interfaccia potrà essere usata a piacere nelle regole di firewall. Il secondo metodo consiste nel creare una //firewall zone// specifica per la VPN che si riferisce direttamente al //network device//, senza utilizzre una //interface//. La prima soluzione sarebbe più coerente con il networking di OpenWRT, ma soffre del problema evidenziato sopra.
 +
 +Il prerequisito necessario per entrembi i metodi è creare il tunnel OpenVPN come //network device// assegnandogli un nome, ad esempio **tun3**. Si può agire dal menu LuCI **VPN** => **OpenVPN** oppure in alternativa si può agire da riga di comando creando un file di configurazione in **/etc/openvpn/**, senza neanche installare il pacchetto **luci-app-openvpn**. Vediamo nei due paragrafi seguenti come gestire questo device dalle pagine web LuCI; il primo metodo è sconsigliato perché causa il problema descritto sopra.
 +
 +=== Configurazione completa LuCI (NON consigliata) ===
 +
 +Con questo metodo viene creata una //network interface// associata al //network device// tun3. Da //Network// => //Interfaces// scegliere **Add new interface...**, indicare un nome, ad esempio **vpn3**, protocol **Unmanaged** e quindi scegliere il device **tun3**. Attivare anche l'opzione **Bring on boot**. Questa procedura aggiunge una sezione nel file **/etc/config/network**:
 +
 +<file>
 +config interface 'vpn3'    
 +        option proto 'none' 
 +        option device 'tun3'
 +</file>
 +
 +Quindi da //Network// => //Firewall// scegliere **Add**, indicare un nome, ad esempio **vpn**, scegliere le policy predefinite e indicare in **Covered networks** l'interfaccia vpn3 creata in precedenza. Questa procedura aggiunge una sezione nel file **/etc/config/firewall**:
 +
 +<file>
 +config zone                   
 +        option name 'vpn'      
 +        option input 'ACCEPT'
 +        option output 'ACCEPT'
 +        option forward 'ACCEPT'
 +        list network 'vpn3'
 +</file>
 +
 +=== Configurazione parziale LuCI (consigliata) ===
 +
 +In questo caso NON si deve aggiungere l'interfaccia di rete, cioè nel file **/etc/config/network** non deve esserci alcuna sezione relativa al **device tun3**.
 +
 +Quindi da //Network// => //Firewall// scegliere **Add**, indicare un nome, ad esempio **vpn** e scegliere le policy predefinite. Lasciare vuoto il campo **Covered networks** e al suo posto indicare in **Advance settings** => **Covered devices** l'Ethernet adapter **tun3** (il servizio OpenVPN deve essere già attivo). Questa procedura aggiunge una sezione al file **/etc/config/firewall**, dove viene usata l'opzione **device** invece di **network** (in questo esempio la zona vpn è stata associata a due tunnel):
 +
 +<file>
 +config zone                   
 +        option name 'vpn'      
 +        option input 'ACCEPT'
 +        option output 'ACCEPT'
 +        option forward 'ACCEPT'
 +        list device 'tun3' 
 +        list device 'tun189'
 +</file>
 +
 +Nelle figure che seguono si mostra la configurazione nelle pagine LuCI di due tunnel OpenVPN **tun3** e **tun189** con il secondo metodo, cioè come semplici //network devices// senza una corrispondente //network interface//
 +
 +=== Menu VPN => OpenVPN ===
 +
 +{{.openwrt:openwrt-22.05-openvpn-openvpn.png?direct&560|Menu VPN  => OpenVPN}}
 +
 +=== Menu Network => Interfaces => Interfaces ===
 +
 +{{.:openwrt:openwrt-22.05-openvpn-interfaces.png?direct&560|Menu Network => Interfaces}}
 +
 +=== Menu Network => Interfaces => Devices ===
 +
 +{{.openwrt:openwrt-22.05-openvpn-interfaces-devices.png?direct&560|Menu Network => Interfaces => Devices}}
 +
 +=== Menu Network => Firewall ===
 +
 +{{.openwrt:openwrt-22.05-openvpn-firewall.png?direct&560|Menu Network => Firewall}}
 +
 +=== Menu Network => Firewall => Zone ===
 +
 +{{.:openwrt:openwrt-22.05-openvpn-firewall-zone.png?direct&560|Menu Network => Firewall => Zone}}
doc/appunti/linux/openwrt.1393143390.txt.gz · Last modified: 2014/02/23 09:16 by niccolo