UCI (Unified Configuration Interface)#
UCI (Unified Configuration Interface) è un sistema centralizzato di gestione della configurazione utilizzato in NethSecurity. Fornisce un approccio unificato alla configurazione del sistema tramite un’interfaccia a riga di comando e file di configurazione standardizzati.
Caratteristiche principali#
Configurazione centralizzata: Tutte le configurazioni di sistema sono memorizzate in un’unica posizione (
/etc/config/)Basato su database: Le configurazioni sono memorizzate in file di database strutturati
Nessuna validazione integrata: UCI esegue i comandi senza controlli di sicurezza - è richiesta conoscenza del sistema
Flusso di lavoro in tre fasi: Modifica → Commit → Riavvia/Ricarica
Supporto per eventi multipli: Le interfacce utente possono attivare più eventi di configurazione simultaneamente
Archiviazione della configurazione#
Tutte le configurazioni UCI sono memorizzate come file di database in /etc/config/. Ogni file rappresenta un diverso componente o servizio di sistema; di seguito è fornito un elenco esemplificativo non esaustivo.
Struttura dei file di configurazione#
/etc/config/
├── acme # SSL certificate management
├── adblock # Advertisement blocking
├── banip # IP banning service
├── chilli # Captive portal
├── dedalo # Network access control
├── dhcp # DHCP server configuration
├── dpi # Deep packet inspection
├── dropbear # SSH server
├── firewall # Firewall rules and zones
├── flashstart # Web filtering
├── fstab # Filesystem table
├── ipsec # IPsec VPN
├── luci # luci Web interface
├── mwan3 # Multi-WAN configuration
├── network # Network interfaces and routing
├── nginx # Web server
├── ns-ui # NethSecurity user interface
├── objects # Object definitions
├── openssl # SSL/TLS configuration
├── openvpn # OpenVPN configuration
├── qosify # Quality of Service
├── rpcd # RPC daemon
├── rsyslog # System logging
├── socat # Socket utilities
├── system # System-wide settings
├── templates # Configuration templates
├── ucitrack # UCI change tracking
├── uhttpd # HTTP server
└── users # User management
Visualizzazione della configurazione#
Mostra tutta la configurazione per un servizio specifico#
uci show <service>
Esempio:
uci show network
Output:
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.100.101'
network.lan.netmask='255.255.255.0'
network.wan=interface
network.wan.device='eth1'
network.wan.proto='dhcp'
Mostra opzione di configurazione specifica#
uci show <service>.<section>.<option>
Esempio:
uci show network.lan.ipaddr
Flusso di lavoro completo di configurazione#
Processo standard in tre fasi#
MODIFICA - Apportare modifiche alla configurazione
COMMIT - Salva le modifiche nel database di configurazione
RELOAD - Applica le modifiche al sistema in esecuzione
Esempio pratico: modifica dell’indirizzo IP LAN#
# Step 1: Modify the configuration
uci set network.lan.ipaddr='192.168.100.151'
# Step 2: Commit the changes
uci commit network
# Step 3: Restart the network service
/etc/init.d/network restart
SET - Modifica della configurazione#
Il comando uci set viene utilizzato per modificare i valori di configurazione. Le modifiche vengono memorizzate temporaneamente e devono essere confermate per diventare permanenti.
Impostare un valore di configurazione#
uci set <service>.<section>.<option>='<value>'
Esempi:
# Change IP address
uci set network.lan.ipaddr='192.168.100.151'
# Change netmask
uci set network.lan.netmask='255.255.255.0'
# Change DHCP protocol to static
uci set network.wan.proto='static'
Aggiungere una nuova sezione#
uci add <service> <section_type>
Operazioni di eliminazione#
# Delete a configuration option
uci delete <service>.<section>.<option>
# Delete an entire section
uci delete <service>.<section>
LISTS - Editing List Options#
Lists are a special type of option that can contain multiple values.
Add a value to a list#
Use the uci add_list command to add values to a list, the command creates the list if it does not already exist.
uci add_list <service>.<section>.<list_option>='<value>'
Remove a value from a list#
To remove the last value from a list, use the uci del_list, you must specify the value to be removed.
uci del_list <service>.<section>.<list_option>='<value>'
To remove all values from a list, use the uci delete command as explained in the previous section.
COMMIT - Salvataggio delle modifiche#
Le modifiche apportate con uci set non vengono applicate immediatamente al sistema. Devono essere prima confermate per renderle persistenti.
Servizio specifico del commit#
uci commit <service>
Esempio:
uci commit network
Confermare tutte le modifiche in sospeso#
uci commit
Controllare le modifiche in sospeso#
Prima di eseguire il commit, è possibile esaminare quali modifiche verranno applicate:
uci changes
Annullare le modifiche non confermate#
Se si desidera scartare le modifiche non confermate:
uci revert <service>
RELOAD - Applicazione delle modifiche#
Dopo aver effettuato il commit, è possibile applicare la nuova configurazione al sistema in esecuzione con un unico comando. Questo ricaricherà automaticamente i servizi interessati senza la necessità di riavviarli manualmente uno per uno.
Ricarica configurazione#
reload_config
Formato del file di configurazione#
I file di configurazione UCI utilizzano un formato strutturato con sezioni e opzioni:
config <section_type> '<section_name>'
option <option_name> '<value>'
list <list_name> '<value1>'
list <list_name> '<value2>'
Esempio: File di configurazione di rete#
File di configurazione di rete (/etc/config/network):
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.100.101'
option netmask '255.255.255.0'
config interface 'wan'
option device 'eth1'
option proto 'dhcp'
Migliori pratiche#
Considerazioni sulla sicurezza#
Eseguire sempre il backup delle configurazioni prima di apportare modifiche
Testare le modifiche in modo incrementale invece di apportare più modifiche contemporaneamente
Comprendere le dipendenze dei servizi prima di riavviare i servizi
Utilizzare
uci changesper esaminare le modifiche in sospesoAvere accesso alla console disponibile durante la modifica delle impostazioni di rete
Problemi comuni#
Dimenticare di eseguire il commit: le modifiche non sono persistenti fino a quando non viene effettuato il commit
Nessun riavvio dei servizi: le modifiche confermate potrebbero non essere attive fino al riavvio del servizio
Interruzione della connettività di rete: Assicurarsi sempre di disporre di metodi di accesso alternativi
Errori di sintassi: Una sintassi UCI non valida può causare la corruzione della configurazione
Risoluzione dei problemi#
Comandi comuni per il debug#
Visualizza modifiche in sospeso#
uci changes
Ripristina allo stato dell’ultimo commit#
uci revert <service>
Controllare la sintassi UCI#
uci show | head -1
Nota
Assicurarsi sempre di disporre di un accesso alternativo al sistema quando si apportano modifiche critiche alla configurazione, in particolare per quanto riguarda le modifiche relative alla rete.
Avvertimento
I comandi UCI vengono eseguiti senza validazione. Configurazioni errate possono rendere il sistema inaccessibile.