このページの目次
サードパーティ製アプリケーションの管理
インターセプトライブラリの使用
Junos OS EvolvedはネイティブLinux上で実行されるため、サードパーティ製アプリケーションを実行することができます。Linuxがインターフェイスやルートデータなどの要求されたネットワークトポロジー情報を表示する方法と、Junos OSがこの情報を表示する方法にはいくつかの違いがあります。CLI は、このような違いを克服するように設計されています。ただし、通常、ネイティブLinuxで実行されているサードパーティアプリケーションは、シェルコマンドを使用してネイティブLinuxソースから直接この情報を取得します。
Junos OS Evolvedは、ネットワークトポロジー情報に対するシェルリクエストを、Junos OSから情報を取得できるスペースにリダイレクトするインターセプトメカニズムを使用します。このインターセプト・メカニズムは、インターセプト・ライブラリー と libnli.so
によって実現され、libsi.so
プリロードします。インターセプトライブラリをプリロードすると、特定のタイプのリクエストがインターセプトされ、Junos OS情報が表示されます。
インターセプトライブラリはオプションです。これらは、 アプリケーションが表 1 に記載されている API を必要とする場合にのみ必要です。
Api |
説明 |
---|---|
パケット IO および Linux ソケット API |
管理インターフェイスおよび/またはデータインターフェイスを介してパケットを送受信する機能。送信、受信、リッスンなどの標準libc。 |
rtnetlinkを使用して、インターフェイス、ルートなどのネットワーク状態を照会する機能。 |
|
ネットワークデバイスを構成する機能。 |
|
Linuxカーネルが提供する標準インターフェイスを使用してカーネルデータ構造を照会する機能。 |
|
Junos API |
Juniper North Bound API - NetConf/JET/テレメトリにアクセスできます。 |
ジュニパーのノースバウンド API の詳細については、以下を参照してください。
Junos OS Evolvedリリース20.1R1は、以下の機能をサポートしています。
-
set system netlink-async-mode
構成を使用して、NETLINK_ROUTE非同期通知を有効にします。この機能はデフォルトでは無効になっています。現在のネットリンク非同期モードを表示するために使用しますshow nsld mode
。 -
SIOCETHTOOL
IOCTL は、他のアプリケーションで使用できます。 -
netlinkルート属性を介したマルチパスのネクストホップルート情報。
プリロードされた Linux コマンドの例
preloadディレクティブの動作例を以下に示します インターフェイスを表示するコマンド ifconfig
を使用します。
コマンドを ifconfig
インターセプトライブラリでプリロードすると、Junos OSインターフェイス情報が返されます。インターセプトライブラリは論理インターフェイスのみを変換することに注意してください。この例では、lo0 と re0:mgmt-0.0 にのみ論理インターフェイスが存在するため、出力にはプリロード ifconfig
されたコマンドのこれら 2 つのインターフェイスのみが表示されます。
[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)
Junos OS Evolvedに付属のシェルで、デフォルトで と libsi.so
をプリロードlibnli.so
するjbashを実行しても同じ結果が得られます。
jbashはネットワーク状態情報の取得にのみ使用してください。jbashをデフォルトのシェルとして使用しないでください。
インターセプト・ライブラリーをプリロードせずにコマンドを発行した場合、表示される出力は Linux からのものです。なお、以下の出力はJunos OSの出力よりも長いです。Linuxでは、Junos CLIのように物理インターフェイスと論理インターフェイスを区別しません。
[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)
インターフェイス名の変換
このインターセプト メカニズムを使用する際の制限要因の 1 つは、Linux インターフェイスの命名規則が Junos OS のインターフェース命名規則と互換性がないことです。Linux は 15 バイトのインターフェース名 (15 + ヌル文字) をサポートしている。この制限を超えるネットワークインターフェイス名は、出力で切り捨てられます。Junos OS の論理インターフェイス名は、例えば、 et-0/0/10:2.32767
15 バイトより長くすることができます。
この違いを回避するために、Junos OS Evolvedは変換ルール(表2を参照)を使用して、論理インターフェイス名をLinux準拠の形式でレンダリングします。翻訳では、 のようなnn-ffpttccssss
形式name-fpcSlot/picSlot/port:channelId.subUnit
がレンダリングされます。サードパーティ製アプリケーションは、このルールに従って変換されたインターフェイス名を使用して、Junos OSからトポロジー情報を効果的に取得することができます。
論理インターフェイス名の変換のみサポートされ、チャネル化された論理インターフェイス名と非チャネル化された論理インターフェイス名の両方の変換がサポートされています。
値 |
説明 |
割り当てられた領域 (バイト単位) |
範囲 |
---|---|---|---|
Nn |
マップ名バイト |
2 |
|
Ff |
FPC (16 進数) |
2 |
0-255 |
P |
16 進数のpic |
1 |
0-15 |
Tt |
16 進数のポート番号 |
2 |
0-255 |
Cc |
16進数のチャネル。存在しない場合は "xx" を使用します |
2 |
0-255 |
ティッカー |
16 進数のサブユニット |
4 |
0-65535 |
管理インターフェイスを除き、論理インターフェイス名にハイフン(-)が含まれていない場合、名前のドット(.)はアンダースコア(_)に変更されます。 は に変換されます |
|||
管理インターフェイスの場合、 は に変換 |
Junos 論理インターフェイス名とその Linux 準拠形式の例については、 表 3 を参照してください。
Junos 論理インターフェイス名 |
翻訳されたLinux準拠インターフェイス名 |
---|---|
et-1/2/3.4 |
et-01203xx0004 |
ge-1/2/3.32 |
GE-01203xx0020 |
et-1/15/3.4 |
et-01f03xx0004 |
et-1/2/255:6.7 |
et-012ff060007 |
et-1/2/4:5.32767 |
et-01204057FFF |
re0:mgmt-1.2 |
管理 - 0 - 01 - 0002 |
ae0.1 |
ae0_1 |
IRB0.11 |
irb0_11 |
プリロード libnli.so
して Junos OS の状態にアクセスする場合、出力のインターフェイス名は翻訳された Linux 準拠のインターフェイス名として表示されます。また、変換された Linux 準拠のインターフェイス名をコマンドの引数として使用する必要もあります。次の例では、変換された et-01000000000
インターフェイス名を引数として使用します。
[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)
インターセプト機能に関する注意事項
このインターセプト機能は、読み取り専用の要求をサポートします。書き込み要求はエラーを返します。
特定のJunosネットワーク状態の表現は、Linuxの同等のものにマップできない場合があります。このような場合、データは省略されるか、同等の Linux モデルに再マップされます。例えば、Junos OS Evolvedは、ネイティブLinuxに匹敵する実装を持たない や unilist
といったネクストホップタイプのcomposite
豊富なスイートをサポートしています。
静的にリンクされているサードパーティ製アプリケーションは傍受できないため、この機能ではサポートされていません。
サードパーティアプリケーションの削除
サードパーティ製アプリケーションを削除するには、いくつかの方法があります。使用する方法は、アプリケーションのインストール方法に基づいています。
-
サードパーティ製アプリケーションが コマンドで
request system software add
インストールされた場合は、 コマンドを使用して同じアプリケーションをrequest system software delete
削除できます。user@host> request system software delete ima-test Removing version 'ima-test'. Software ... done. Data ... done. Version 'ima-test' removed successfully.
-
これらのアプリケーションを削除する最初の手順は、キーと
request security system-keystore unlink key
コマンドのリンクを解除することです。user@host> request security system-keystore unlink key
次に、シェル コマンドを使用してアプリケーション
rm -f /path/to/binary1 /path/to/binary2
用にインストールしたバイナリをすべて削除します。user@host:~# rm -f /path/to/binary1 /path/to/binary2
-
サードパーティ製アプリケーションが Docker コンテナを介してインストールされた場合は、次の Docker コマンドを使用してコンテナを削除します。
docker rm container-name