web-dev-qa-db-ja.com

ネストされたRDP、VMWare、ILOコンソールセッション:キーストロークの繰り返しとレイテンシ

私は完全にILOを介してリモートサーバーのインストールに取り組んでいます(ただし、これはIPMIおよびVMWareコンソールセッションにも適用されます)。ソフトウェアアプリケーションと環境により、私のアクセスは、RDPを介してアクセスする必要があるWindowsサーバーに制限されています。そのシステムからターゲットサーバーに移動するには、HP ILO2またはILO3を使用します。

完全に自動化された展開システムを使用できない環境でCentOSインストールを実行しようとしています。テキストモードでこれを行っていますが、キーストロークがランダムに繰り返され、適切なインストールオプションを選択するのが困難です。例えば:

ks=http://all.yourbase.org/kickstart/ks.cfg

最終的には次のようになります:

ks====httttttp://allll..yourbaseee.....org/kicksstart/ks.cccfg

これは、MicrosoftのRDPクライアント(MacおよびWindows)を使用して行います。インストールを実行したり、ネストされたセッションでリモート作業を行ったりするときにも、これに気付きました。

enter image description here

これに対する素敵な修正はありますか、それとも単にプロトコルの機能ですか?

18
ewwhite

一方、SSH接続はキーを送信しますストローク、HP ILO接続がキーを送信します 。キーを押すたびに、サーバーは個別のKeyDownイベントとKeyUpイベントを受け取ります。 KeyUpイベントの受信が遅くなると、キーストロークが繰り返されます。

KeyUpイベントが遅れて受信される最も可能性の高い2つの理由は次のとおりです。

  1. ネットワークの混雑/パフォーマンスの問題。
  2. ILO接続を開始するクライアントシステムのパフォーマンスが低い。クライアントが仮想マシンの場合、基盤となるホストシステムは過負荷ですか、またはVMに割り当てられているメモリ/ CPUリソースが不十分ですか?)

根本的な原因に対処できない場合:

  1. キーの繰り返しの問題は、「キーのアップ/ダウン」と呼ばれるILO2設定を無効にすることで回避できます。これにより、ILO2はキーの状態ではなくキーストロークを送信します。残念ながら、この設定はILO3から削除されました。
  2. ターゲットオペレーティングシステムがLinuxの場合、コンソールをttyS0にリダイレクトし、仮想コンソールの代わりに仮想シリアルポート(VSP)セッションを使用することで問題を回避できる場合があります。シリアル接続はキーアップ/ダウンイベントの代わりにキーストロークを送信するため、これによりキーアップ/ダウンの問題が解消されます。
  3. ターゲットシステムでキーリピートレートを調整したり、オートリピートを完全に無効にしたりすると役立つ場合があります。主要な繰り返し問題の重大度によっては、これを達成するのは容易ではない場合があることを認めます。
  4. Macをローカルワークステーションとして使用している場合、Command-Vを使用して完全なコマンドをMac RDPクライアントに貼り付けることをお勧めします。これが実行可能な回避策かどうかはわかりませんが、興味深い効果があるかもしれません。特に、ローカルのコマンドとホットキーの組み合わせが予測どおりに機能し続けるため、MacワークステーションからリモートのWindowsマシンで作業することを高く評価しています。

参照:

10
Skyhawk

これは、プロトコルの問題にすぎないようです。接続元の中央サーバーのRDPトランスポートとして Ericom Blaze を使用することで、問題を多少軽減しました。例えば「ジャンプボックス」。

他のもの:

複数のネストされたセッションを回避しようとしています。

MacでWindows 7でVMWare Fusionを実行していますが、特定の場合にWindowsのネイティブRDPを使用できます。

今のところこれで全部です。

5
ewwhite

次の行を追加するには、.vmxファイルを編集する必要があります。

keyboard.typematicMinDelay = "2000000"

それは「バウンス」を取り出します。

私のバージョンのvmwareでは、VMがダウンしているときにこの変更を行う必要があります。編集ウィンドウから作成できることを理解していますが、その場所を見つけることができませんでした。

2
Bob Leder

RDPへの接続で問題が発生していますか(メモ帳に正しく入力できますか?)、またはRDPとiLOの間で問題が発生していますか?

RDPとiLOの間にある場合(私はあなたがすでにこれを行っていることを知っています)

  1. Javaリモートコンソールを使用するのはほぼ不可能でした。「リモートコンソール」(.Netと呼ばれることもあります)を使用した場合、大幅な改善が見られました。揺れがなく、キーストロークの繰り返しや紛失は起こりませんでした。

  2. ライブCDから起動し、opensshサーバーをインストールし、sshを使用して接続します。 ssh経由でインストールを実行します(接続が不適切な場合は画面も使用します。

あなたとRDPの間にいる場合:

Windowsボックスの低帯域幅に調整されたfreenxまたはvncを使用します。これにより、少なくともキーストロークがクリーンアップされます。 RDPへの接続に問題はありませんか(キーストロークの問題が発生していますか?

両方の場合:メモ帳でコマンドを書き、できればコピーして貼り付けます。うまくいけば、入力よりもうまくいきます。

1
Rqomey

最初に覚えておくべき重要なことは、接続している仮想マシンやRDPセッション、トップレベルのホストマシンなど、キーストロークを処理するすべてのものでキーリピートを無効にすることです。これは最終的なターゲットマシンを修正しませんが、状況を改善するために多くのことを行います。

ターゲットマシンについて:

Sshを使用してHP iLOのSSHポートに接続すると、キーの繰り返しの問題を回避できるという報告がありますが、ホスト(online.net)がポート22をiLOファイアウォールを通過させなかったため、この方法は使用できませんでした。ただし、iLOのSSHポート(おそらく22)にアクセスできる場合は、これが最も簡単な方法のようです。

Systemdユニットを使用して、キーボードのリピートレートと起動時の遅延時間を設定してみました。

# Note that kbdrate only affects existing keyboards, and HP iLO attaches a new
# USB keyboard when you connect, so you may have to reboot (with the iLO console
# attached) to get the keyboard delay and repeat rate to take effect.

[Unit]
Description=Set longer delay time for key repeat

[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=tty
StandardOutput=tty
ExecStart=/sbin/kbdrate -d 1000 -r 2

[Install]
WantedBy=multi-user.target
WantedBy=rescue.target

(確認してください /sbin/kbdratekbdrateがある場所です。 /etc/systemd/systemd/slower-keyboard-repeat.serviceおよびsystemctl daemon-reload && systemctl enable slower-keyboard-repeat.service

しかしコメントで述べたように、iLOが接続する新しいキーボードでリピートレートを設定するには再起動が必要だったため、これは部分的な成功にすぎませんでした。しかし、マシンの再起動で問題がなければ十分です。

最終的に、すべてのキーボードのデフォルトのリピートレートと遅延時間を変更するために、Linuxカーネルにパッチを適用することになりました。

From 78c32f539b89bf385985bea47a7058a540d31da0 Mon Sep 17 00:00:00 2001
From: Ivan Kozik <[email protected]>
Date: Thu, 30 Mar 2017 13:31:17 +0000
Subject: [PATCH] Increase the default keyboard repeat delay from 250ms to
 1000ms and repeat rate from 1000/33 Hz to 1000/500 Hz to avoid unintentional
 repeated keystrokes when using remote consoles such as HP iLO over
 high-latency links.  These consoles (HP iLO included) often transmit key
 states (up/down) instead of keystrokes, making it impossible to even enter a
 password and log in.

Fixing this in the kernel avoids problems with kbdrate where the parameters
passed to kbdrate don't apply to the new keyboards attached by HP iLO.
---
 drivers/input/input.c          | 2 +-
 drivers/input/keyboard/atkbd.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/input/input.c b/drivers/input/input.c
index 880605959aa6..a195af2d062a 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -2126,7 +2126,7 @@ int input_register_device(struct input_dev *dev)
     * is handled by the driver itself and we don't do it in input.c.
     */
    if (!dev->rep[REP_DELAY] && !dev->rep[REP_PERIOD])
-       input_enable_softrepeat(dev, 250, 33);
+       input_enable_softrepeat(dev, 1000, 500);

    if (!dev->getkeycode)
        dev->getkeycode = input_default_getkeycode;
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index ec876b5b1382..9dd04c2215b3 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -1096,8 +1096,8 @@ static void atkbd_set_device_attrs(struct atkbd *atkbd)
            BIT_MASK(LED_MUTE) | BIT_MASK(LED_MISC);

    if (!atkbd->softrepeat) {
-       input_dev->rep[REP_DELAY] = 250;
-       input_dev->rep[REP_PERIOD] = 33;
+       input_dev->rep[REP_DELAY] = 1000;
+       input_dev->rep[REP_PERIOD] = 500;
    }

    input_dev->mscbit[0] = atkbd->softraw ? BIT_MASK(MSC_SCAN) :
-- 
2.11.0

それで問題は解決しました。

1
Ivan Kozik

私の経験では、タッチタイピングについて学んだことをすべて忘れて、キーを1つずつ、非常に迅速にパンチすることを試みた場合に役立ちました。 1本の指だけを使用して、快適になりすぎて入力を速くしすぎないようにしてください。また、キーを押すことに集中することもできます(すばやく)。この全体は冗談のように聞こえるかもしれませんが、右中指(私は右利き)がはるかに最も速くキーを押すことができることがわかりました。

そしてもちろん、その後はできるだけ早くSSHを稼働させるようにしています。制限が多すぎて許可されない場合は…。

また、別のコンソールを使用してみてください。通常Javaバージョンが最悪ですが、.NETバージョンに問題がある場合は、Javaを試してみてください。 Javaプラグインがブラウザをクラッシュさせる可能性があることに注意してください(これはiLO 2の問題のみです。iLO3はプラグインからWeb Startアプリに移動しました)。

0
chutz

制限されているとおっしゃっていましたが、VNCまたはTeamViewerをインストールしてください。少なくとも、インストールの重要な部分を実行するためだけに。

2番目の解決策は、入力メッセージにMedia Centerタイプの転送プロキシを使用することです。そのため、2番目のキーボードをコンピューターに接続し、HIDを使用して、そのキーボードのみをTCP/SOAP経由でサーバーに転送します。ただし、サーバーにソフトウェアデーモンをインストールする必要があるため、VNCから始めることもできます。

キーストロークの繰り返しを経験したことはありませんが、ゲストOSにVMwareツールがロードされていない場合、RDPを介してVMwareを操作すると、大きなマウスラグが発生します。

上記のどれも適切でない場合、私が持っている最後のオプションは、Microsoftサポートに連絡し、彼らがここで提供する解決策をオープンソースチケットのように報告することです。

0
servermanfail