Skip to main content

Kullanım Kılavuzu

OPKG bileşen açıklaması

opkg paket yöneticisi, ek yazılım paketleri yükleyerek Keenetic cihazlarının yeteneklerini genişletmek için tasarlanmıştır. Gelişmiş kullanıcılar, opkg kullanarak cihazın temel yazılımına dahil olmayan modülleri yükleyebilir ve güncelleyebilir, bu da Router'ın işlevselliğini belirli görevler için esnek bir şekilde yapılandırmalarına olanak tanır.

Bu makalede, KeeneticOS cihazlarında opkg kullanımının ilkeleri, kurulum prosedürü, harici depolamayı bağlama yöntemleri ve depodan paket kullanma önerileri açıklanmaktadır.

Açık paketleri kullanmak için Açık Paket desteği bileşeninin cihaza yüklenmesi gerekir.

Bu bileşen şunları yapacaktır:

  • opkg yapılandırma komutları ekleme,

  • bir USB dosya sistemini /opt dizinine bağlama,

  • /opt/install dizininden *.ipk ve *.tar.gz dosyalarını çıkarma,

  • hook betiklerini çalıştırma.

Yapılandırma

opkg disk komutu, /opt dosya sistemini belirtmek için kullanılır. Dosya sistemi UUID veya bir birim etiketi ile tanımlanabilir. Örneğin,

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

NTFS ve EXT2/3 dosya sistemleri desteklenir. opkg disk yapılandırıldıktan ve depolama birimi takıldıktan sonra, opkg bileşeni şunları yapacaktır:

  1. OPT_LABEL dosya sistemini /opt dizinine bağlar.

  2. /opt/install dizini mevcutsa, tüm /opt/install/*.ipk dosyalarını /opt dizinine çıkarır. Bu çıkarma işlemi 120 saniye içinde bitmelidir, aksi takdirde zaman aşımı nedeniyle sonlandırılır.

  3. /opt/etc/initrc komutunu çalıştırır.

Hook Betikleri

Hook betikleri şu konumlardadır:

  • /opt/etc/initrc — varsayılan başlangıç betiği (opkg initrc komutu ile tanımlanabilir),

  • /opt/etc/ndm/*.d/ — olay işleyicileri.

Betik dizinleri ve ortam değişkenleri aşağıdaki belirli bölümlerde açıklanmıştır.

PATH ve LD_LIBRARY_PATH değişkenleri, çalıştırılabilir dosyaların ve dinamik kütüphanelerin /opt dizininden seçilmesi için önceden tanımlanmıştır:

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

/opt öneki, hook betiği shebang'inde her zaman zımnen bulunur. Yani, hem #!/bin/sh hem de #!/opt/bin/sh, /opt/bin/sh yorumlayıcısını çalıştıracaktır.

Çalıştırılacak her betik için 24 saniyelik bir zaman aşımı vardır.

Tüm hook betikleri tek bir kuyrukta başlatılır, yani /opt/etc/ndm/wan.d/01-one.sh hala çalışırken, ne /opt/etc/ndm/wan.d/ dizininden ne de /opt/etc/ndm/netfilter.d/ dizininden başka bir betik başlatılmayacaktır.

initrc

/opt/etc/initrc başlatma betiği, /opt bağlandıktan sonra çalıştırılır. Arka plan işlemlerini başlatmak için /opt/etc/init.d/* gibi başka başlatma betiklerini çalıştırabilir. /opt/etc/initrc eksikse, OPKG bileşeni /opt/etc/init.d/* betiğini alfabetik sırayla çalıştırır.

Örneğin, dropbear başlangıç betiği şöyle olabilir:

#!/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

Sys-V benzeri başlatma sistemleriyle uyumlu hale getirmek için, /opt/etc/initrc ve /opt/etc/init.d betikleri start komut satırı argümanı ile çağrılır. Kullanıcı /opt depolama birimini çıkarmak istediğinde, /opt/etc/initrc stop argümanı ile çağrılır.

ndm/wan.d

/opt/etc/ndm/wan.d/ olay betikleri, yeni bir İnternet bağlantısı kurulduğunda çalıştırılır.

1. Parametre

Açıklama

start

İnternet bağlantısı kuruldu

stop

İnternet bağlantısı sonlandırıldı

Değişken

Açıklama

$interface

WAN arayüzü, örneğin ppp0

$address

Arayüz IP adresi

$mask

Arayüz alt ağ maskesi

$gateway

WAN ağ geçidi IP adresi

İnternet bağlantısı kesildiğinde, wan.d betikleri yukarıdaki tüm değişkenler tanımsız olarak çalıştırılır.

/opt bağlanmadan önce internet bağlantısı kurulmuşsa, wan.d betikleri initrc'den hemen sonra çalıştırılır.

ndm/user.d

/opt/etc/ndm/user.d betikleri, çekirdek sistem tarafından /etc/passwd ve /etc/group yenilendiğinde çalıştırılır. /etc/passwd veya /etc/group dosyalarını değiştirmeniz gerekiyorsa user.d içine betikler ekleyin. Aksi takdirde, bu dosyalardaki tüm değişikliklerin üzerine yazılır.

Değişken

Açıklama

$user

Çekirdek sistem üzerinden eklenirse OptWare erişimine sahip kullanıcı adı

Bir kullanıcı silindiğinde, user.d betikleri tanımsız bir $user ile çalıştırılır.

Örneğin, user.d hook'unu kullanarak ev dizinlerini aşağıdaki gibi oluşturabilirsiniz:

#!/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

/opt/etc/ndm/netfilter.d betikleri, sistem bir netfilter tablosunu yeniden yazdığında çalıştırılır. netfilter.d hook'ları iptables kullanarak tabloyu değiştirebilir. Kural tekrarını önlemek için $table ve $type değişkenleri kontrol edilmelidir.

Değişken

Açıklama

$type

netfilter protokolü, örneğin IPv4 için iptables veya IPv6 için ip6tables

$table

netfilter tablosu, örneğin filter, nat veya mangle

Örneğin, aşağıdaki gibi bazı mangle kuralları ekleyebilirsiniz:

#!/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

/opt/etc/ndm/usb.d betikleri, bir USB cihazı takıldığında veya çıkarıldığında çalıştırılır.

1. Parametre

Açıklama

start

USB cihazı takıldı

stop

USB cihazı çıkarıldı

Aşağıdaki ortam değişkenleri, cihazı tanımlamanıza olanak sağlamak için tanımlanmıştır.

Değişken

Açıklama

Örnek

$usb_device

/proc/bus/usb cihazının yolu

/proc/bus/usb/002/001

$usb_devname

Cihazın /proc/bus/usb içindeki adı

bus/usb/002/001

$usb_devpath

sysfs içindeki yol

/devices/platform/xhci-hcd/usb2

$usb_model

USB model Kimliği

0003

$usb_port

USB portu numarası

2

$usb_vendor

USB üretici Kimliği

1d6b

opkg başlatma betiği çalıştırılmadan önce bağlanan herhangi bir cihaz, OPKG başlatma betiği çalıştırıldığında çalıştırılmak üzere zamanlanmış bu geri arama betiklerini tetikleyecektir.

ndm/fs.d

/opt/etc/ndm/fs.d betikleri, dosya sistemi bağlandığında veya çıkarılmaya hazırlanırken ya da beklenmedik bir şekilde çıkarıldığında çağrılır.

1. Parametre

Açıklama

start

Dosya sistemi bağlandı

stop

Dosya sistemi çıkarılmaya hazırlanıyor veya beklenmedik bir şekilde çıkarıldı

Dosya sistemi türü şunlardan herhangi biri olabilir: VFAT, EXFAT, NTFS, EXT2, EXT3, EXT4 veya HFSP.

Değişken

Açıklama

Örnek

$type

Dosya sistemi türü

EXT2

$name

Dosya sistemi Kimliği

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

$label

Dosya sistemi / bölüm etiketi

SecondPart

$directory

Dosya sistemi bağlama dizini (mutlak yol)

/tmp/mnt/SecondPart

OPKG başlatma betiği çalıştırılmadan önce bağlanan herhangi bir dosya sistemi, OPKG başlatma betiği çalıştırıldığında çalıştırılmak üzere zamanlanmış bu geri arama betiklerini tetikleyecektir.

ndm/time.d

/opt/etc/ndm/time.d betikleri, sistem saati değiştirildiğinde (NTP ile senkronize edildiğinde) çağrılır.

ndm/button.d

/opt/etc/ndm/button.d betikleri, FN Düğmesine ve/veya WPS Düğmesine/Düğmelerine basıldığında çağrılır.

Değişken

Açıklama

Örnek

$button

Hangi düğmeye basıldığı

WLAN

$action

Tıklama türü

tıklama, çift tıklama veya basılı tutma

Öncelikle web arayüzünden bazı ayrıntıları yapılandırmanız gerekir.

ndm/schedule.d

/opt/etc/ndm/schedule.d betikleri, zamanlanmış olaylarla (zamanlamalar CLI aracılığıyla tanımlanmışsa) çağrılır.

1. Parametre

Açıklama

start

Zamanlanmış görevin başlangıcı

stop

Zamanlanmış görevin sonu

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$schedule

Zamanlamanın adı

$elapsed

Eylem için geçen süre (saniye cinsinden)

ndm/neighbour.d

/opt/etc/ndm/neighbour.d betikleri, belirli ağ komşusu olaylarında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

Açılıştan bu yana komşunun benzersiz kimliği

$action

Komşu eylemi(new, del veya update)

$update

Güncelleme türü (varsa): Komşu başına IPv6 adresleri listesini güncellemek için ip6list, ortam türünü değiştirmek için wireless (ör. erişim noktaları arasında dolaşım), mac (gerçek MAC değişirse, ör. MAT'li tekrarlayıcılarda), dhcp (DHCP bilgileri güncellenirse) ve hiçbiri

$address

Adres ailesi - ipv4 veya ipv6

ndm/ifcreated.d

/opt/etc/ndm/ifcreated.d betikleri, bir NDM arayüzü oluşturulduğunda çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

ndm/ifdestroyed.d

/opt/etc/ndm/ifdestroyed.d betikleri, bir NDM arayüzü kaldırıldığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

ndm/ifipchanged.d

/opt/etc/ndm/ifipchanged.d betikleri, bir NDM arayüzünün IPv4 adresi veya alt ağı değiştirildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

$address

Yeni IPv4 adresi

$mask

Yeni IPv4 ağ maskesi

$link

Arayüzün mevcut bağlantı durumu, up veya down olabilir

$connected

Arayüzün mevcut bağlantı durumu, yes veya no olabilir

$up

Arayüzün mevcut durumu, up veya down olabilir

$global

Arayüzün mevcut genel önceliği, genel olmayan arayüzler için sıfır ve arayüz genel olduğunda > 0 olabilir

ndm/ifip6changed.d (4.0 sürümünden itibaren)

/opt/etc/ndm/ifip6changed.d betikleri, bir NDM arayüzünün IPv6 adresi veya alt ağı değiştirildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

$address

IPv6 adresi

$mask

IPv6 ağ maskesi

$link

Arayüzün mevcut bağlantı durumu, up veya down olabilir

$connected

Arayüzün mevcut bağlantı durumu, yes veya no olabilir

$up

Arayüzün mevcut durumu, up veya down olabilir

$action

Mevcut değişiklik eylemi, add veya delete olabilir

$global

Arayüzün mevcut genel önceliği, genel olmayan arayüzler için sıfır ve arayüz genel olduğunda > 0 olabilir

ndm/ifstatechanged.d (4.0 sürümünden beri kullanımdan kaldırılmıştır, yalnızca geriye dönük uyumluluk için tutulur)

/opt/etc/ndm/ifstatechanged.d betikleri, bir NDM arayüzünün durumu değiştiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

$link

Arayüzün mevcut bağlantı durumu, up veya down olabilir

$connected

Arayüzün mevcut bağlantı durumu, yes veya no olabilir

$up

Arayüzün mevcut durumu, up veya down olabilir

$change

Değişikliklerin kaynağı, link, connected, up veya config olabilir

ndm/iflayerchanged.d (4.0 sürümünden itibaren yeni ve birincil)

/opt/etc/ndm/iflayerchanged.d betikleri, bir NDM arayüz katmanı durumunun durumu değiştiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$id

NDM arayüz Kimliği

$system_name

Linux'e özgü arayüz adı

$layer

Arayüz katmanı, conf (yapılandırmadan yönetimsel), link (ethernet L2 / PPP), ipv4 (IPv4 erişimi kazanıldı/kaybedildi), ipv6 (IPv6 erişimi kazanıldı/kaybedildi), ctrl (802.1x veya WebCaller durum değişikliği) olabilir

$level

Arayüz katmanı mevcut durumu, running, detached (USB bağlantısı kesildi), disabled, pending, running olabilir

ndm/sms.d

/opt/etc/ndm/sms.d betikleri, UsbQmi arayüzünde SMS alındığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$interface_id

NDM arayüz Kimliği

$message_id

SMS Kimliği

SMS'in gerçek içeriği, sağlanan arayüz ve mesaj kimlikleri kullanılarak ci/rci (ndmq / jq komutları) aracılığıyla alınabilir.

ndm/pptp_vpn_up.d

/opt/etc/ndm/pptp_vpn_up.d betikleri, bir kullanıcı PPTP VPN sunucusuna bağlandığında çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$iface

Sistem arayüzü (genellikle vpn*)

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/pptp_vpn_down.d

/opt/etc/ndm/pptp_vpn_down.d betikleri, bir kullanıcının PPTP VPN sunucusuyla bağlantısı kesildiğinde çağrılır. Betikler, birinci parametre ($1) == hook olacak şekilde çağrılır.

Görevin ayrıntılarını belirlemenizi sağlamak için aşağıdaki ortam değişkenleri tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$iface

Sistem arayüzü (genellikle sstp*)

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/l2tp_ipsec_vpn_up.d

/opt/etc/ndm/l2tp_ipsec_vpn_up.d betikleri, bir kullanıcı L2TP/IPsec VPN sunucusuna bağlandığında çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.

Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$iface

Sistem arayüzü (genellikle l2tp*)

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/l2tp_ipsec_vpn_down.d

/opt/etc/ndm/l2tp_ipsec_vpn_down.d betikleri, bir kullanıcının L2TP/IPsec VPN sunucusundan bağlantısı kesildiğinde çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.

Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$iface

Sistem arayüzü (genellikle l2tp*)

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/vip_vpn_up.d

/opt/etc/ndm/vip_vpn_up.d betikleri, bir kullanıcı Sanal IP VPN sunucusuna bağlandığında çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.

Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/vip_vpn_down.d

/opt/etc/ndm/vip_vpn_down.d betikleri, bir kullanıcının Sanal IP VPN sunucusundan bağlantısı kesildiğinde çağrılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır.

Aşağıdaki ortam değişkenleri, görev ayrıntılarını belirlemenizi sağlamak için tanımlanmıştır.

Değişken

Açıklama

$ndm_opkg_id

Kullanıcı adı

$remote

Uzak eşin harici IPv4 adresi

$local

Tünel içindeki uzak eşin IPv4 adresi

ndm/openvpn-*.d

/opt/etc/ndm/openvpn-*.d/ betikleri, NDMS'deki OpenVPN bir hook betiği çalıştırdığında çağrılır (2.10+, yalnızca ndm-mod-openvpn kurulu ve yapılandırılmış olduğunda).

Betik listesi:

  • /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/

Betiklerin anlamları resmi OpenVPN man sayfasında (SCRIPTING AND ENVIRONMENTAL VARIABLES bölümü) kontrol edilmelidir.

OpenVPN'in kendisi tarafından ayarlanan tüm ortam değişkenleri (burada açıklanmıştır) olduğu gibi korunur ve OPKG hook betiklerine aktarılır. Betikler, hook == olan ilk parametreyle ($1) çağrılır. Orijinal hook yürütmesindeki tüm argümanlar ek ortam değişkenleri olarak aktarılır.

Değişken

Açıklama

$ndm_opkg_id

Arayüzün NDMS kimliği, örneğin, OpenVPN0

$ndm_opkg_argc

Orijinal hook çağrısındaki argümanların sayısı

$ndm_opkg_arg_N

N argümanının değeri; burada N, [0..$ndm_opkg_argc] aralığında bir sayıdır