Skip to main content

Manuale Utente (Inglese)

Descrizione del componente OPKG

Il gestore di pacchetti opkg è progettato per estendere le funzionalità dei dispositivi Keenetic installando pacchetti software aggiuntivi. Utilizzando opkg, gli utenti esperti possono installare e aggiornare moduli non inclusi nel firmware di base del dispositivo, consentendo loro di configurare in modo flessibile le funzionalità del router per attività specifiche.

Questo articolo descrive i principi di utilizzo di opkg in KeeneticOS, inclusa la procedura di installazione, i metodi per la connessione di dispositivi di archiviazione esterni e le raccomandazioni per l'utilizzo dei pacchetti dal repository.

Il componente Supporto pacchetti aperti deve essere installato sul dispositivo per utilizzare i pacchetti aperti.

Il componente:

  • aggiunge i comandi di configurazione di opkg,

  • monta un filesystem USB in /opt,

  • espande i file *.ipk e *.tar.gz dalla directory /opt/install,

  • esegue gli script hook.

Configurazione

Il comando opkg disk viene utilizzato per specificare il filesystem /opt. Il filesystem può essere identificato tramite UUID o etichetta di volume. Ad esempio,

(config)> opkg disk OPT_LABEL:
Opkg::Manager: Disk is set to: OPT_LABEL.
(config)> system configuration save

Sono supportati i file system NTFS e EXT2/3. Una volta configurato il opkg disk e collegato l'archivio, il componente opkg:

  1. Monta il filesystem OPT_LABEL in /opt.

  2. Se la directory /opt/install esiste, espande tutti i file /opt/install/*.ipk in /opt. Questa decompressione dovrebbe essere completata in 120 secondi o verrà terminata per timeout.

  3. Esegue /opt/etc/initrc.

Script hook

Gli script hook si trovano in:

  • /opt/etc/initrc — script di avvio predefinito (può essere definito tramite il comando opkg initrc),

  • /opt/etc/ndm/*.d/ — gestori di eventi.

Le directory degli script e le variabili d'ambiente sono descritte nelle sezioni specifiche di seguito.

Le variabili PATH e LD_LIBRARY_PATH sono predefinite per la selezione di eseguibili e librerie dinamiche da /opt:

PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib:/lib:/usr/lib

Il prefisso /opt è sempre implicito nello shebang dello script hook. Cioè, sia #!/bin/sh che #!/opt/bin/sh eseguiranno l'interprete /opt/bin/sh.

C'è un timeout di 24 secondi su ogni script da eseguire.

Tutti gli script hook vengono avviati in un'unica coda, ovvero mentre /opt/etc/ndm/wan.d/01-one.sh è ancora in esecuzione, nessun altro script verrà avviato né da /opt/etc/ndm/wan.d/ né da /opt/etc/ndm/netfilter.d/.

initrc

Lo script di inizializzazione /opt/etc/initrc viene eseguito dopo il montaggio di /opt. Può eseguire altri script di inizializzazione, come /opt/etc/init.d/* per avviare processi in background. Se /opt/etc/initrc è mancante, il componente OPKG eseguirà /opt/etc/init.d/* in ordine alfabetico.

Ad esempio, lo script di avvio di dropbear potrebbe essere:

#!/bin/sh

if [ ! -d /opt/etc/dropbear ]; then
    mkdir /opt/etc/dropbear
fi

if [ ! -f /opt/etc/dropbear/dropbear_dss_host_key ]; then
    dropbearkey -t dss -f /opt/etc/dropbear/dropbear_dss_host_key
fi

if [ ! -f /opt/etc/dropbear/dropbear_rsa_host_key ]; then
    dropbearkey -t rsa -f /opt/etc/dropbear/dropbear_rsa_host_key
fi

dropbear

Per renderlo compatibile con i sistemi di inizializzazione di tipo Sys-V, gli script /opt/etc/initrc e /opt/etc/init.d vengono chiamati con l'argomento della riga di comando start. Quando l'utente desidera espellere lo storage /opt, /opt/etc/initrc viene chiamato con l'argomento stop.

ndm/wan.d

Gli script di eventi /opt/etc/ndm/wan.d/ vengono eseguiti quando è disponibile una nuova connessione a Internet.

1° Parametro

Descrizione

start

Connessione Internet stabilita

stop

Connessione Internet terminata

Variabile

Descrizione

$interface

Interfaccia WAN, come ppp0

$address

Indirizzo IP dell'interfaccia

$mask

Maschera di sottorete dell'interfaccia

$gateway

Indirizzo IP del gateway WAN

Quando la connessione a Internet non è attiva, gli script wan.d vengono eseguiti con tutte le variabili sopra non definite.

Se la connessione a Internet è stata stabilita prima di montare /opt, gli script wan.d vengono eseguiti subito dopo initrc.

ndm/user.d

Gli script /opt/etc/ndm/user.d vengono eseguiti quando /etc/passwd e /etc/group vengono aggiornati dal sistema principale. Aggiungere script a user.d se è necessario modificare /etc/passwd o /etc/group. In caso contrario, qualsiasi modifica a questi file verrà sovrascritta.

Variabile

Descrizione

$user

Nome utente con accesso OptWare, se aggiunto tramite il sistema principale

Quando un utente viene eliminato, gli script user.d vengono eseguiti con un $user non definito.

Ad esempio, è possibile creare directory home utilizzando l'hook user.d come segue:

#!/bin/sh

home=/opt/home

[ -z "$user" ] && exit 0       # $user is undefined
[ -d $home/$user ] && exit 0   # home already exists

if mkdir -p $home/$user; then
    chmod 0755 $home
    chmod 0700 $home/$user
    chown $user $home/$user
fi
ndm/netfilter.d

Gli script /opt/etc/ndm/netfilter.d vengono eseguiti quando il sistema riscrive una tabella netfilter. Gli hook netfilter.d possono modificare la tabella usando iptables. Le variabili $table e $type devono essere controllate per evitare la duplicazione delle regole.

Variabile

Descrizione

$type

protocollo netfilter, come iptables per IPv4 o ip6tables per IPv6

$table

tabella netfilter, come filter, nat o mangle

Ad esempio, è possibile aggiungere alcune regole mangle come segue:

#!/bin/sh

[ "$type" == "ip6tables" ] && exit 0   # check the protocol type in backward-compatible way
[ "$table" != "mangle" ] && exit 0   # check the table name

iptables -A PREROUTING -i br0 -t mangle -p tcp --dport 22 -j MARK --set-mark 1
iptables -A PREROUTING -i br0 -t mangle -p tcp --dport 23 -j MARK --set-mark 1
ndm/usb.d

Gli script /opt/etc/ndm/usb.d vengono eseguiti quando un dongle USB è collegato o scollegato.

1° Parametro

Descrizione

start

Dispositivo USB collegato

stop

Dispositivo USB scollegato

Le seguenti variabili d'ambiente sono definite per consentire di identificare il dongle.

Variabile

Descrizione

Esempio

$usb_device

Percorso del dispositivo /proc/bus/usb

/proc/bus/usb/002/001

$usb_devname

Nome del dispositivo in /proc/bus/usb

bus/usb/002/001

$usb_devpath

Percorso in sysfs

/devices/platform/xhci-hcd/usb2

$usb_model

ID modello USB

0003

$usb_port

Numero porta USB

2

$usb_vendor

ID fornitore USB

1d6b

Qualsiasi dispositivo collegato prima dell'esecuzione dello script di inizializzazione opkg attiverà questi script di richiamo pianificati per essere eseguiti all'esecuzione dello script di inizializzazione OPKG.

ndm/fs.d

Gli script /opt/etc/ndm/fs.d vengono chiamati quando il filesystem viene montato o si prepara a essere smontato o espulso inaspettatamente.

1° Parametro

Descrizione

start

Il filesystem è montato

stop

Il filesystem si sta preparando per essere smontato o espulso inaspettatamente

Il tipo di filesystem può essere uno qualsiasi tra: VFAT, EXFAT, NTFS, EXT2, EXT3, EXT4 o HFSP.

Variabile

Descrizione

Esempio

$type

Tipo di filesystem

EXT2

$name

ID del filesystem

583a7335-6ef8-460b-a4c1-43a2e5c70e71:

$label

Etichetta del filesystem / partizione

SecondPart

$directory

Directory di montaggio del filesystem (percorso assoluto)

/tmp/mnt/SecondPart

Qualsiasi filesystem montato prima dell'esecuzione dello script di inizializzazione OPKG attiverà questi script di richiamo, la cui esecuzione è pianificata all'esecuzione dello script di inizializzazione OPKG.

ndm/time.d

Gli script /opt/etc/ndm/time.d vengono chiamati quando l'ora di sistema viene modificata (sincronizzata tramite NTP).

ndm/button.d

Gli script /opt/etc/ndm/button.d vengono chiamati quando è stato premuto il pulsante FN e/o i pulsanti WPS.

Variabile

Descrizione

Esempio

$button

Quale pulsante è stato premuto

WLAN

$action

Tipo di clic

clic, doppio clic o pressione prolungata

È necessario prima configurare alcuni dettagli dall'interfaccia web.

ndm/schedule.d

Gli script /opt/etc/ndm/schedule.d vengono chiamati con eventi pianificati (se le pianificazioni sono definite tramite CLI).

1° Parametro

Descrizione

start

Inizio dell'attività pianificata

stop

Fine dell'attività pianificata

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$schedule

Nome della pianificazione

$elapsed

Tempo (in secondi) impiegato per l'azione

ndm/neighbour.d

Gli script /opt/etc/ndm/neighbour.d vengono chiamati con determinati eventi dei dispositivi vicini della rete. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID univoco del dispositivo vicino dall'avvio

$action

Azione del dispositivo vicino (new, del o update)

$update

Tipo di aggiornamento (se presente): ip6list per aggiornare l'elenco di indirizzi IPv6 per dispositivo vicino, wireless per cambiare tipo di supporto (ad es. roaming tra punti di accesso), mac (se il MAC reale viene modificato, ad es. su ripetitori con MAT), dhcp (se le informazioni DHCP sono state aggiornate) e none

$address

Famiglia di indirizzi - ipv4 o ipv6

ndm/ifcreated.d

Gli script /opt/etc/ndm/ifcreated.d vengono chiamati quando viene creata un'interfaccia NDM. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

ndm/ifdestroyed.d

Gli script /opt/etc/ndm/ifdestroyed.d vengono chiamati quando un'interfaccia NDM viene rimossa. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

ndm/ifipchanged.d

Gli script /opt/etc/ndm/ifipchanged.d vengono chiamati quando l'indirizzo IPv4 o la sottorete di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

$address

Nuovo indirizzo IPv4

$mask

Nuova maschera di rete IPv4

$link

Stato corrente del collegamento dell'interfaccia, può essere up o down

$connected

Stato corrente della connessione dell'interfaccia, può essere yes o no

$up

Stato corrente dell'interfaccia, può essere up o down

$global

Priorità globale corrente dell'interfaccia, può essere zero per le interfacce non globali e > 0 quando l'interfaccia è globale

ndm/ifip6changed.d (dalla 4.0)

Gli script /opt/etc/ndm/ifip6changed.d vengono chiamati quando l'indirizzo IPv6 o la sottorete di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

$address

Indirizzo IPv6

$mask

Maschera di rete IPv6

$link

Stato corrente del collegamento dell'interfaccia, può essere up o down

$connected

Stato corrente della connessione dell'interfaccia, può essere yes o no

$up

Stato corrente dell'interfaccia, può essere up o down

$action

Azione di modifica corrente, può essere add o delete

$global

Priorità globale corrente dell'interfaccia, può essere zero per le interfacce non globali e > 0 quando l'interfaccia è globale

ndm/ifstatechanged.d (obsoleto dalla 4.0, mantenuto solo per retrocompatibilità)

Gli script /opt/etc/ndm/ifstatechanged.d vengono chiamati quando lo stato di un'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

$link

Stato corrente del collegamento dell'interfaccia, può essere up o down

$connected

Stato corrente della connessione dell'interfaccia, può essere yes o no

$up

Stato corrente dell'interfaccia, può essere up o down

$change

Origine delle modifiche, può essere link, connected, up o config

ndm/iflayerchanged.d (nuovo e primario dalla 4.0)

Gli script /opt/etc/ndm/iflayerchanged.d vengono chiamati quando lo stato di un livello dell'interfaccia NDM viene modificato. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$id

ID interfaccia NDM

$system_name

Nome interfaccia specifico per Linux

$layer

Livello dell'interfaccia, può essere conf (amministrativo dalla configurazione), link (ethernet L2 / PPP), ipv4 (accesso IPv4 ottenuto/perso), ipv6 (accesso IPv6 ottenuto/perso), ctrl (cambio di stato 802.1x o WebCaller)

$level

Stato corrente del livello dell'interfaccia, può essere running, detached (disconnessione USB), disabled, pending, running

ndm/sms.d

Gli script /opt/etc/ndm/sms.d vengono chiamati quando si riceve un SMS sull'interfaccia UsbQmi. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$interface_id

ID interfaccia NDM

$message_id

ID SMS

Il contenuto effettivo dell'SMS può essere recuperato tramite ci/rci (comandi ndmq / jq) utilizzando l'interfaccia e gli ID del messaggio forniti.

ndm/pptp_vpn_up.d

Gli script /opt/etc/ndm/pptp_vpn_up.d vengono chiamati quando un utente si connette al server VPN PPTP. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$iface

Interfaccia di sistema (in genere vpn*)

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/pptp_vpn_down.d

Gli script /opt/etc/ndm/pptp_vpn_down.d vengono chiamati quando un utente si disconnette dal server VPN PPTP. Gli script vengono richiamati con il primo parametro ($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$iface

Interfaccia di sistema (tipicamente sstp*)

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/l2tp_ipsec_vpn_up.d

Gli script /opt/etc/ndm/l2tp_ipsec_vpn_up.d vengono richiamati quando un utente si connette al server VPN L2TP/IPsec. Gli script vengono richiamati con il primo parametro($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$iface

Interfaccia di sistema (tipicamente l2tp*)

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/l2tp_ipsec_vpn_down.d

Gli script /opt/etc/ndm/l2tp_ipsec_vpn_down.d vengono richiamati quando un utente viene disconnesso dal server VPN L2TP/IPsec. Gli script vengono richiamati con il primo parametro($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$iface

Interfaccia di sistema (tipicamente l2tp*)

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/vip_vpn_up.d

Gli script /opt/etc/ndm/vip_vpn_up.d vengono richiamati quando un utente si connette al server VPN IP virtuale. Gli script vengono richiamati con il primo parametro($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/vip_vpn_down.d

Gli script /opt/etc/ndm/vip_vpn_down.d vengono richiamati quando un utente viene disconnesso dal server VPN IP virtuale. Gli script vengono richiamati con il primo parametro($1) == hook.

Le seguenti variabili d'ambiente sono definite per consentire di identificare i dettagli dell'attività.

Variabile

Descrizione

$ndm_opkg_id

Nome utente

$remote

Indirizzo IPv4 esterno del peer remoto

$local

Indirizzo IPv4 del peer remoto all'interno del tunnel

ndm/openvpn-*.d

Gli script /opt/etc/ndm/openvpn-*.d/ vengono richiamati quando OpenVPN in NDMS esegue uno script hook (2.10+, solo quando ndm-mod-openvpn è installato e configurato).

Elenco di script:

  • /opt/etc/ndm/openvpn-up.d/

  • /opt/etc/ndm/openvpn-tls-verify.d/

  • /opt/etc/ndm/openvpn-ipchange.d/

  • /opt/etc/ndm/openvpn-client-connect.d/

  • /opt/etc/ndm/openvpn-route-up.d/

  • /opt/etc/ndm/openvpn-client-disconnect.d/

  • /opt/etc/ndm/openvpn-down.d/

  • /opt/etc/ndm/openvpn-learn-address.d/

I significati degli script devono essere verificati nella pagina man ufficiale di OpenVPN (sezione SCRIPTING AND ENVIRONMENTAL VARIABLES).

Tutte le variabili d'ambiente impostate da OpenVPN stesso (descritte qui) vengono conservate così come sono e passate agli script hook OPKG. Gli script vengono richiamati con il primo parametro($1) == hook. Tutti gli argomenti dell'esecuzione originale dell'hook vengono passati come variabili d'ambiente aggiuntive.

Variabile

Descrizione

$ndm_opkg_id

ID NDMS dell'interfaccia, ad esempio, OpenVPN0

$ndm_opkg_argc

Numero di argomenti nella chiamata dell'hook originale

$ndm_opkg_arg_N

Valore dell'argomento N, dove N è un numero compreso tra [0..$ndm_opkg_argc]