NetApp 切り替え時 メモ書き


ボリューム言語切り替えは面倒

NetAppのボリューム言語をja_JP.PCKからutf8mb4に変えたいな、と思うとsnapmirrorでのボリューム以降ではなくて、rsyncやrobocopyなどを使ってコピーする必要がある。

例えば、robocopyでやるなら以下の様なバッチファイルを動かしてコピーする

@echo off
set TIME2=%TIME: =0%
set LOGDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%-%TIME2:~0,2%%TIME2:~3,2%
robocopy \\netappfs\shares1  \\netappfsnew\shares1 /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-shares1-%LOGDATE%.txt
robocopy \\netappfs\document \\netappfsnew\document /mir /copyall /R:0 /W:0 /LOG+:D:\LOGS\netappfs-document-%LOGDATE%.txt

D:\LOGS に実行ログを吐き出すが、バッチファイルの実行開始時間を元にしたファイル名となるので、ログ確認がしやすい

失敗した切り替え手順

IPアドレスが確保出来なかったということなので、旧NetAppのサービス用IP と 新NetAppの仮接続用IPしかない、ということなので

旧NetAppのネットワークケーブル抜いてから
新NetApp側のIPアドレスを切り替えてAD参加
旧NetApp側のIPアドレスを新NetAppについてた仮接続用IPに切り替え
旧NetAppのネットワークケーブルを接続して、AD参加

ということをやればいいかなーと以下の手順で実施した。

が・・・これだと旧NetAppがnetappfsとして参加していた情報の方が勝つらしく、12の段階で旧サーバがnetappfsだとしてAD上のアクセス情報を持っていこうとしているっぽく、問題が発生した。

このため新NetAppをもう1度Active Directoryに参加させるという対処を行う羽目になった。

  1. 旧NetAppが ADに netappfs で参加している
  2. 新NetAppが ADに netappfsnew で参加してデータ移行
    新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
  3. 切り替え日
  4. 旧NetAppのADをdown
     旧::> vserver cifs modify -vserver netappfs -state-admin down
  5. 新NetAppのADをdown
     新::> vserver cifs modify -vserver netappfs -state-admin down
  6. 旧NetAppのネットワークケーブルを外す
     (旧NetAppのIPアドレスは変更していない)
  7. 新NetAppでIPを引き継ぎ
    新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
  8. 新NetAppをnetappfsとしてAD参加
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
  9. 新NetAppにクライアントからアクセスできるか確認
     問題ないことを確認
  10. ケーブルを外した状態で旧NetAppのIPを変更
    旧::> network interface modify -vserver netappfs -lif ~ -address 別IP1
  11. 旧NetAppのネットワークケーブルをつなぐ
  12. 旧NetAppをAD再参加
     旧::> vserver cifs modify -vserver netappfs -cifs-server netappfs-old
      → クライアントから新NetApp(netappfs)にアクセスできなくなる
       新NetAppで「vserver cifs check」コマンドを実行すると
       「down SecD Error: no server available」といったエラーが出ている
  13. 新NetAppのAD登録名を一時的に別のものに参加したあと、正式名で再参加
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfstmp
     新::> vserver cifs modify -vserver netappfs -state-admin down
     新::> vserver cifs modify -vserver netappfs -cifs-server netappfs
      → クライアントから新NetApp(netappfs)にアクセスできるようになる

同じではないが、OUがちゃんと変更されていない場合の再変更手順「Organizational Unit (OU) is not updated in ONTAP after Active Directory object move」を見ると「vserver cifs stop -vserver netappfs」で止めたあと、もう1回「vserver cifs modify -vserver netappfs -cifs-server netappfs -ou OU=NewOU」と実行する、という風になっていた

いつもの切り替え手順

いつもは旧NetAppのサービス用IP と 新NetAppの仮接続用IP、旧NetAppの仮接続用IPの3つを用意してもらって切り替えている

1. 旧NetAppが ADに netappfs で参加している
2. 新NetAppが ADに netappfsnew で参加してデータ移行
  新::> vserver cifs create -vserver netappfs -cifs-server netappfsnew
3. 切り替え日
4. 旧NetAppのADをdown
 旧::> vserver cifs modify  -vserver netappfs -state-admin down
5. ケーブルを外した状態で旧NetAppのIPを変更
  旧::> network interface modify -vserver netappfs -lif ~ -address 旧NetAppの仮接続用IP
6. 旧NetAppをAD再参加
 旧::> vserver cifs modify  -vserver netappfs -cifs-server netappfs-old
7. 新NetAppのADをdown
 新::> vserver cifs modify  -vserver netappfs -state-admin down
8. 新NetAppでIPを引き継ぎ
  新::> network interface modify -vserver netappfs -lif ~ -address サービス用IP
9. 新NetAppをnetappfsとしてAD参加
 新::> vserver cifs modify  -vserver netappfs -cifs-server netappfs
10. 新NetAppにクライアントからアクセスできるか確認
 問題ないことを確認

メモ

secd logにログが出ているらしい?

/mroot/etc/log/mlog/secd.log というパス? (Overview of ONTAP Logs)

SVMのマシンアカウントのパスワードを再設定する「vserver cifs domain password reset」を実行することで解消する?


2023/11/23追加

Windowsサーバ→NetAppのrobocopy実行時にいくつか問題がある

(1) audit/監査設定周り

Windowsサーバ上で監査設定をちゃんと使っている場合、NetApp ONTAP側で使える監査機能との差異によって監査設定が期待通りにコピーできずにrobocopyがエラーになる。

具体的には「/copyall」もしくは「/copy:DATSOU」ではエラーとなる

robocopy D:\share\ \\netapp\share\ /COPYALL /MIR /B /EFSRAW /R:1 /W:1 /NP
<略>
	          古い		   3.0 g	SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
2023/11/01 xx:xx:xx エラー 31 (0x0000001F) NTFS セキュリティをコピー先ファイルにコピーしています D:\share\ISO\SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_Japanese_w_SP1_MLF_X17-22600.ISO
システムに接続されたデバイスが機能していません。
<略>
2023/11/01 xx:xx:xx エラー 32 (0x00000020) ファイルをコピーしています	F:\COMMON\document\testdocument.docx
プロセスはファイルにアクセスできません。別のプロセスが使用中です。
エラー: 再試行が制限回数を超えました。
<略>

(オマケ:Notepad++でrobocopyのログ確認する時は、「^(.+新しいディレクトリ).+\r\n」「^(.+新しいファイル).+\r」「^(.+更新済み).+\r\n」の3つを「」(置き換え文字列を何も指定しない)に置き換えると問題となっているファイルを探しやすい。英語の場合はNew Dir,Newer,New File,Modified)

How to move files to a NetApp CIFS server using Robocopy to retain Windows ACLs

Does robocopy need to use /copy:datso option if the source has Windows Mandatory Level permission? (対象がcloud volumes ONTAPと書いてあるが、一般のONTAPも対象)

Robocopy unable to set all ACLs on a file (The SACL includes a Mandatory Label which is not supported by ONTAP)

対象方法は「/copy:DATSO」でコピーする、とある

(2) 毎回modifyになるという事象

タイムスタンプまわりの挙動がWindowsサーバとONTAPとで違うらしく、それが差分と認識されることがあるようだ。

ただ、情報の更新だけが行われているようで、ファイルの実体コピーは行われていない模様


robocopyのログで出る「*EXTRA File」は、コピー先にしか存在しないファイル

代表的なrobocopyエラーコードと対処一覧

エラー 2 (0x00000002)→指定したフォルダが存在しない
エラー 5 (0x00000005)→アクセス権がない。robocopyに/Bオプションを付ける
エラー 31 (0x0000001F)→コピー先に元と同じNTFSセキュリティ設定が行えない(OS制約などの可能性)
エラー 32 (0x00000020)→ファイルがアプリケーションからロックされているのでアプリを閉じる
エラー 64 (0x00000040)→指定した共有にアクセスできない
エラー 87 (0x00000057)→指定した共有にアクセスするためのユーザ名/パスワード指定が誤っている
エラー 112(0x00000070)→コピー先容量が足らない

参考:SEの道標【robocopy】のログの見方、エラーコード一覧〜不一致、EXTRAS〜
robocopyのエラーコードはWin32のエラーコードそのままなので上記以外については 「Win32 Error Codes」を参照

Active Directoryサーバのセキュリティ強化アップデート(CVE-2022-38023)に伴うONTAPファイルサーバへの影響についてのメモ


WindowsのActive Directoryサーバに対してセキュリティ攻撃ができることが判明したため、Active Directoryサーバに対してセキュリティ強化がWindows Update経由で2022年11月に配布されている。

このときのアップデートで対応されたのは下記の3点

KB5021131: CVE-2022-37966 に関連する Kerberos プロトコルの変更を管理する方法
KB5020805: CVE-2022-37967 に関連する Kerberos プロトコルの変更を管理する方法
KB5021130: CVE-2022-38023 に関連する Netlogon プロトコルの変更を管理する方法

CVE-2022-37966とCVE-2022-38023はどちらも暗号化方式として脆弱なRC4-HMACを使用するのをやめてAESに変更する、というものとなっている。

このため、Kerberos/NTLMv2のどちらを使っていてもRC4-HMACを使用している場合は、このWindows Update適用後に問題が発生する、ということになる。

Windows サーバで構成されているActive Directoryサーバ側での対応については以下にまとめられている

CVE-2022-37966 への対応とその影響について
CVE-2022-37967 への対応とその影響について
CVE-2022-38023 への対応とその影響について

いろいろ書いてあるが、Windowsサーバのレジストリ設定をすることで、強制適用を延期できるけど、最終的にはアクセスできなくなるよ、ということになっている。

で・・・どういう場合に問題が発生するのか?というところが問題となる。

問題が発生するもの

・Active Directoryサーバに対してRC4-HMAC暗号化を使ってKerberos認証を行う場合
・Active Directoryサーバに対してRPC署名を使ってNTLMv2認証を行う場合
・Active Directoryサーバに対してRPCシールとRC4-HMAC暗号化を使ってNTLMv2認証を行う場合

2023/07/24追記: sambaによるActive Direcotryサーバで NTLMv2認証を使う場合(詳細は一番下で解説)

問題が起こらないもの

・Active Directoryサーバに対してAES暗号化を使ってKerberos認証を行う場合
・Active Directoryサーバに対してRPCシールとAES暗号化を使ってNTLMv2認証を行う場合
 (NTLM/Netlogon Secure Channel は同じ意味)

(他にも大丈夫な場合はあると思います)

具体的な環境

2023年5月時点で適切にWindows Updateが実施されているWindows 7 / Windows Server 2012以降のマシンで、Active Directoryに参加している場合はKerberos/AESなので問題ない

Windowsであってもworkgroupとして認証を行う場合はNTLMv2となる場合があるので注意が必要

Linuxからcifs-utilsを使ってCIFS領域をマウントする場合、標準設定ではNTLMv2を使用するため注意が必要

LinuxをActive Directoryに参加させる場合、注意が必要
 Microsoft の 2022 年 11 月の更新により Active Directory の統合が中断される
 Red Hat Enterprise Linux and Microsoft security update of November 2022

ファイルサーバでの問題発生例

Active Directoryに参加しているファイルサーバでは以下のような形で認証が行われる模様

・[クライアント]→Kerberos認証→[ファイルサーバ]→Kerberos認証→[Active Directory]
・[クライアント]→NTLMv2認証→[ファイルサーバ]→NTLMv2認証→[Active Directory]

クライアントからどちらの形式でアクセスをしてくるかで、ファイルサーバ側からActive Directoryへの問いあわせ手法も変わる、ということになる。

このため、ファイルサーバの仕様で問題が発生することとなるため各社がお知らせを出している

・sambaでの問題 RC4/HMAC-MD5 NetLogon Secure Channel is weak and should be avoided Samba 4.15.13/4.16.8/4.17.4以降で対応
・NetAppでの問題 SU530: [Impact Critical] NTLM authentication fails due to enforcement of Netlogon RPC sealing (Microsoft CVE-2022-38023) ONTAP 9.7以降の2023年4月中旬以降提供バージョンで対応
・RedHat/samba CVE-2022-38023
・DELL PowerScale/iSilon PowerScale: Isilon: Netlogon RPC Elevation of Privilege Vulnerability (CVE-2022-38023) OneFS 9.5.0以降で対応
・DELL Unity Dell Unity: Is Unity affected by CVE-2022-38023? (User Correctable) Unity OE 5.1.0以降で対応

・Synology Synology-SA-22:24 Samba AD DC 2023/05/11時点では未提供だが対象リストを見ると通常のファイルサーバ用途では対応不要?
 QNAP,バッファローなども特にお知らせは無し

2023/07/24追記

・バッファロー TeraStation/LinkStation CVE-2022-38023の脆弱性対応によるTeraStation/LinkStationへの影響について
WindowsOSじゃないLinuxベースのやつは影響を受けるようです

・QNAP QTSシリーズ Vulnerabilities in Samba CVE-2022-37966 | CVE-2022-37967 | CVE-2022-38023 | CVE-2022-45141
FreeBSDベースのQESシリーズは影響なし、ですが、それ以外の通常QNAPは影響あり、と

NetApp ONTAPでの対応

対応が必要であるかの調査

NetApp ONTAPでは、ファイルサーバ=>Active Directoryの通信をRC4-HMACで行ってたということで修正がONTAP OSの修正がリリースされています。

2023年4月後半以降にリリースされたONTAP 9.7以降のパッチリリースのみが今回の問題に対応しています。

詳細については富士通が見える状態でリリースを置いてくれています

ETERNUS AX/HXシリーズ, ETERNUS NR1000シリーズにおける WindowsのNetlogon脆弱性対応(CVE-2022-38023)による影響(CIFS接続不可)について

いろいろ書いてありますが、とりあえず、今使ってるNetAppファイルサーバにNTLMv2を使ってアクセスしてきてるユーザがいるのかを確認しましょう

「vserver cifs session show -fields auth-mechanism,protocol-version,windows-user,address」を実行して、auth-mechanismに「NTLMv2」がいる場合は対処が必須です。

netapp9101::> vserver cifs session show -fields auth-mechanism,protocol-version,windows-user,address
node          vserver session-id           connection-id address       auth-mechanism windows-user  protocol-version
------------- ------- -------------------- ------------- ------------- -------------- ------------- ----------------
netapp9101-01 svm0    14421088956793749524 535041285     172.17.44.173 Kerberos       VM2\testuser1 SMB2_1
netapp9101-01 svm0    14421088956793749539 535041298     172.17.44.174 NTLMv2         VM2\testuser1 SMB3
2 entries were displayed.
netapp9101::>

このテスト環境では、172.17.44.173はWindows 7 SP1クライアント、172.17.44.174はRHEL 7.6からCIFSマウントしている環境でした。

このRHEL7.6は「mount -t cifs //svm0.adosakana.local/testutf /mnt2 -o user=testuser1@adosakana.local,password=パスワード,vers=3.0」と実行してマウントしているもので、sec=オプションを付けていない場合はNTLMv2を使用しているようでした。

この「vserver cifs session show -fields auth-mechanism,protocol-version,windows-user,address」はCIFS接続が継続している間は表示される、というものになっているため、数分間アクセスを行わないとリストから消えます。

このため、NTLMv2でアクセスしているかどうかが分からない機械がある場合は、アクセス操作を行ってみた直後にコマンドを実行してみる必要があります。

必要な対応

ONTAP OSのバージョンアップが必要な場合はアップデートを行います。

2023/05/11時点ではCVE-2022-38023に対応するアップデートとして以下が提供されています。

 ONTAP 9.7P22 (End of Limited Support 2025/07/31)
 ONTAP 9.8P18 (End of Limited Support 2025/12/31)
 ONTAP 9.9.1P15 (End of Limited Support 2026/06/30)
 ONTAP 9.10.1P12(End of Limited Support 2027/01/31)
 ONTAP 9.11.1P8 (End of Limited Support 2027/07/31)
 ONTAP 9.12.1P2 (End of Limited Support 2028/02/28)

FAS2520/2552/2554,FAS8020/8040/8060/8080 は ONTAP 9.9.1 までサポート
FAS2620/2650 は ONTAP 9.11.1 までサポート
FAS2720/2750などの現行機種は 制限なし

アップデート先は、同じONTAP OSバージョン内の最新にするか、ハードウェアがサポートされている範囲の新しいバージョンにするかはご自由に

ONTAP OS 9.6などのアップデート提供がバージョンを使用している場合は、ONTAP 9.7以降にアップデートする必要があります。

古いONTAPを新しいONTAPにアップデートする場合、状態によっては複数回のアップデートが必要となります

詳細は「どのバージョンの ONTAP にアップグレードできますか。」を参照してください

例えばONTAP 9.11.1へアップデートする場合、下記のような手順となります。

  ONTAP 9.4→(9.5+9.7)→9.9.1→9.11.1
  ONTAP 9.5→(9.7+9.9.1)→9.11.1
  ONTAP 9.6→9.8→9.11.1
  ONTAP 9.7→(9.8+9.11.1)

(9.5+9.7)というのはONTAP 9.5とONTAP 9.7のアップデートファイルを読み込ませてONTAP 9.7のアップデートとして実行すると、内部的に自動的にONTAP 9.5の適用を行ったあとに9.7適用を行ってくれる、ということをします。

どんな感じでアップデートするか、というのは「この記事」から持ってきた下記画面を参照してください。

1)「イメージの追加」からアップデートするファイルを2つ登録する

2) 新しいバージョンを選択して「更新」

3) まずは古いバージョンの方の適用が開始される

4) 続いて新しいバージョンの方が適用される

5) 終了


NetAppでの調査/対応に関するメモ

NetAppでサポートする認証方式の変更

Set the SMB server minimum authentication security level

「vserver cifs security show -fields lm-compatibility-level」で現在設定されている認証方式を確認

netapp9101::> vserver cifs security show -fields lm-compatibility-level
vserver lm-compatibility-level
------- ----------------------
Cluster -
Snapmirror-WAN
        -
netapp9101
        -
netapp9101-01
        -
svm0    lm-ntlm-ntlmv2-krb
svm2    lm-ntlm-ntlmv2-krb
svm3    lm-ntlm-ntlmv2-krb
7 entries were displayed.
netapp9101::>

値の意味は下記

ValueDescription
lm-ntlm-ntlmv2-krb (default)The storage virtual machine (SVM) accepts LM, NTLM, NTLMv2, and Kerberos authentication security.
ntlm-ntlmv2-krbThe SVM accepts NTLM, NTLMv2, and Kerberos authentication security. The SVM denies LM authentication.
ntlmv2-krbThe SVM accepts NTLMv2 and Kerberos authentication security. The SVM denies LM and NTLM authentication.
krbThe SVM accepts Kerberos authentication security only. The SVM denies LM, NTLM, and NTLMv2 authentication.

標準ではLM, NTLM, NTLMv2, Kerberosに対応している、ということになっている。

NetApp側で強制的にLM,NTLM,NTLMv2クライアントを排除する、という場合は「krb」に変更する

Kerberos接続時のAES暗号化を有効化

Enable or disable AES encryption for Kerberos-based communication

「vserver cifs security show -fields is-aes-encryption-enabled」を実行して確認。ONTAP 9.12.1以降は「true」が標準値となる。

netapp9101::> vserver cifs security show -fields is-aes-encryption-enabled
vserver is-aes-encryption-enabled
------- -------------------------
Cluster -
Snapmirror-WAN
        -
netapp9101
        -
netapp9101-01
        -
svm0    false
svm2    false
svm3    false
7 entries were displayed.
netapp9101::>

なお設定を変更する場合は、ドメイン認証を求められるので注意

netapp9101::> vserver cifs security modify -vserver svm0 -is-aes-encryption-enabled true
Info: In order to enable CIFS AES encryption, the password for the CIFS server
      machine account must be reset. Enter the username and password for the
      CIFS domain "ADOSAKANA.LOCAL".
Enter your user ID: administrator
Enter your password:
netapp9101::> vserver cifs security show -fields is-aes-encryption-enabled
vserver is-aes-encryption-enabled
------- -------------------------
Cluster -
Snapmirror-WAN
        -
netapp9101
        -
netapp9101-01
        -
svm0    true
svm2    false
svm3    false
7 entries were displayed.
netapp9101::>

なお、AES暗号化に関連する設定は is-aes-encryption-enabled 以外に aes-enabled-for-netlogon-channel という設定もある。こちらの詳細については「CVE-2022-38023適用後 NetAppがActive Directoryに参加できない」参照


2023/07/24追記

sambaによるActive Direcotryサーバで NTLMv2認証を使う場合のトラブル

sambaの商業サポートを行っているOSStechに2023/07/21付けのお知らせとして「Windows Updateに伴うSambaの認証の問題を解消するアップデートです。」が掲載されています。

曰く、セキュアチャネルが壊れ、下記3種類の問題が発生するとのこと。

・Sambaのみを使用したActive Directoryサーバ環境におけるNTLM認証が失敗
・リモートデスクトップの認証が失敗
・Sambaのみを使用したNTドメイン環境でNTドメインのログオンが失敗

バグとしては恐らく「BUG 15418: Secure channel faulty since Windows 10/11 update 07/2023」となる

てっきりActive Directoryサーバを運用しているWindows Serverのみ気を使っていればいいのかと思ったら、クライアント側にも影響があったとは・・・


2023/11/14追記

ONTAP 9.10.1より前のONTAPで、CVE-2022-38023適用したActive Directoryドメイン(sambaドメイン含む)に参加できない、という事象が発生した。

詳細は「CVE-2022-38023適用後 NetAppがActive Directoryに参加できない」に書いたが、Active DIrectoryサーバとONTAP間のkerberos通信の暗号化をRC4 MD5ではなくて、AESを使うようにしなければならないので、NetAppのcifsオプションにあるis-aes-encription-enabledとaes-enabled-for-netlogon-channelを有効にする必要がある、というものだった。

APC Network Management Card のメモ 2023/04/13版


久しぶりにAPC Smart-UPS に Network Management Cardを入れて設定することになった。

しかしAPCのサイトにある「Network Management Card | よくあるお問い合わせ」にある「Network Management Card 2のAPC Device IP Configration Wizard 5.0.2 を使用したIPアドレス設定方法」に記載されているリンク先は軒並み機能していなかった。

そんなわけでメモ書き

1) Network Management CardのIPアドレスを振るのはシリアル接続かDevice IPソフトウェア

Network Management Card Device IP Configuration Utility v5.0.4

ただし、Java Runtime Environment 1.8以降が必要なのだが、何を使うかが悩みどころ・・・

APCのドキュメント的にはすなおにOracle Java SE Runtime Environmentのダウンロードを推奨で

他社をみるとQuestもOracle JRE「JRE(version 1.8 or above) Installation for Microsoft Windows (4229374)

キヤノンITソリューションはAmazon Correttoを使っていた「Q:【構築手順】Windows Server環境で、オープンソースJDKを利用してセキュリティ管理ツールをインストールするには?

とりあえず今回はjre-8u361-windows-x64.exeを使った

2) Network Management Cardのfirmware

UPS Network Management Cardsのfirmware からfirmwareをダウンロード

カードを挿すUPSの種類により適用するfirmwareも異なる

3) Device IP使っても出ない場合

dhcpで範囲内にいるはずなのにDevice IPで出てこなかった

その場合はarp -aの結果からMACアドレスが「28:29:~」(Network Management Card 3/AP9640Jの場合)で始まるものを探して総当たりでhttpsアクセスしてみるとよい

4)Network Management Card 3の言語表示

Network Management Card 2では追加言語ファイルを導入しないと日本語表示がなかったりした。

Network Management Card 3は標準状態で多言語対応しているのだが、デフォルト表示が基本Englishとなっている。

ログイン画面の言語設定変更は[Configuration]-[Security]-[Local Users]-[Default Settings]

ここのLanguageを「English」から「日本語」に変えるとログイン画面の表示が日本語になります。

ログイン画面は日本語になったものの「apc」ユーザでログインすると英語表示。

これはユーザ特有設定の方にあるため、[Configuration]-[Security]-[Local Users]-[Management]でユーザ一覧を表示する

「apc」をクリックしてLanguageを「English」から「日本語」に変える

4)PCNSのコマンドファイルの指定について

シャットダウン時にバッチファイルを実行させるべく「コマンドファイルのパス」に指定しようと文字を入力しはじめたら下記の様に言われた。

コマンドファイルを読み込めませんでした。ファイルはPowerChuteインストールディレクトリのuser_filesフォルダーにある必要があります。詳細については、ヘルプを参照してください。

ということは、C:\Program Files\APC\PowerChute\user_files にファイルを置いて、ファイル名だけ指定すればいいのかと思ったが、相変わらず上記のエラー

フルパスで指定したら通った・・・

5) ssh接続がうまく行かない

PowerChute Network Shutdown のv4.4にはsshで他のサーバにログインしてコマンドを実行する機能がある。

これを利用してNetAppにログインしようとしたのだがうまくいかない

SSH アクションとして2種類登録を作ってみた

1つはユーザ名とパスワードを入力してログインするタイプ

もう1つはsshキーを使ってログインするもの。

ここで指定したsshキーは C:\Program Files\APC\PowerChute\user_files\ssh_id_rsa.txt という形でWindows Server標準のssh-keygenコマンドを使って作成したやつをコピーしたもの。

アクセス権については特に調整していない。

どちらの設定でも実行するコマンドを列挙した「SSHコマンドファイルのパス」は C:\Program Files\APC\PowerChute\user_files\netappshutdown.txt とした。

内容は以下の確認なしでNetAppを停止する手法を記載した。

set -confirmations off; system node halt -node * -inhibit-takeover true -ignore-quorum-warnings true

で・・・これだけでは動かなかった。

PowerChute Network Shutdownのヘルプにある「SSH設定」の説明で以下がある。

認識されているコマンドプロンプトは次のとおりです。
 ・$ (Linux)
 ・# (Linux admin/root)
 ・> (Windows または RPDU)
ssh_prompt_regex」設定を[SSHAction]セクションに追加することにより、カスタムコマンドプロンプトは、PowerChute構成ファイル (pcnsconfig.ini) を介して追加できます。例えば: 「~」のカスタムコマンドプロンプトを追加するには、「ssh_prompt_regex = ~\s」を追加します。

NetAppのコマンドプロンプトは「クラスタ名::> 」なので、WindowsまたはRPDUの「>」で通るものかと思っていたのですが、違ったようです。

C:\Program Files\APC\PowerChute\group1\pcnsconfig.iniの[SSHAction数字]に以下のように「::>」プロンプトを追加することで動作するようになりました。

ssh_prompt_regex = \::>\s

ONTAPをActive Directoryに参加させようとしたら時刻が狂ってて参加失敗した


ONTAPをActive Directoryに参加させようとしたら「Reason: SecD Error: no server available.」でエラーになった。

ontap91::> vserver cifs create -cifs-server newsvm0 -domain adosakana.local -ou CN=Computers

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    91] Loaded the preliminary configuration.
  [   213] Created a machine account in the domain
  [   214] Successfully connected to ip 172.17.44.49, port 445 using
           TCP
  [   249] Encountered NT error (NT_STATUS_MORE_PROCESSING_REQUIRED)
           for SMB command SessionSetup
  [   250] Cluster and Domain Controller times differ by more than
           the configured clock skew (KRB5KRB_AP_ERR_SKEW)
  [   250] Kerberos authentication failed with result: 7537.
  [   258] Encountered NT error (NT_STATUS_MORE_PROCESSING_REQUIRED)
           for SMB command SessionSetup
  [   259] Cluster and Domain Controller times differ by more than
           the configured clock skew (KRB5KRB_AP_ERR_SKEW)
  [   259] Kerberos authentication failed with result: 7537.
  [   259] Unable to connect to LSA service on
           adserver.adosakana.local (Error:
           RESULT_ERROR_KERBEROS_SKEW)
  [   260] No servers available for MS_LSA, vserver: 2, domain:
           adosakana.local.
**[   260] FAILURE: Unable to make a connection (LSA:ADOSAKANA.LOCAL),
**         result: 6940
  [   260] Could not find Windows SID
           'S-1-5-21-937304154-1581684492-536532533-512'
  [   284] Deleted existing account
           'CN=NEWSVM0,CN=Computers,DC=adosakana,DC=local'

Error: command failed: Failed to create the Active Directory machine account
       "NEWSVM0". Reason: SecD Error: no server available.

ontap91::>

古いONTAPがActive Directoryに参加できない」や「ONTAP 9.5でsambaドメインに参加できない & ONTAP 9.7で失敗」の話かな?と思って対処してみるも変わらない

もしかして、と時刻を確認してみると、Active DirstoryサーバとONTAPとの時刻差が3分以上あった。

時計を合わせるとActive Directoryへの参加が成功した。

PowerShellから直接ssh接続でNetAppにログインして設定情報を取得してCSV化するスクリプト


先日「NetAppの設定内容をcsvファイルに出力したい」という記事で手動でやる手法について記載した。

最近のWindowsだと直接sshコマンドが実行できるようになっているので、NetApp側に公開鍵を登録して、パスワードなしでアクセスできるように設定した上で、PowerShellスクリプトを実行することで、設定をスクリプト化できないかを実施してみた。

とりあえず全項目とればいいか、と「-showallfields true」設定でやっているが、下記スクリプトはONTAP 9.10.1の場合のもので、バージョンが異なると全部の項目数が変わる可能性があるので、一度手動で「set -privilege admin -rows 0 -units GB -showallfields true ; vserver cifs share show”」を実行し、出力される項目名を確認しておくこと

# タブ区切りのため `t を指定
$count=0
$flag=0
$results=@()

$results=cmd /c ssh.exe -l admin NetAppクラスタ "set -privilege admin -rows 0 -showseparator `t -units GB -showallfields true ; vserver cifs share show" | ForEach-Object {
    $line=$_.split("`t")
    if(($line[0] -eq "vserver") -and ($flag -eq 0)){
        $flag=1
        $titlecount=$count
    }
    if(($flag -eq 1) -and ($count -gt ($titlecount+1))){
        $output = New-Object -TypeName psobject
        $output | Add-Member -MemberType NoteProperty -Name "vserver" -Value $line[0]
        $output | Add-Member -MemberType NoteProperty -Name "share-name" -Value $line[1]
        $output | Add-Member -MemberType NoteProperty -Name "cifs-server" -Value $line[2]
        $output | Add-Member -MemberType NoteProperty -Name "path" -Value $line[3]
        $output | Add-Member -MemberType NoteProperty -Name "share-properties" -Value $line[4]
        $output | Add-Member -MemberType NoteProperty -Name "symlink-properties" -Value $line[5]
        $output | Add-Member -MemberType NoteProperty -Name "file-umask" -Value $line[6]
        $output | Add-Member -MemberType NoteProperty -Name "dir-umask" -Value $line[7]
        $output | Add-Member -MemberType NoteProperty -Name "comment" -Value $line[8]
        $output | Add-Member -MemberType NoteProperty -Name "acl" -Value $line[9]
        $output | Add-Member -MemberType NoteProperty -Name "attribute-cache-ttl" -Value $line[10]
        $output | Add-Member -MemberType NoteProperty -Name "volume" -Value $line[11]
        $output | Add-Member -MemberType NoteProperty -Name "offline-file" -Value $line[12]
        $output | Add-Member -MemberType NoteProperty -Name "vscan-fileop-profile" -Value $line[13]
        $output | Add-Member -MemberType NoteProperty -Name "max-connections-per-share" -Value $line[14]
        $output | Add-Member -MemberType NoteProperty -Name "force-group-for-create" -Value $line[15]
        $output
    }
    $count++
}

$results | Export-Csv test.csv -Encoding UTF8 -NoTypeInformation  -NoClobber