こんにちは。TOMATOと申します。
WindowsPCのGatewayとして xrdp を使うため、NeutrinoRDP-any(RDP-Proxy)モードを試しています。
ほとんどのディストリビューションではライブラリがFreeRDPと衝突するためなのか NeutirnoRDP はconfigureオプションで無効にされています。
そこで Alpine Linux をベースにNeutrinoRDP-anyモードを有効にしたxrdp が稼働する Docker コンテナを作成してみました。
dockerfile作成の為に Alpine Linux用のapkパッケージも作成したのでsrcpkg 共々以下に置きました。
この NeutrinoRDP-any モードでいくつか不具合と思われる事象に遭遇しましたのでご報告いたします。
1)日本語キーボードを使っているにも関わらず、Proxy接続先のWindowsにログイン後に接続先が英語キー配列になってしまう。
既にコンソールやmstsc.exeなどで一度ログイン済み(切断状態)のWindows10 1909に NeutrinoRDP-any で接続すると正しく日本語キーボードのmapになりますが、
再起動直後など未ログイン状態で初めて NeutrinoRDP-any で接続すると usキーボード配列となってしまいます。
(経験上iOSやAndroidのRDP ClientからWindowsにログインするときに類似事象があります。)
ワークアラウンドとして Windows側のレジストリを編集して
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411 以下の
Layout File キーの値を KBDJPN.DLL から kbd106.DLL に変更しておけば
初ログイン、切断状態からのログインのどちらでも常に日本語キーマップになります。
2)Proxy接続先のWindowsにログイン後、マウスカーソルが黒い四角になってしまう
ユーザ会の過去ログにもある、
xrdp.ini の new_cursors=false で対処を試みましたが、効果がありませんでした。
ワークアラウンドとして Windows側のコントロールパネルで
[その他のマウスオプション]-[ポインター]を開き「ポインターの影を有効にする」のチェックボックスを OFFにする
ことで対処できました。
3)Proxy接続先のWindowsにログイン時に壁紙が表示できない
切り分けのためXorgでGUI接続しNeutrinoRDP版xfreerdp で適切なオプションをつけて接続すると壁紙は表示されました。
xrdp から 内部でNeutrinoRDPが呼び出されるときに壁紙などのオプションが無効になっているようです。
これを制御するxrdp.iniパラメータはあるのでしょうか?
ワークアラウンドは特にありませんが、VDI的に使う用途なので割り切って使っています。
接続元:Windows10 Pro 1909 x64 mstsc.exe
xrdp :ubuntu 20.04 版 docker-io 上に alpine 3.11 をベースとした コンテナ
xrdp 0.9.13 , NeutrinoRDP Devel (#bb24cee)を APKBUILDでbuild
接続先:ESXi 6.7 上の Windows10 Enterprise 1909 x64
このようなRDP Proxy では Apache Guacamole が注目を集めていますが、
ブラウザベースのGuacamoleは現行バージョンでは「全角/半角」キーのハンドリングに難があり、
日本語入力に大きな支障があります。
この点、 キー入力が安定した mstsc.exe でProxy接続が可能な xrdp に優位性があると考えています。