Passa al contenuto principale

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 attraverso un'interfaccia da riga di comando e file di configurazione standardizzati.

Caratteristiche Principali

  • Configurazione Centralizzata: Tutte le configurazioni di sistema sono archiviate in un'unica posizione (/etc/config/)
  • Basato su Database: Le configurazioni sono archiviate in file di database strutturati
  • Nessuna Validazione Integrata: UCI esegue i comandi senza controlli di sicurezza - richiede conoscenze di sistema
  • Flusso di Lavoro a Tre Fasi: Modifica → Commit → Riavvio/Ricaricamento
  • Capace di Multi-Evento: Le interfacce utente possono attivare simultaneamente più eventi di configurazione

Archiviazione della Configurazione

Tutte le configurazioni UCI sono archiviate come file di database in /etc/config/. Ogni file rappresenta un diverso componente di sistema o servizio, di seguito è fornito un elenco di esempi non esaustivi.

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 un'opzione di configurazione specifica

uci show <service>.<section>.<option>

Esempio:

uci show network.lan.ipaddr

Flusso di Lavoro Completo della Configurazione

Processo standard a tre fasi

  1. MODIFICA - Apportare modifiche alla configurazione
  2. COMMIT - Salvare le modifiche nel database di configurazione
  3. RICARICA - Applicare le modifiche al sistema in esecuzione

Esempio pratico: modifica dell'indirizzo IP della 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 è utilizzato per modificare i valori di configurazione. Le modifiche sono archiviate temporaneamente e devono essere committate per diventare permanenti.

Imposta 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 cancellazione

# Delete a configuration option
uci delete <service>.<section>.<option>

# Delete an entire section
uci delete <service>.<section>

LISTE - Modifica delle opzioni lista

Le liste sono un tipo speciale di opzione che possono contenere più valori.

Aggiungere un valore a una lista

Usa il comando uci add_list per aggiungere valori a una lista; il comando crea la lista se non esiste già.

uci add_list <service>.<section>.<list_option>='<value>'

Rimuovere un valore da una lista

Per rimuovere un valore specifico da una lista, usa uci del_list specificando il valore da rimuovere.

uci del_list <service>.<section>.<list_option>='<value>'

Per rimuovere tutti i valori da una lista, usa il comando uci delete come descritto nella sezione precedente.

COMMIT - Salvataggio delle modifiche

Le modifiche apportate con uci set non vengono applicate immediatamente al sistema. Devono essere committate prima per renderle permanenti.

Commit di un servizio specifico

uci commit <service>

Esempio:

uci commit network

Commit di tutte le modifiche in sospeso

uci commit

Controlla le modifiche in sospeso

Prima di committare, puoi rivedere quali modifiche verranno applicate:

uci changes

Ripristina le modifiche non committate

Se desideri scartare le modifiche non committate:

uci revert <service>

RELOAD - Applicazione delle modifiche

Dopo il commit, puoi applicare la nuova configurazione al sistema in esecuzione con un singolo comando. Questo ricaricherà automaticamente i servizi interessati senza la necessità di riavviare manualmente ognuno.

Ricarica la 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'

Best Practice

Considerazioni di Sicurezza

  1. Esegui sempre il backup delle configurazioni prima di apportare modifiche
  2. Testa le modifiche in modo incrementale piuttosto che apportare più modifiche contemporaneamente
  3. Comprendi le dipendenze del servizio prima di riavviare i servizi
  4. Usa uci changes per rivedere le modifiche in sospeso
  5. Disponi dell'accesso alla console quando apporti modifiche di rete

Errori Comuni

  • Dimenticare di committare: Le modifiche non sono permanenti fino al commit
  • Non riavviare i servizi: Le modifiche committate potrebbero non essere attive fino al riavvio del servizio
  • Interrompere la connettività di rete: Assicurati sempre di avere metodi di accesso alternativi
  • Errori di sintassi: La sintassi UCI non valida può causare corruzione della configurazione

Risoluzione dei Problemi

Comandi comuni per il debug

Visualizza le modifiche in sospeso

uci changes

Ripristina lo stato dell'ultimo commit

uci revert <service>

Verifica la sintassi UCI

uci show | head -1
note

Assicurati sempre di avere accesso alternativo al sistema quando apporti modifiche critiche alla configurazione, specialmente per le modifiche relative alla rete.

warning

I comandi UCI vengono eseguiti senza validazione. Le configurazioni non corrette possono rendere il sistema inaccessibile.