Verwalten von Anwendungen von Drittanbietern
Verwenden von Intercept-Bibliotheken
Junos OS Evolved kann Anwendungen von Drittanbietern ausführen, da es unter nativem Linux ausgeführt wird. Es gibt einige Unterschiede zwischen der Art und Weise, wie Linux angeforderte Netzwerktopologieinformationen wie Schnittstellen- und Routendaten anzeigt, und der Art und Weise, wie Junos OS diese Informationen anzeigt. Die CLI wurde entwickelt, um diese Unterschiede zu überwinden. In der Regel beziehen Anwendungen von Drittanbietern, die unter nativem Linux ausgeführt werden, diese Informationen mithilfe von Shell-Befehlen direkt von den nativen Linux-Quellen.
Junos OS Evolved verwendet einen Intercept-Mechanismus, der Shell-Anfragen nach Netzwerktopologieinformationen an einen Bereich umleitet, in dem die Informationen von Junos OS abgerufen werden können. Dieser Intercept-Mechanismus wird durch Intercept-Bibliotheken und erreicht, libsi.so
libnli.so
die Sie vorab laden. Nachdem Sie die Intercept-Bibliothek vorab geladen haben, werden bestimmte Arten von Anforderungen abgefangen und zeigen Junos OS-Informationen an.
Die Intercept-Bibliotheken sind optional. Sie werden nur benötigt, wenn die Anwendung die in Tabelle 1 genannten APIs erfordert:
API |
Beschreibung |
---|---|
Paket-E/A- und Linux-Socket-APIs |
Möglichkeit zum Senden und Empfangen von Paketen über Verwaltungs- und/oder Datenschnittstellen. Standard-libc, wie z. B. senden, empfangen, hören. |
Möglichkeit zur Verwendung von rtnetlink zur Abfrage von Netzwerkzuständen wie Schnittstellen und Routen. |
|
Möglichkeit zur Konfiguration von Netzwerkgeräten. |
|
Möglichkeit zur Abfrage von Kernel-Datenstrukturen unter Verwendung von Standardschnittstellen, die vom Linux-Kernel bereitgestellt werden. |
|
Junos-APIs |
Möglichkeit des Zugriffs auf Juniper North Bound APIs – NetConf/JET/Telemetry. |
Weitere Informationen zu den Northbound-APIs von Juniper finden Sie unter:
Junos OS Evolved Version 20.1R1 unterstützt die folgenden Funktionen:
-
Verwenden Sie die Konfiguration
set system netlink-async-mode
, um NETLINK_ROUTE asynchrone Benachrichtigungen zu aktivieren. Diese Funktion ist standardmäßig deaktiviert. Verwenden Sie diese Optionshow nsld mode
, um den aktuellen asynchronen Netlink-Modus anzuzeigen. -
SIOCETHTOOL
ioctl, das von anderen Anwendungen verwendet werden kann. -
Multipath-Next-Hop-Routeninformationen über Netlink-Routenattribute.
- Beispiel für einen vorinstallierten Linux-Befehl
- Übersetzung von Schnittstellennamen
- Vorsichtsmaßnahmen für die Abfangfunktion
Beispiel für einen vorinstallierten Linux-Befehl
Ein Beispiel für die Funktionsweise der preload-Direktive folgt mit dem Befehl ifconfig
, der Schnittstellen anzeigt.
Wenn Sie den ifconfig
Befehl mit der Intercept-Bibliothek vorab laden, werden Junos OS-Schnittstelleninformationen zurückgegeben. Beachten Sie, dass die Intercept-Bibliothek nur logische Schnittstellen übersetzt. Da in diesem Beispiel nur logische Schnittstellen für lo0 und re0:mgmt-0.0 vorhanden sind, werden in der Ausgabe nur diese beiden Schnittstellen für den vorab geladenen ifconfig
Befehl angezeigt.
[vrf:none] user@host_RE0:~# LD_PRELOAD=libnli.so ifconfig lo0_0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet addr:128.102.224.244 Mask:255.255.255.255 inet6 addr: abcd::128:102:224:244/128 Scope:Global inet6 addr: fe80::5668:a6f0:6e:b79/128 Scope:Link UP LOOPBACK RUNNING MTU:65535 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) mgmt-0-00-0000 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 inet addr:10.102.224.244 Bcast:10.102.239.255 Mask:255.255.240.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1103938 errors:0 dropped:0 overruns:0 frame:0 TX packets:1905 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:85166899 (81.2 MiB) TX bytes:243066 (237.3 KiB)
Sie können die gleichen Ergebnisse erzielen, indem Sie jbash ausführen, eine Shell, die mit Junos OS Evolved bereitgestellt wird und libsi.so
standardmäßig vorgeladen libnli.so
wird.
Verwenden Sie jbash nur, um die Netzwerkstatusinformationen abzurufen. Verwenden Sie jbash nicht als Standard-Shell.
Wenn Sie den Befehl absetzen, ohne ihn vorab mit der Intercept-Bibliothek zu laden, stammt die angezeigte Ausgabe von Linux. Beachten Sie, dass die folgende Ausgabe länger ist als die von Junos OS. Linux unterscheidet nicht zwischen physischen und logischen Schnittstellen, wie dies bei der Junos CLI der Fall ist.
[vrf:none] user@host_RE0:~# ifconfig -a eth0 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1608443 errors:44 dropped:0 overruns:0 frame:44 TX packets:2652 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:150837081 (143.8 MiB) TX bytes:341675 (333.6 KiB) eth1 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:7e UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:418 (418.0 B) eth2 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:83 UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:907046 errors:0 dropped:0 overruns:0 frame:0 TX packets:926156 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:70342248 (67.0 MiB) TX bytes:119965968 (114.4 MiB) eth3 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:8d BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth4 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:9d UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1607983 errors:44 dropped:0 overruns:0 frame:44 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:150335380 (143.3 MiB) TX bytes:0 (0.0 B) ingvrf Link encap:Ethernet HWaddr 12:6e:39:d6:5a:64 UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) iri Link encap:Ethernet HWaddr 4e:a2:93:c0:ac:67 inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:2199380 errors:0 dropped:0 overruns:0 frame:0 TX packets:2216726 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:674308465 (643.0 MiB) TX bytes:735412009 (701.3 MiB) jtd0 Link encap:Ethernet HWaddr 06:50:4e:19:c6:c5 inet6 addr: fe80::450:4eff:fe19:c6c5/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:210 (210.0 B) jtdrop Link encap:Ethernet HWaddr ba:d0:d0:72:7e:eb inet6 addr: fe80::b8d0:d0ff:fe72:7eeb/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:210 (210.0 B) jtdv0 Link encap:Ethernet HWaddr 56:2a:0c:39:f1:5d inet6 addr: fe80::542a:cff:fe39:f15d/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:280 (280.0 B) jtdv50 Link encap:Ethernet HWaddr 56:5e:67:d6:e2:d2 inet6 addr: fe80::545e:67ff:fed6:e2d2/64 Scope:Link UP BROADCAST RUNNING NOARP MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:280 (280.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:32 errors:0 dropped:0 overruns:0 frame:0 TX packets:32 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:2144 (2.0 KiB) TX bytes:2144 (2.0 KiB) mgmt_junos Link encap:Ethernet HWaddr 6a:75:4b:20:d0:4e inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) sit0 Link encap:UNSPEC HWaddr 00-00-00-00-30-30-30-00-00-00-00-00-00-00-00-00 NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) tunl0 Link encap:IPIP Tunnel HWaddr NOARP MTU:1480 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vcb Link encap:Ethernet HWaddr 56:68:a6:6e:0b:83 inet addr:176.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.252 UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:907043 errors:0 dropped:0 overruns:0 frame:0 TX packets:924347 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:57643466 (54.9 MiB) TX bytes:118743890 (113.2 MiB) vfb Link encap:Ethernet HWaddr 56:68:a6:6e:0b:7e UP BROADCAST RUNNING PROMISC MULTICAST MTU:9600 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vib Link encap:Ethernet HWaddr 3e:fb:67:87:16:1a inet addr:128.0.0.4 Bcast:0.0.0.0 Mask:255.0.0.0 inet6 addr: fe80::3cfb:67ff:fe87:161a/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:74 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:3420 (3.3 KiB) vmb0 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:79 inet addr:10.102.224.244 Bcast:0.0.0.0 Mask:255.255.240.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1602504 errors:0 dropped:0 overruns:0 frame:0 TX packets:2645 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:124666750 (118.8 MiB) TX bytes:340201 (332.2 KiB) vmb1 Link encap:Ethernet HWaddr 56:68:a6:6e:0b:9d UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1602784 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:124008554 (118.2 MiB) TX bytes:0 (0.0 B) vrf0 Link encap:Ethernet HWaddr ca:12:9e:40:a8:01 inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:124413 errors:0 dropped:0 overruns:0 frame:0 TX packets:2597 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:19087613 (18.2 MiB) TX bytes:338185 (330.2 KiB) vrf50 Link encap:Ethernet HWaddr 06:de:d7:3d:18:be UP RUNNING NOARP MASTER MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Übersetzung von Schnittstellennamen
Ein einschränkender Faktor bei der Verwendung dieses Abfangmechanismus besteht darin, dass die Benennung der Linux-Schnittstelle nicht mit der Benennung der Junos OS-Schnittstelle kompatibel ist. Linux unterstützt 15-Byte-Schnittstellennamen (15 + Nullzeichen); Netzwerkschnittstellennamen, die diesen Grenzwert überschreiten, werden in Ausgaben abgeschnitten. Die Namen der logischen Schnittstellen von Junos OS können länger als 15 Byte sein, z. B et-0/0/10:2.32767
. . .
Um diesen Unterschied zu umgehen, verwendet Junos OS Evolved eine Übersetzungsregel (siehe Tabelle 2), um logische Schnittstellennamen in einem Linux-kompatiblen Format zu rendern. Die Übersetzung rendert ein Format wie name-fpcSlot/picSlot/port:channelId.subUnit
. nn-ffpttccssss
Mithilfe von Schnittstellennamen, die gemäß dieser Regel übersetzt wurden, können Anwendungen von Drittanbietern die Topologieinformationen effektiv von Junos OS abrufen.
Es wird nur die Übersetzung von logischen Schnittstellennamen unterstützt, und die Übersetzung von kanalisierten und nicht kanalisierten logischen Schnittstellennamen wird unterstützt.
Wert |
Beschreibung |
Zugewiesener Speicherplatz (in Bytes) |
Bereich |
---|---|---|---|
Nn |
Zugeordnete Namensbytes |
2 |
|
Ff |
FPC in Hexadezimalformat |
2 |
0-255 |
P |
Bild in Hexadezimalformat |
1 |
0-15 |
Tt |
Portnummer in Hexadezimalform |
2 |
0-255 |
Cc |
Kanal in Hexadezimal; Verwenden Sie "xx", wenn nicht vorhanden |
2 |
0-255 |
Ssss |
Untereinheit in Sechskant |
4 |
0-65535 |
Wenn der Name der logischen Schnittstelle keinen Bindestrich (-) enthält, wird der Punkt (.) im Namen in einen Unterstrich (_) geändert, z. B.: |
|||
Für Verwaltungsschnittstellen bedeutet dies |
In Tabelle 3 finden Sie Beispiele für logische Junos-Schnittstellennamen und ihre Linux-kompatiblen Formulare.
Name der logischen Junos-Schnittstelle |
Übersetzter Linux-kompatibler Schnittstellenname |
---|---|
ET-1/2/3.4 |
ET-01203XX0004 |
GE-1/2/3.32 |
GE-01203xx0020 |
ET-1/15/3.4 |
ET-01F03XX0004 |
ET-02.01.255:6.7 |
ET-012FF060007 |
et-1/2/4:5.32767 |
ET-01204057FFF |
RE0:MGMT-1.2 |
mgmt-0-01-0002 |
ae0.1 |
ae0_1 |
IRB0.11 |
irb0_11 |
Beim Zugriff auf Junos OS-Zustände durch Vorabladen libnli.so
wird der Schnittstellenname in der Ausgabe als übersetzter Linux-kompatibler Schnittstellenname angezeigt. Sie müssen auch den übersetzten Linux-kompatiblen Schnittstellennamen verwenden, wenn Sie ihn als Argument in einem Befehl verwenden. Der übersetzte et-01000000000
Schnittstellenname wird im folgenden Beispiel als Argument verwendet:
[vrf:none] user@host_RE0:~# LD_PRELOAD=libnli.so ifconfig et-01000000000 et-01000000000 Link encap:Ethernet HWaddr 5c:31:b0:35:01:ff inet addr:20.20.20.24 Bcast:20.20.20.255 Mask:255.255.255.0 inet6 addr: 2000:200:20::2/64 Scope:Global inet6 addr: fe80::5e31:b0ff:fe35:1ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1514 Metric:1 RX packets:312 errors:0 dropped:0 overruns:0 frame:0 TX packets:156 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:31004 (30.2 KiB) TX bytes:21346 (20.8 KiB)
Vorsichtsmaßnahmen für die Abfangfunktion
Diese Funktion zum Abfangen unterstützt schreibgeschützte Anforderungen. Jede Schreibanforderung gibt einen Fehler zurück.
Die Darstellung eines bestimmten Junos-Netzwerkstatus kann Linux-Entsprechungen möglicherweise nicht zugeordnet werden. In diesen Fällen werden die Daten entweder weggelassen oder auf ein vergleichbares Linux-Modell umgestellt. Junos OS Evolved unterstützt beispielsweise eine Vielzahl von Nexthop-Typen wie composite
oder unilist
ohne vergleichbare Implementierungen im nativen Linux.
Anwendungen von Drittanbietern, die statisch verknüpft sind, können nicht abgefangen werden und werden daher von dieser Funktion nicht unterstützt.
Entfernen von Anwendungen von Drittanbietern
Es gibt mehrere Methoden zum Entfernen von Anwendungen von Drittanbietern. Die Methode, die Sie verwenden sollten, hängt davon ab, wie Sie die Anwendung installiert haben.
-
Wenn eine Anwendung eines Drittanbieters mit dem
request system software add
Befehl installiert wurde, können Sie dieselbe Anwendung mithilfe desrequest system software delete
Befehls entfernen.user@host> request system software delete ima-test Removing version 'ima-test'. Software ... done. Data ... done. Version 'ima-test' removed successfully.
-
Der erste Schritt beim Entfernen dieser Anwendungen besteht darin, die Verknüpfung des Schlüssels mit dem
request security system-keystore unlink key
Befehl aufzuheben.user@host> request security system-keystore unlink key
Entfernen Sie als Nächstes alle Binärdateien, die Sie für die Anwendung mit dem
rm -f /path/to/binary1 /path/to/binary2
Befehl shell installiert haben.user@host:~# rm -f /path/to/binary1 /path/to/binary2
-
Wenn eine Anwendung eines Drittanbieters über einen Docker-Container installiert wurde, verwenden Sie den folgenden Docker-Befehl, um den Container zu entfernen:
docker rm container-name