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 [2023/10/03 06:56] – [OpenVPN] 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 ===== ===== OpenWrt 19.07.6 =====
Line 67: Line 67:
 ==== OpenVPN ==== ==== 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.+:!: **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]]**.
  
-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 ===
  
-Supponiamo che dal menu LuCI **VPN** => **OpenVPN** si sia configurato un tunnel associato al device **tun3**. In alternativa si può anche 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 dall'interfaccia web LuCI; il primo metodo è sconsigliato perché causa il problema descritto sopra.+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) === === Configurazione completa LuCI (NON consigliata) ===
  
-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**:+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> <file>
Line 96: Line 98:
 === Configurazione parziale LuCI (consigliata) === === Configurazione parziale LuCI (consigliata) ===
  
-In questo caso NON si deve aggiungere l'interfaccia di rete, cioè nel file **/etc/config/network** non deve esserci una sezione relativa al **device tun3**.+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):
-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** in **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> <file>
Line 111: Line 112:
 </file> </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.1696308960.txt.gz · Last modified: 2023/10/03 06:56 by niccolo