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/22 17:04] – [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/network''** +^ /etc/config/system             | Configurazione hostname, timezone, LED, ecc.   
-  * **''/etc/config/dhcp''**+^ /etc/config/network            | Configurazione interfacce di rete.  | 
 +^ /etc/config/dhcp               | Configurazione DHCP, lease statici, ecc.  | 
 +^ /etc/config/openvpn            | Configurazione OpenVPN attive. 
 +^ /etc/config/wireless           | Configurazione access point: ESSID, psk, ecc.  | 
 +^ /etc/rc.d/S90openvpn  | Link creato quando si esegue ''/etc/init.d/openvpn enable'' 
 +^ /etc/config/firewall           | Regole firewall. 
 +^ /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.1393085092.txt.gz · Last modified: 2014/02/22 17:04 by niccolo