1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

テクノロジー検証Advent Calendar 2022

Day 8

xrdp でRDP Proxy ゲートウェイ を作る話(2) 〜RPMbuild編〜

Last updated at Posted at 2022-12-07

xrdp でRDP Proxy ゲートウェイ を作る話(2) 〜RPMbuild編〜

前回まで

前フリとしてxrdpで RDP Proxy mode を使用する場合に必要なものを書きました。

対象ディストリビューション

ここでは RHEL8互換のRocky Linux 8.6 を対象とします。
(docker hubにある rockylinux:8.6 コンテナを利用して記事を書きました)

対象バージョン

記事執筆時点(2022/12/8)で、以下バージョンを対象とします。

  • xrdp v0.9.20
  • NeutrinoRDP git hash #836b738

build 環境の準備

build 環境をインストールします。
インストール直後の状態を想定しています。
rootユーザーにて実行してください。

# RockyLinux 8.6
dnf groupinstall -y "Development Tools"
dnf install -y epel-release
dnf --enablerepo powertools install -y gcc git cmake openssl-devel libX11-devel libXext-devel libXinerama-devel libXcursor-devel \
 libXdamage-devel libXv-devel libxkbfile-devel alsa-lib-devel cups-devel libjpeg-turbo-devel libXrandr-devel turbojpeg-devel pcsc-lite-devel \
 sudo wget which SDL2 hardlink imlib2-devel libXfont2-devel bash-completion tree sudo openssl pam-devel pkgconfig\(fuse\) pkgconfig\(pixman-1\) nasm checkpolicy selinux-policy-devel 

useradd -m builduser
usermod -aG wheel builduser
echo "builduser:<任意のパスワード>" | chpasswd
echo "builduser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/builduser 
su - builduser
cd ~ 

以降はビルド用ユーザ builduserを使用します。

NeutrinoRDPのRPM作成

まず NeutrinoRDPをbuildします。

私のgithubのリポジトリからSRPMファイルをダウンロードしてください。

wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/centos/el8/SRPMS/neutrinordp-git836b738-1.el8.src.rpm

SRPMをインストールします。自動的にrpmbuildディレクトリが生成されてsourceファイルとSPECファイルが展開されます。

rpm -ivh ./neutrinordp-git836b738-1.el8.src.rpm

SPECファイルを元にrpmbuildコマンドで ソースコードをbuildし、rpm ファイルを生成します。

rpmbuild -bb --clean ~/rpmbuild/SPECS/neutrinordp.spec

正常にbuildできた場合、以下のようなツリーになっているはずです。

[builduser@fb9656c1967e ~]$ tree 
.
├── neutrinordp-git836b738-1.el8.src.rpm
└── rpmbuild
    ├── BUILD
    ├── BUILDROOT
    ├── RPMS
    │   └── x86_64
    │       ├── neutrinordp-devel-git836b738-1.el8.x86_64.rpm
    │       ├── neutrinordp-libs-git836b738-1.el8.x86_64.rpm
    │       ├── neutrinordp-plugins-standard-git836b738-1.el8.x86_64.rpm
    │       └── neutrinordp-xfreerdp-git836b738-1.el8.x86_64.rpm
    ├── SOURCES
    │   ├── CMakeLists.txt.patch
    │   └── neutrinolabs-neutrinordp-836b738.tar.gz
    ├── SPECS
    │   └── neutrinordp.spec
    └── SRPMS

8 directories, 8 files

xrdp のRPM作成

buildした NeutrinoRDPをインストールします。
xrdpのbuildには neutrinordp-devel と neutrinordp-libs が必要です。

cd ~/rpmbuild/RPMS/x86_64/
sudo dnf localinstall  -y  ./neutrinordp-devel-git836b738-1.el8.x86_64.rpm ./neutrinordp-libs-git836b738-1.el8.x86_64.rpm
cd ~

私のgit hubのリポジトリから RDP Proxy を有効にした xrdp のSRPMをダウンロードしてインストールしてください。

wget https://github.com/TOMATO-ONE/xrdp-proxy/raw/devel/centos/el8/SRPMS/xrdp-0.9.20-1.el8.src.rpm

rpm -ivh xrdp-0.9.20-1.el8.src.rpm

EPELにて提供している xrdp RPMパッケージとの主な変更点は

  • configure オプションに --enable-neutrinordp を追加
  • 依存パッケージから tigervnc-server-minimal xorg-x11-xinit を削除。
    → これらは Linux Desktopに RDPでGUIログインする場合には必要ですが、RDP Proxyだけの動作には不要です。

SPECファイルを元にrpmbuildコマンドで ソースコードをbuildし、rpm ファイルを生成します。

rpmbuild -bb --clean ~/rpmbuild/SPECS/xrdp.spec 

正常にbuildできた場合、最終的に以下の tree構成になります。

tree 
.
├── neutrinordp-git836b738-1.el8.src.rpm
├── rpmbuild
│   ├── BUILD
│   ├── BUILDROOT
│   ├── RPMS
│   │   └── x86_64
│   │       ├── neutrinordp-devel-git836b738-1.el8.x86_64.rpm
│   │       ├── neutrinordp-libs-git836b738-1.el8.x86_64.rpm
│   │       ├── neutrinordp-plugins-standard-git836b738-1.el8.x86_64.rpm
│   │       ├── neutrinordp-xfreerdp-git836b738-1.el8.x86_64.rpm
│   │       ├── xrdp-0.9.20-1.el8.x86_64.rpm
│   │       ├── xrdp-debuginfo-0.9.20-1.el8.x86_64.rpm
│   │       ├── xrdp-debugsource-0.9.20-1.el8.x86_64.rpm
│   │       ├── xrdp-devel-0.9.20-1.el8.x86_64.rpm
│   │       ├── xrdp-rdpproxy-0.9.20-1.el8.x86_64.rpm
│   │       ├── xrdp-rdpproxy-debuginfo-0.9.20-1.el8.x86_64.rpm
│   │       └── xrdp-selinux-0.9.20-1.el8.x86_64.rpm
│   ├── SOURCES
│   │   ├── CMakeLists.txt.patch
│   │   ├── README.Fedora
│   │   ├── neutrinolabs-neutrinordp-836b738.tar.gz
│   │   ├── openssl.conf
│   │   ├── xrdp-0.9.10-scripts-libexec.patch
│   │   ├── xrdp-0.9.16-arch.patch
│   │   ├── xrdp-0.9.17-xrdp-ini.patch
│   │   ├── xrdp-0.9.18-vnc-uninit.patch
│   │   ├── xrdp-0.9.20-sesman-ini.patch
│   │   ├── xrdp-0.9.20.tar.gz
│   │   ├── xrdp-0.9.4-service.patch
│   │   ├── xrdp-0.9.6-script-interpreter.patch
│   │   ├── xrdp-0.9.9-sesman.patch
│   │   ├── xrdp-polkit-1.rules
│   │   ├── xrdp-sesman.pamd
│   │   ├── xrdp.logrotate
│   │   ├── xrdp.sysconfig
│   │   └── xrdp.te
│   ├── SPECS
│   │   ├── neutrinordp.spec
│   │   └── xrdp.spec
│   └── SRPMS
└── xrdp-0.9.20-1.el8.src.rpm

インストール

RDP Proxyとして動作させるためには 生成されたrpmファイルのうち、以下のファイルが必要です。

neutrinordp-libs-git836b738-1.el8.x86_64.rpm
xrdp-0.9.20-1.el8.x86_64.rpm
xrdp-rdpproxy-0.9.20-1.el8.x86_64.rpm
xrdp-selinux-0.9.20-1.el8.x86_64.rpm

インストールする際には以下のコマンドで

sudo dnf install -y neutrinordp-libs-git836b738-1.el8.x86_64.rpm xrdp-0.9.20-1.el8.x86_64.rpm xrdp-rdpproxy-0.9.20-1.el8.x86_64.rpm xrdp-selinux-0.9.20-1.el8.x86_64.rpm

# 自動起動設定を行いdaemonとして起動する。
systemctl enable xrdp
systemctl start xrdp

# Firewallで3389/tcpを受信接続できるようにする。
firewall-cmd --add-port=3389/tcp
firewall-cmd --runtime-to-permanent

まとめ

RDP Proxy mode を有効にしたxrdpのrpmbuild方法をご紹介しました。

次回予告

debian系ディストリビューションでのbuild方法をご紹介する予定です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?