Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

Ubuntu Server 安裝 Desktop + XRDP(完整流程:桌面、RDP、IPv4、NAT、XFCE 修正)

Posted on 2025-11-132025-11-13 by Rico

本文介紹如何在 Ubuntu Server 安裝桌面環境與 XRDP,並解決以下常見問題:

  • 如何安裝 Desktop(XFCE / Xubuntu Desktop)
  • 如何安裝 XRDP
  • XRDP 只在 IPv6 監聽(:::3389)
  • NAT/Port Forward 轉發後無法連線
  • 登入後出現
    “Oh no! Something has gone wrong.”
  • 黑畫面 / 無法載入桌面

本篇提供完整、可直接使用的解決方案。


1. 安裝 Desktop(XFCE)與 XRDP

建議使用 XFCE——輕量、穩定、最適合 Server 遠端桌面。

(1)安裝桌面環境

選擇 A / B 其中一個即可。


A. 安裝完整 Xubuntu Desktop(比較完整)

sudo apt update
sudo apt install -y xubuntu-desktop

B. 安裝純 XFCE(更輕量,建議)

sudo apt update
sudo apt install -y xfce4 xfce4-goodies

(2)安裝 XRDP

sudo apt install -y xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp

加入 SSL 群組(避免證書存取權限問題):

sudo adduser xrdp ssl-cert

2. 修正 XRDP 啟動 IPv4(預設只開 IPv6)

Ubuntu 22.04 / 24.04 預設 xrdp 會 只監聽 IPv6 (::) → 造成外網或 NAT 無法連線。

編輯:

sudo nano /etc/xrdp/xrdp.ini

找到原本的:

port=3389

改成:

port=tcp://0.0.0.0:3389

重啟 XRDP:

sudo systemctl restart xrdp xrdp-sesman

確認是否出現:

netstat -tulpen | grep 3389

預期:

tcp    0 0 0.0.0.0:3389   0.0.0.0:*   LISTEN   xxxx/xrdp

如果只看到 tcp6 :::3389 → 代表你還沒修改成功。


3. NAT + Port Forward 後仍無法連線(回程路由問題)

你使用:

外部(public_ip:9250) → Ubuntu(192.168.100.250:3389)

Kernel log 顯示:

  • 外部 SYN 進來了
  • 但伺服器沒有回 SYN-ACK(導致連線卡住)

原因:
Ubuntu 伺服器回包走錯 Gateway(非 DNAT 那台)→ NAT 裝置收不到回應 → 連線 timeout。


解法(你使用的是方案 2:SNAT,完全正確)

在 NAT 盒加入 SNAT:

iptables -t nat -A PREROUTING -p tcp -d $public_ip --dport 9250 \
  -j DNAT --to-destination 192.168.100.250:3389

iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.250 --dport 3389 \
  -j SNAT --to-source 192.168.100.254

如此:

  • DNAT:外網 → Ubuntu
  • SNAT:讓回包一定走回 NAT 盒

連線立即成功。


4. 登入後看到 “Oh no! Something has gone wrong.”

Ubuntu Server 預設使用 GNOME / Wayland,XRDP 不支援
→ 直接爆錯。

一次到位修復(你已成功使用)

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xorgxrdp

設定 user 預設跑 XFCE:

echo "startxfce4" > ~/.xsession

為所有 future user 設定:

echo "startxfce4" | sudo tee /etc/skel/.xsession

修改 XRDP 啟動流程:

sudo sed -i '/^\. \/etc\/X11\/Xsession/i [ -x \/usr\/bin\/startxfce4 ] \&\& exec \/usr\/bin\/startxfce4' /etc/xrdp/startwm.sh

重啟:

sudo systemctl restart xrdp xrdp-sesman

登入後就會載入 XFCE,不再出錯。


5. 測試連線(Windows)

開啟:

mstsc

連:

public_ip:9250

或 LAN :

192.168.100.250

即可看到完整 XFCE 桌面。


✔ 完成!

你現在擁有:

  • ✨ Ubuntu Server + Desktop + XRDP 完整環境
  • ✨ IPv4 監聽正常
  • ✨ NAT/SNAT 完整連線
  • ✨ XFCE 桌面穩定無錯誤

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme