前回まで
Debian GNU/Linux 11上での package build方法をご紹介しました。
RedHat系、debian系のpackage build と インストールをご紹介したので、RDP Proxyとして xrdp を使うための設定方法をご案内します。
対象バージョン
記事執筆時点(2022/12/16)で、以下バージョンを対象とします。
- xrdp v0.9.20
- NeutrinoRDP git hash #836b738
xrdp の バージョン情報の確認
利用中のxrdpが RDP Proxy mode に対応しているかどうかを確認します。
xrdp -V
で バージョン番号やbuild オプションを表示できます。
Configure optionsに --enable-neutrinordp
が含まれていることを確認します。
# xrdp -V の出力結果
# xrdp -V
Argument 0 - xrdp
Argument 1 - -V
xrdp 0.9.20
A Remote Desktop Protocol Server.
Copyright (C) 2004-2020 Jay Sorg, Neutrino Labs, and all contributors.
See https://github.com/neutrinolabs/xrdp for more information.
Configure options:
--build=x86_64-redhat-linux-gnu
--host=x86_64-redhat-linux-gnu
--program-prefix=
--disable-dependency-tracking
--prefix=/usr
--exec-prefix=/usr
--bindir=/usr/bin
--sbindir=/usr/sbin
--sysconfdir=/etc
--datadir=/usr/share
--includedir=/usr/include
--libdir=/usr/lib64
--libexecdir=/usr/libexec
--localstatedir=/var
--sharedstatedir=/var/lib
--mandir=/usr/share/man
--infodir=/usr/share/info
--enable-fuse
--enable-pixman
--enable-painter
--enable-vsock
--enable-ipv6
--with-socketdir=/run/xrdp
--with-imlib2
--enable-neutrinordp
--enable-devel-logging
build_alias=x86_64-redhat-linux-gnu
host_alias=x86_64-redhat-linux-gnu
CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
LDFLAGS=-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig
Compiled with OpenSSL 1.1.1k FIPS 25 Mar 2021
これは xrdp project の github に issue を上げる場合に基本的に求められる情報なので憶えておいてください。
xrdpの設定ファイル
xrdp の設定ファイルの path は build オプションによって決まりますが、前回までにご紹介した rpm/deb package でインストールした場合には、/etc/xrdp/
以下に格納されます。
/etc/xrdp/xrdp.ini
が設定ファイルになります。
xrp.ini は単一ファイルで様々な設定項目が含まれています。
このうち、RDP Proxyの設定はファイル末尾の[neutrinordp-any]
からのセクションとなります。
[neutrinordp-any]
name=neutrinordp-any
lib=libxrdpneutrinordp.so
ip=ask
port=ask3389
username=ask
password=ask
RDP Proxyのための基本設定
では実際に xrdp で RDP Proxy を設定していきます。
[neutrinordp-any]
セクションの各パラメータの意味は以下のようになります。
パラメータ名 | 意味 | 備考 |
---|---|---|
[neutrinordp-any] | セクション名 | 次のセクション名が現れるまでがそのセクションの設定となる。 |
name | 表示名 | xrdp ログインスクリーンに表示される Session 名 |
lib | モジュール指定 | RDP Proxy使用時はlibxrdpneutrinordp.so を指定 |
ip | RDP接続先アドレス |
ask パラメータは任意入力 |
port | RDP接続先TCPポート番号 |
ask3389 は初期値3389として任意入力 |
username | RDP接続先ユーザー名 |
ask で任意入力 |
password | RDP接続先パスワード |
ask で任意入力 |
name
は xrdp のログインダイアログに出てくる Session
のリストボックスに表示される名前です。
lib
は xrdpログインスクリーンから読み出すモジュールの指定です。
libxrdpneutrinordp.so
が NeutrinoRDPライブラリを用いて RDP Proxyを実行するモジュールです。このモジュールを指定したセクションは RDP Proxy として動作します。
ip
port
username
password
は RDP Proxy 接続先の情報を示します。
ask
を指定するとxrdpログインスクリーン上での任意入力となります。
ask
直後に値を書くと、初期値がセットされた状態になります。
ask
を入れずに値を書くと、そのパラメータは固定値となり、ログインスクリーン上に表示されません。
RDP Proxyのための追加設定
ここまでの設定で xrdp の RDP Proxyで対象のリモートホストに接続はできますが、実運用上で様々な問題が出てきます。
実用性を高めるための追加設定をしていきます。コメントアウトされたパラメータを有効にしていくことで対応できます。
一部を有効にして対応していきます。
パフォーマンス設定
キーボードレイアウト設定
xrdp RDP Proxyのデフォルトではクライアント側のキーボードレイアウト情報をProxy先のRDPサーバに送信しません。
日本語キーボードを持つクライアントから RDP Proxy でリモートWindowsに接続すると、US 101/104 ASCIIキーボード配列として認識されてしまいます。リモートWindows側のレジストリを変更して106/109 日本語キーボードレイアウトに変更する回避策がありますが、それを行わずとも日本語キーボードレイアウトとして認識できるようになります。
パラメータ名 | 推奨値 | 意味と解説 |
---|---|---|
neutrinordp.allow_client_keyboardLayout | true |
RDPクライアント側のキーボードレイアウト情報をProxy先に送信するか否か。日本語キーボードを持つRDPクライアントを使う場合はtrue にする。 |
neutrinordp.override_keyboardLayout_mask | 0x0000FFFF | RDPクライアントが日本語Windowsの場合、サードパーティ製日本語IMEのインストールをした場合にkbd_layout情報の上位2byteが変化する。これをマスクして下位2byteのみとすることでkbd_layoutの値を常に一定にする。Proxy経由の接続先がWindowsの場合は設定しなくても問題ないが、xrdpの時には設定しても良い。 |
実際の設定例
今回ご紹介した設定項目を活用した具体的設定例です。
[RDP-Proxy-WinClient]
name=RDP-Proxy-forWin
lib=libxrdpneutrinordp.so
ip=ask192.168.0.
port=ask3389
username=ask
password=ask
enable_dynamic_resizing=false
perf.allow_client_experiencesettings=true
perf.full_window_drag=false
perf.menu_anims=false
perf.cursor_shadow=false
neutrinordp.allow_client_keyboardLayout=true
まとめ
今回はxrdp を RDP-Proxyとして利用する場合の設定についてご紹介しました。
次回予告
未定です。(local pam認証を使った 設定方法をご紹介するかもしれません。)