次の方法で共有


SUSE Linux Enterprise Server VM の接続と登録に関する問題のトラブルシューティング

適用対象: ✔️ Linux VM

この記事では、SUSE Linux Enterprise Server (SLES) イメージを使用して Azure 仮想マシン (VM) が設定されているが、VM が SUSE サブスクリプション管理ツール (SMT) リポジトリに接続できない状況に対処します。 この記事では、いくつかの基本的なトラブルシューティング手順について説明し、特定のシナリオ (パッケージを管理するための SUSE コマンド ライン ツールである Zypper のエラーなど) に対して実行するアクションについて説明します。 Microsoft の Linux スペシャリストは、SUSE のサポート エクスペリエンスとドキュメントに基づいてこの情報を組み立てました。

より多くの手がかりを得るために、各コマンドの出力を読み取る必要があります。 さらにトラブルシューティングを行うために、結果とメッセージを保存することをお勧めします。

前提条件

  • VM からのインターネット アクセス。
  • Python 言語インタープリター。
  • クライアント URL (curl) ツール。
  • Zypper パッケージ マネージャー。
  • OpenSSL ツールキット。
  • SUSEConnect ツール。
  • registercloudguest ツール。

Note

SLES VM がプロキシ サーバーの背後にある場合は、「 プロキシ経由のパブリック クラウド更新インフラストラクチャへのアクセスに関する記事で説明されている技術的な考慮事項を確認することをお勧めします。 Azure 上の SLES VM の場合、必要なアクションは次のとおりです。

  1. SLES VM から更新サーバーに接続するには、ホスト名の解決が必要です。パブリック DNS サーバーでは解決できません。 そのため、一部の Linux/Unix プロキシ サーバーの実装では、"smt-azure" という名前を解決できるように、プロキシ サーバー側の /etc/hosts にレコードを手動で配置する必要があります。

    例のレコードは次のとおりです。

    52.165.88.13 smt-azure.susecloud.net smt-azure

    使用可能な IP アドレスは、Azure リージョンによって異なります。 詳細については、この smt XML ファイル IP アドレスの一覧を参照してください。

  2. Instance Metadata Service (IMDS) によって使用される IP アドレス 168.63.129.16 および 169.254.169.254 はプロキシ アクセスをバイパスする必要があります。 これらの特殊な IP アドレスにはプロキシ サーバー経由でアクセスできません。SLES VM には、実行されているクラウド環境を認識し、適切な SUSE 更新サーバーを見つけるために IMDS からの情報が必要です。

    たとえば、/etc/sysconfig/proxyNO_PROXY変数は、次のように SLES VM で構成する必要があります。

    NO_PROXY="localhost, 127.0.0.1, 168.63.129.16, 169.254.169.254"

トラブルシューティングのチェックリスト

手順 1: リポジトリ診断スクリプトを実行する

SUSE エンジニアである Rich Paredes によって提供される SUSEcloud リポジトリチェック スクリプト を実行します。 この Python スクリプトは、次のタスクを実行します。

  1. SUSE パブリック クラウド リポジトリへの接続を確認します。

  2. 既存の問題を修正してみてください。

  3. /var/log/ ディレクトリにログ アーカイブを作成し、sc-repocheck_<YYMMDD_hhmmss>.tar.xgz という名前を付けます。 このログは、接続または登録の問題が解決しない場合に役立ちます。

スクリプトを開始するには、次のコマンドを実行して、GitHub の場所から Python インタープリターにスクリプトを転送します。

python3 <(curl --location --silent https://raw.githubusercontent.com/rfparedes/susecloud-repocheck/main/sc-repocheck.py)

コマンドを正常に実行するには、VM からのインターネット アクセスが必要です。 それ以外の場合は、最初にスクリプトをダウンロードしてから、コマンドを実行するように変更する必要があります。

手順 2: ポート 443 のサーバー IP アドレスへの接続を確認する

VM は、ポート 443 で、(VM が配置されているリージョンに基づいて) smt-azure.susecloud.net SUSE リポジトリ サーバーへの TCP 接続をリージョン サーバーと共に開くことができる必要があります。 リポジトリ サーバーとリージョン サーバーの IP アドレスの一覧は、次の場所にあります。

IP アドレスの種類 IP アドレス一覧を含む URL
すべてのリージョンの SMT サーバー IP アドレス https://susepubliccloudinfo.suse.com/v1/microsoft/servers/smt.xml
リージョン サーバーの IP アドレス https://susepubliccloudinfo.suse.com/v1/microsoft/servers/regionserver.xml

リージョンのリポジトリ サーバーとリージョン サーバーの接続を確認するには、Secure Sockets Layer (SSL) クライアントとトランスポート層セキュリティ (TLS) クライアントの OpenSSL s_client コマンド を使用します。 プレースホルダーの適切な IP アドレスを次の構文に挿入します。

openssl s_client -connect <IP address>:443

このコマンドを実行すると、サーバー証明書が表示されます。 このコマンドは、適切な SSL 接続も開始します。

次の例は、米国東部 2 リージョンの SUSE リポジトリ サーバーのコマンド出力が成功したことを示しています (場所コード eastus2、IP アドレス 20.186.112.116)。

$ echo "" | openssl s_client -connect 20.186.112.116:443
CONNECTED(00000003)
Can't use SSL_get_servername
depth=1 C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = CSM, CN = SUSE, emailAddress = suse-public-cloud@susecloud.net
verify return:1
depth=0 C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = Public Cloud, CN = Update server certificate (smt-azure.susecloud.net), emailAddress = suse-public-cloud@susecloud.net
verify return:1
---
Certificate chain
 0 s:C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = Public Cloud, CN = Update server certificate (smt-azure.susecloud.net), emailAddress = suse-public-cloud@susecloud.net
   i:C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = CSM, CN = SUSE, emailAddress = suse-public-cloud@susecloud.net
---
Server certificate
-----BEGIN CERTIFICATE-----
<64-character lines of printable ASCII characters>
    .
    .
    .
-----END CERTIFICATE-----
subject=C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = Public Cloud, CN = Update server certificate (smt-azure.susecloud.net), emailAddress = suse-public-cloud@susecloud.net

issuer=C = DE, ST = Bavaria, L = Nuremberg, O = SUSE, OU = CSM, CN = SUSE, emailAddress = suse-public-cloud@susecloud.net

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2538 bytes and written 373 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 4096 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
DONE

原因 1: サーバー証明書または SSL セッションが表示されない

出力には、サーバー証明書または SSL セッションは表示されません。 このシナリオは、多くの場合、コマンドが SSL パケット検査を実行するネットワーク仮想アプライアンス (NVA) を走査する場合に発生します。 この検査により、NVA は暗号化されたセッションに独自の SSL 証明書を挿入します。 SUSE では証明書のピン留めを使用するため、挿入された別の SSL 証明書によってピン留め操作が中断される可能性があります。 ピン留めを解除すると、SUSE リポジトリは接続を拒否します。

アクション 1: ネットワーク仮想アプライアンスの構成を修正する

ネットワーク仮想アプライアンスで次の処理が行われないことを確認します。

  • SUSE リポジトリの IP アドレスへのアクセスをブロックします。
  • SUSE リポジトリへのセキュリティで保護された接続で SSL パケット検査を実行します。
  • サーバーに NVA SSL 証明書を挿入します。

原因 2: 古いクラウド インフラストラクチャ情報

SUSE は、2020 年 6 月 1 日にパブリック クラウド インフラストラクチャの更新を行いました。 この変更により、古い VM または古いマーケットプレース イメージから新しくデプロイされた VM の接続の問題が発生する可能性があります。

アクション 2: SUSE パブリック クラウド インフラストラクチャを更新する

  1. 問題のある VM では、Azure オフライン更新プログラムをダウンロードして抽出してから、Zypper を使用してパッケージを手動で更新する必要があります。 <SLE-base> プレースホルダーを VM で使用されている SLES のバージョン (SLE12またはSLE15) に置き換えて、次のコマンドを実行します。

    archiveFileName=late_instance_offline_update_azure_<SLE-base>.tar.gz
    wget --no-check-certificate https://52.188.224.179/$archiveFileName
    sha1sum $archiveFileName
    tar --extract --file=$archiveFileName
    cd x86_64
    zypper --no-refresh --no-remote --non-interactive install *.rpm
    
  2. diagnostic スクリプトを再実行して、リポジトリの問題を修正します。

原因 3: 処理不可能なエンティティ エラー

SUSE では、VM が SUSE パブリック クラウド インフラストラクチャに接続するときに、構成証明されたデータを使用する必要があります。 それ以外の場合は、 /var/log/cloudregister ファイルに次のエラーが記録されます。

2021-06-22 17:27:33,950 エラー: サーバー "52.157.241.14,None" から製品情報を取得できません

処理できないエンティティ

{
"type": "error",
"error": "要求された製品 'SUSE Linux Enterprise Server for SAP Applications 15 SP1 x86_64' がこのシステムでアクティブ化されていません。"
"localized_error": "要求された製品 'SUSE Linux Enterprise Server for SAP Applications 15 SP1 x86_64' がこのシステムでアクティブ化されていません。
}

モジュールを登録できません。終了しています。

アクション 3: 最新の Azure および Azure ハイブリッド特典 パッケージに更新する

パブリック クラウド インフラストラクチャの更新プログラムとAzure ハイブリッド特典をインストールすると、VM は構成証明されたデータを使用し、処理不可能なエンティティ エラーを回避します。 これを行うには、次の手順を実行します。

  1. 原因 2 の SUSE パブリック クラウド インフラストラクチャの Azure オフライン更新プログラム 必ずインストールしてください。

  2. VM で次のコマンドを実行して、SUSE Linux Enterprise のAzure ハイブリッド特典をインストール。 ここでも、 <SLE-base> プレースホルダーを VM SLES のバージョン (SLE12 または SLE15) に置き換えます。

    ahbFileName=late_instance_offline_ahb_<SLE-base>.tar.gz
    wget --no-check-certificate https://52.188.224.179/$ahbFileName
    sha1sum $ahbFileName
    tar --extract --file=$ahbFileName
    cd late_update
    zypper --no-refresh --no-remote --non-interactive install *.rpm
    
  3. diagnostic スクリプトを再実行して、リポジトリの問題を修正します。

原因 4: 一般的な登録の問題

VM にリポジトリ アクセス用の古い資格情報が含まれているか、更新またはインストールを試みた後にシステムが登録されていないことに関するメッセージが表示されます。

アクション 4: 強制的に登録する

登録に関するほとんどの問題を解決するには、 SUSEConnect cleanup コマンドと registercloudguest コマンドの組み合わせを、 force-new パラメーターを使用して指定します。

SUSEConnect --cleanup
registercloudguest --force-new

これらのコマンドで登録が修正されない場合は、次の SUSEConnect コマンドを実行して、SLES SAP 製品の名前を含む現在の登録状態を取得してみてください。

SUSEConnect --url https://smt-azure.susecloud.net --status-text

その製品名を使用して、次の SUSEConnect コマンドを実行して製品をアクティブにします。

SUSEConnect --url https://smt-azure.susecloud.net --product <SLES-SAP-Product-name>

これらのコマンドが失敗した場合は、すべてのリポジトリ情報をクリーンアップしてから、VM の登録を試みます。 その後、証明書とその他のコンポーネントに関連するすべてのエラーが消えます。 次のコマンドを実行します。

SUSEConnect --cleanup
rm /etc/zypp/{credentials,services,repos}.d/*
rm --force --recursive /var/cache/zypp/*
rm /var/lib/cloudregister/*
registercloudguest --force-new

最後に、SUSEConnect をもう一度実行して、VM の登録状態を確認します。

SUSEConnect --status

JSON コマンドの出力で、 "status":"Registered" エントリを探します。

原因 5: 構成証明されたデータが指定されていません (422)

repository 診断スクリプトを実行すると、スクリプトが Zypper 更新プログラムに影響する問題の修正を試みている間に、次のエラーが発生する可能性があります。

エラー: SLES_SAP 12.5 x86_64をアクティブ化しています...エラー: 登録サーバーから "インスタンスの検証に失敗しました: 構成証明されたデータが指定されていません" が返されました (422)

アクション 5: Zypper 更新プログラムの問題を修正する

  1. まだ行っていない場合は、「原因 2」で説明されているように、SUSE パブリック クラウド インフラストラクチャ更新します。

  2. diagnostic スクリプトもう一度実行します。

  3. "422" エラーが解決しない場合は、 /etc/regionserverclnt.cfg 構成ファイルを次のテキストのように変更します。

    [server]
    api = regionInfo
    certLocation = /var/lib/regionService/certs
    regionsrv = 23.100.36.229,40.121.202.140,52.187.53.250,104.45.31.195,191.237.254.253
    
    [instance]
    dataProvider = /usr/bin/azuremetadata --api latest --subscriptionId --billingTag --attestedData --signature --xml
    instanceArgs = msftazure
    httpsOnly = true
    

次のステップ

さらにサポートが必要な場合は、「 Azure VM のサポートとトラブルシューティングを参照してください。 この記事は、必要に応じてAzure サポートインシデントを提出するのにも役立ちます。 指示に従って、 sc-repocheck_<YYMMDD_hhmmss>.tar.xgz ログ アーカイブのコピーを保持します。これは、サポート エンジニアによって検査が要求される可能性があるためです。

詳細

Azure の動作保証済み Linux ディストリビューションオープン ソース テクノロジの詳細については、「Azure での Linux およびオープンソース テクノロジのサポート」を参照

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。