シナプスの技術部ネットワーク課の福山と申します。
ここ数年で、弊社ではネットワーク機器に新しいOSを導入しました。
- Juniper MX204(Junos OS)
- Cisco NCS55A1(Cisco IOS XR)
- Juniper ACX7100-48L(Junos OS Evolved)
導入前の検証ではOSアップデートのテストは問題ありませんでしたが、運用開始後のOSアップデートで検証時の手順では問題が発生しました。
問題が発生した内容と対応内容をご紹介したいと思います。
- ケース1: Juniper MX204(Junos OS)
- ケース2: Cisco NCS55A1(Cisco IOS XR)
- ケース3: Juniper ACX7100-48L(Junos OS Evolved)
- まとめ
ケース1: Juniper MX204(Junos OS)
バージョン情報
- アップデート前: 21.1R2.x
- アップデート後: 21.4R3-Sx.y
※詳細なバージョン情報は x, y として伏せさせていただきます
うまくいかなかったこと
OSをインストールする時にエラーが発生しました。
user@router> request vmhost software add /var/tmp/junos-vmhost-install-mx-x86-64-21.4R3-Sx.y.tgz Aug 31 03:14:14 Junos Validation begin. Procedure will take few minutes. <<途中省略>> chroot: pwd_mkdb: No such file or directory Hardware Database regeneration succeeded Validating against /config/juniper.conf.gz Abort trap (core dumped) Validation failed ERROR: Failed to add /var/tmp/junos-vmhost-install-mx-x86-64-21.4R3-Sx.y.tgz da0 at vtscsi0 bus 0 scbus2 target 0 lun 0 da0: <QEMU QEMU HARDDISK 2.5+> detached (da0:vtscsi0:0:0:0): Periph destroyed warning: Host software installation has failed.
「Validation failed」とあるので、何か検証に失敗している様子です。
調査
アップデートしようとしていたバージョンのリリースノートをよく見ると、以下のような記載がありました。
- Junos OS リリース 21.2R1 以降、これまで FreeBSD 11.x ベースの Junos OS で実行されていたすべての Junos OS 製品は、FreeBSD 12.x ベースの Junos OS に移行されます。
- Junos OS (FreeBSD 6.x、10.x、および 11.x) から Junos OS (FreeBSD 12.x) にアップグレードする際には、validate オプションを使用しないでください。
- これは、junos-upgrade-x パッケージ内のプログラムが FreeBSD 12.x に基づいて構築されており、Junos OS (FreeBSD 6.x、10.x、および 11.x) ではこれらのプログラムを実行できないためです。
- no-validate オプションを実行する必要があります。
- no-validate ステートメントは検証手順を無効にします。
デフォルトの動作では現在の構成とソフトウェア パッケージの互換性を確認して検証するようです。
アップデート前は FreeBSD 11系で、アップデートしようとしていたバージョンは FreeBSD 12系だったため、失敗しました。
検証時にテストしたアップデートは FreeBSD 11系から FreeBSD 11系へのアップデートだったため、問題なかったようでした。
対応内容
インストールコマンドに「no-validate」 オプションを付けて実行してインストールすることができました。
user@router> request vmhost software add /var/tmp/junos-vmhost-install-mx-x86-64-21.4R3-Sx.y.tgz no-validate Aug 31 03:53:23 Verified junos-vmhost-install-mx-x86-64-21.4R3-Sx.y signed by PackageDevelopmentECP256_2022 method ECDSA256+SHA256 Copied the config and other data to the aux disk. <<途中省略>> ... upgrade complete. A REBOOT IS REQUIRED TO LOAD THIS SOFTWARE CORRECTLY. Use the 'request vmhost reboot' command to reboot the system.
ケース2: Cisco NCS55A1(Cisco IOS XR)
バージョン情報
- アップデート前: 7.9.x
- アップデート後: 7.11.x
※詳細なバージョン情報は x として伏せさせていただきます
うまくいかなかったこと
検証時には IOSイメージおよびパッケージをリポジトリに追加し、「install prepare」コマンドで 準備プロセスを実行してアクティベーション前のチェックをしてから、アクティベーションするようにしていたのですが、問題なく実行できていました。
しかし、運用開始後のアップデート作業では準備プロセスでエラーが発生しました。
IOSイメージをリポジトリに追加
RP/0/RP0/CPU0:router#install add source /harddisk: NCS5500-iosxr-k9-7.11.x.tar Fri Jul 5 03:13:39.355 JST 2024-07-05 03:13:41 Install operation 71 started by root: install add source /harddisk: NCS5500-iosxr-k9-7.11.x.tar 2024-07-05 03:13:50 Install operation will continue in the background RP/0/RP0/CPU0:router#2024-07-05 03:18:57 Install operation 71 finished successfully
ここで表示される「Install operation 71」の「71」を使用すると追加されたパッケージの準備がまとめて行われます。
準備プロセスでエラーが発生
RP/0/RP0/CPU0:router#install prepare id 71 Fri Jul 5 03:22:02.631 JST 2024-07-05 03:22:03 Install operation 72 started by root: install prepare id 71 2024-07-05 03:22:03 Package list: 2024-07-05 03:22:03 ncs5500-eigrp-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-lictrl-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-isis-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-li-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-mgbl-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-mpls-te-rsvp-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-mpls-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-mcast-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-k9sec-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-healthcheck-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 ncs5500-mini-x-7.11.x 2024-07-05 03:22:03 ncs5500-ospf-1.0.0.0-r711x.x86_64 2024-07-05 03:22:03 Install operation will continue in the background RP/0/RP0/CPU0:router#2024-07-05 03:23:47 Install operation 72 aborted
「Install operation 72 aborted」となっており、中止されています。
調査
上記「Install operation 72」の「72」を「show install log」コマンドに指定することで「Install operation 72」の実行結果のログを確認することができます。
RP/0/RP0/CPU0:router#show install log 72 <<途中省略>> 2024-07-05 03:23:43 Following error(s) occurred in sysadmin vm(s) during install operation: 2024-07-05 03:23:43 Preparation failed with the error: nsufficient space in install_repo in sysadmin. 2024-07-05 03:23:43 Error stack for 0/RP0 : #1 Insufficient space for staging location /install_repo. Staging Free Space : 910 MB, Total Package Size : 1289 MB #2 Insufficient space in install_repo in sysadmin. Please collect 'show tech-support install one-showtech' from XR and 'show tech-support ctrace' from Admin and pass this information to your TAC representative for support. 2024-07-05 03:23:47 Ending operation 72 2024-07-05 03:23:47 Install operation 72 aborted
「install_repo」の空き容量が足りないとログに出ていました。
確認したところ、検証時に何度かアップデートの検証を実施していたのですが、その時のパッケージがリポジトリに残っており、容量不足になっていました。
対応内容
非アクティブなパッケージを全て削除してから、再度、IOSイメージをリポジトリに追加し、準備プロセスを実行したところ問題なく完了しました。
非アクティブなパッケージを全て削除
RP/0/RP0/CPU0:router#install remove inactive all Fri Jul 5 04:27:12.147 JST 2024-07-05 04:27:13 Install operation 73 started by root: install remove inactive all 2024-07-05 04:27:14 Install operation will continue in the background RP/0/RP0/CPU0:router#2024-07-05 04:27:38 Install operation 73 finished successfully
再度、IOSイメージをリポジトリに追加
RP/0/RP0/CPU0:router#install add source /harddisk: NCS5500-iosxr-k9-7.11.x.tar Fri Jul 5 04:33:51.260 JST 2024-07-05 04:33:53 Install operation 74 started by root: install add source /harddisk: NCS5500-iosxr-k9-7.11.x.tar 2024-07-05 04:34:02 Install operation will continue in the background RP/0/RP0/CPU0:router#2024-07-05 04:39:07 Install operation 74 finished successfully
準備プロセスを実行
RP/0/RP0/CPU0:router#install prepare id 74 Fri Jul 5 04:47:04.448 JST 2024-07-05 04:47:05 Install operation 75 started by root: install prepare id 74 2024-07-05 04:47:05 Package list: 2024-07-05 04:47:05 ncs5500-eigrp-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-lictrl-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-isis-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-li-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-mgbl-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-mpls-te-rsvp-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-mpls-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-mcast-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-k9sec-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-healthcheck-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 ncs5500-mini-x-7.11.x 2024-07-05 04:47:05 ncs5500-ospf-1.0.0.0-r711x.x86_64 2024-07-05 04:47:05 Install operation will continue in the background RP/0/RP0/CPU0:router#2024-07-05 04:51:58 Install operation 75 finished successfully
準備プロセスが問題なく完了しています。
ケース3: Juniper ACX7100-48L(Junos OS Evolved)
バージョン情報
- アップデート前: 22.4R2.x-EVO
- アップデート後: 23.2R2-Sx.y-EVO
※詳細なバージョン情報は x, y として伏せさせていただきます
うまくいかなかったこと
弊社ではアップデート用のOSをftp接続できるサーバに事前に設置して、ftp接続でネットワーク機器に転送するようにしています。
検証時にはそのftpサーバにftp接続してOSを転送できていました。
しかし、運用開始後のアップデート作業ではそのftpサーバにftp接続できませんでした。
user@router> ftp [ftpサーバのアドレス] source [ルーターのループバックアドレス] /usr/bin/ftp: connect to address [ftpサーバのアドレス] : Connection timed out /usr/bin/ftp: no response from host
調査
ftp接続しようとしていたルーターとftpサーバの間にL3スイッチがあり、アクセスリストでそのルーターからはループバックアドレスからでないと、ftpサーバにftp接続できないようにしていたのですが、L3スイッチのアクセスログを見ると、ルーターの物理インターフェースに設定しているIPアドレスからftpサーバに接続しようとして拒否しているログが出ていました。
ftpコマンドの後に「?」を入力して使用可能なオプションを確認してみます。
user@router> ftp [ftpサーバのアドレス] ? Possible completions: <[Enter]> Execute this command bypass-routing Bypass routing table, use specified interface inet Force FTP to IPv4 destination inet6 Force FTP to IPv6 destination interface Name of interface for outgoing traffic logical-system Name of logical system routing-instance Name of routing instance for FTP session source Source address for FTP session | Pipe through a command
「source」でftp接続の送信元アドレスを指定できると思っていたのですが、実際の動作は異なっているようでした。
対応内容
別のコマンドを調べてみたのですが、「file copy」だと、引数の末尾にsource-address [ルーターのループバックアドレス] を指定することで、送信元アドレスをループバックアドレスにして問題なくftp接続、OSイメージを転送できました。
user@router> file copy ftp://anonymous@[ftpサーバのアドレス]/junos-evo-install-acx-f-x86-64-23.2R2-Sx.y-EVO.iso /var/tmp/ staging-directory /var/tmp source-address [ルーターのループバックアドレス] Password: junos-evo-install-acx-f-x86-64-23.2R2-Sx.y-EVO.iso 100%[==================================================================================================>] 1.64G 2.18MB/s in 13m 54s 2024-07-15 20:12:09 URL: ftp://anonymous@[ftpサーバのアドレス]/junos-evo-install-acx-f-x86-64-23.2R2-Sx.y-EVO.iso [1758738432] -> "/var/tmp/...transferring.file.........100%
まとめ
- 検証時に運用開始後のネットワーク構成を考慮した検証が不十分だったと感じました。
- リリースノートにアップデート時の注意点が載っていることもあるので、見落とさないように確認しようと思います。