EVE-NG【Windows Client Side】クリッカブルURLでTelnetが使えない

環境

ホストOS : Windows 10 Pro 20H2 x64
ゲストOS : Free EVE Community Edition Version 2.0.3-110
仮想化ソフト : VMware Workstation 16 Player
EVE-NGクライアント : EVE-NG-Win-Client-Pack-2.0


トラブル概要

事象:クリッカブルURLでTelnetが使えない


<詳細>

1. Native Consoleログインでノードをクリックしてもターミナルが起動しない。
2. Win10設定 > 既定のアプリ > プロトコルごとに既定のアプリを選ぶの中にTELNETプロトコルが存在しない。
3. コマンドプロンプトftype telnet を打っても何も表示されない。


◆ 発生前の状態

Native Consoleログインでノードをクリック後、ターミナルは正常に起動していた(サードパーティのセキュリティソフトはインストールしていない状態だった)

◆ 発生時の設定内容

  • Windows Client Sideにてputty,wireshark,VNCクライアントをインストール済
  • C:\Program Files\EVE-NGにあるwin10_64bit_putty.regを実行済
  • Windowsの機能の有効化または無効化にてTelnet Clientチェック済
  • セキュリティソフト(Norton LifeLock)をインストール済

直接的な原因

TELNETとターミナルの関連付けを定義するレジストリファイルが存在しないため、ブラウザ上でクリッカブルURL(telnet://)が機能せず、ターミナルも起動しないことが直接的な原因と判明した。

その他、推測される原因および影響

設定変更を試しているうちに何らかの影響で当該レジストリが削除された。
セキュリティソフト(Norton LifeLock)設定変更時の影響など。


切り分け実施内容

  • セキュリティソフトの一時的な無効化を実施した。
  • コマンドプロンプト(管理者権限)で ftype telnet を C:\Program Files\EVE-NG\putty.exeに適用の上、PCを再起動した。
  • ブラウザのキャッシュをクリアした。
  • 複数のブラウザ(chromefirefox、edge)で試行した。
  • 別のPC上にインストールされているEVE-NGクライアントではノードクリックで正常にターミナルが起動することから、Win10設定 > 既定のアプリ > プロトコルごとに既定のアプリを選ぶを精査し、URL:Telnet ProtocolとSSH,Telnet and Rlogin clientの関連付けの表示を確認した。
  • 別のPCとトラブルの起きているPCのEVE-NG Client関連レジストリを比較した結果、以下のレジストリに差分があることを確認した。
\HKEY_CLASSES_ROOT\telnet\shell\open\command
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\Shell\Open\Comman



レジストリ設定


1.HKEY_CLASSES_ROOT関連

1-1. \HKEY_CLASSES_ROOT\telnet 配下のフォルダ(キー)構成が以下のとおりであること。


\HKEY_CLASSES_ROOT\telnet\DefaultIcon
\HKEY_CLASSES_ROOT\telnet\shell\open\command

f:id:helpmemo:20210427193709p:plain
※キーが無い場合は新規作成する。


1-2. \HKEY_CLASSES_ROOT\telnet 内に下記レジストリファイルがあること。


f:id:helpmemo:20210427195235p:plain

名前 種類 データ
(既定) REG_SZ URL:Telnet Protocol
EditFlags REG_DWORD 0x00000002(2)
FriendlyTypeName REG_SZ @C:\WINDOWS\system32\ieframe.dll,-907
URL Protocol REG_SZ

※ファイルが無い場合は新規作成する。
※EditFlagsの値のデータ(v)は2、表記は16進数(H)
※URL Protocolの値のデータ(V)は空欄


1-3. \HKEY_CLASSES_ROOT\telnet\DefaultIcon 内に下記レジストリファイルがあること。


f:id:helpmemo:20210427210940p:plain

名前 種類 データ
(既定) REG_SZ C:\Windows\System32\url.dll,0

※ファイルが無い場合は新規作成する。


1-4. \HKEY_CLASSES_ROOT\telnet\shellおよび\shell\open内に下記レジストリファイルがあること。

\HKEY_CLASSES_ROOT\telnet\shell
f:id:helpmemo:20210427211303p:plain

\HKEY_CLASSES_ROOT\telnet\shell\open
f:id:helpmemo:20210427211323p:plain

名前 種類 データ
(既定) REG_SZ (値の設定なし)

※ファイルが無い場合は新規作成する。
※\shellおよび\shell\open共通
※(値の設定なし)=データは空欄


1-5. \HKEY_CLASSES_ROOT\telnet\shell\open\command内に下記レジストリファイルがあること。

f:id:helpmemo:20210427211653p:plain

名前 種類 データ
(既定) REG_SZ "C:\Program Files\EVE-NG\putty.exe" %1

※ファイルが無い場合は新規作成する。
※C:\Program Files\EVE-NGにあるwin10_64bit_putty.regを実行すると書き換えられるレジストリファイル。



2.HKEY_LOCAL_MACHINE関連

2-1. \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet 配下のフォルダ(キー)構成が下記のとおりであること。


HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\DefaultIcon
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\Shell\Open\Command

f:id:helpmemo:20210427212341p:plain ※キーが無い場合は新規作成する。


2-2. \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet 内に下記レジストリファイルがあること。

f:id:helpmemo:20210427212506p:plain

名前 種類 データ
(既定) REG_SZ URL:Telnet Protocol
EditFlags REG_DWORD 0x00000002(2)
FriendlyTypeName REG_SZ @C:\WINDOWS\system32\ieframe.dll,-907
URL Protocol REG_SZ

※ファイルが無い場合は新規作成する。
※前述のレジストリキー\HKEY_CLASSES_ROOT\telnet 内のファイル構成と同じになる。


2-3. \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\DefaultIcon 内に下記レジストリファイルがあること。

f:id:helpmemo:20210427212534p:plain

名前 種類 データ
(既定) REG_SZ C:\Windows\System32\url.dll,0

※ファイルが無い場合は新規作成する。
※前述のレジストリキー\HKEY_CLASSES_ROOT\telnet\DefaultIcon 内のファイル構成と同じになる。


2-4. \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\shellおよび\shell\open 内に下記レジストリファイルがあること。

\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\shell
f:id:helpmemo:20210427212616p:plain

\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\shell\open
f:id:helpmemo:20210427212637p:plain

名前 種類 データ
(既定) REG_SZ (値の設定なし)

※ファイルが無い場合は新規作成する。
※\shellおよび\shell\open共通
※(値の設定なし)=データは空欄
※前述のレジストリキー\HKEY_CLASSES_ROOT\telnet\shellおよび\shell\open 内のファイル構成と同じになる。


2-5. \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\Shell\Open\Command 内に下記レジストリファイルがあること。

f:id:helpmemo:20210427212738p:plain

名前 種類 データ
(既定) REG_SZ "C:\Windows\System32\rundll32.exe" "C:\Windows\System32\url.dll",TelnetProtocolHandler %l

※ファイルが無い場合は新規作成する。



正常性の確認

レジストリ設定に記載した各レジストリを登録すると Win10設定 > 既定のアプリ > プロトコルごとに既定のアプリを選ぶ 内のプロトコルに特定のアプリを関連付ける一覧に TELNET URL:telnet Protocol と SSH,Telnet and Rlogin Client が表示される。

f:id:helpmemo:20210427213524p:plain

CMDを起動し ftype telnet と入力、レジストリ設定2-5で設定したレジストリファイルの値が表示される。

f:id:helpmemo:20210427213639p:plain

EVE-NG client(WEB)にてNative Consoleを選択、ログインする。テスト用のLabを作り、何らかのノードを追加 > ノード起動 > ノードをクリックするとターミナル(今回の場合はPutty)が起動する。

f:id:helpmemo:20210427213726p:plain


防止策

1. EVE-NG クライアントのレジストリエディタを実行する前に既存のレジストリを必ずバックアップする。

2. 該当レジストリエディタのファイルを開けて、どのようなレジストリ変更が記載されているかを確認した上、実行する前後の差分および挙動を確認する。

3. 不具合発生時は一旦バックアップしたレジストリへ戻してから切り分けする。不具合が起きた状態のまま更に設定変更すると切り分け箇所を見失うため要注意。



あとがき

原因が推測できないトラブルの場合、可能であれば正常稼働する環境を別途用意して問題の発生している環境と比較してみる。その方が状況把握も容易になり、明確に切り分けできることに加えて問題解決への時間短縮につながる。



参考URL