はじめに
Ubuntu 20.04上で動作するxrdpに対して、Wireguardで構成したVPN経由でリモートデスクトップ(RDP)接続を行おうとすると、以下のようにブラックスクリーンとなる場合があります。
しかし、VPNを経由せずにSSHポートフォワーディングでRDP接続した場合は、問題なく接続できます。
また、WANとなる回線を変更すると(例えばフレッツ光→CATVやNUROなどに変更すると)、VPN経由であっても問題なくRDP接続できる場合があります。
以上のような事象が発生している場合、Wireguardの設定によって事象が生じている可能性があります。
原因
MTUがデフォルト値の場合や、回線の上限を超えた値が設定されている場合、上記のようにVPN(Wireguard)経由のRDP接続に失敗する場合があります。
対応
Wireguardの設定ファイル ( /etc/wireguard/wg0.conf
など)の [Interface]
に対して MTU=1420
( 1420
の値は、回線に応じて適切な値を調整)を追加し、Wireguardを再起動することで、事象が解消されます。
[Interface]
Address = <Wireguardの接続元IPアドレス>
ListenPort = <Wireguardのポート>
PrivateKey = <接続先の公開鍵>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
MTU=1420
[Peer]
PublicKey = <接続元の秘密鍵>
PresharedKey = <事前共有鍵>
AllowedIPs = <許可IPリスト>
Endpoint = <接続先IPアドレス:ポート>
なお、Wireguardに限らず他のVPNプロトコル(OpenVPNやIPSecなど)においても同様の事象が発生する可能性があります。そのような場合は、同様にMTUを調整することで事象解消が期待できます。
本ページにたどり着いた方の中には、Googleなどで「xrdp blackscreen」や「xrdp 真っ黒」などのキーワードで検索し、そこから得られた結果をもとにいろいろと試された(しかしどの方法を行っても事象が解消されなかった)方もいたものと思います。また、ブラックスクリーンでありながらもRDP接続が一応確立するため、アプリケーションの問題(設定の不備やパッケージ更新の影響等)と判断してしまい、ネットワークの問題に気づくまでに時間を要した方もいたのではないかと思います(中途半端に繋がってしまうところが、この問題の質の悪いところです)。
もしVPN経由でUbuntu等のLinuxに対してRDP接続を行おうとして事象が発生している場合は、ぜひ本ページの内容をお試しください。