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 3 years have passed since last update.

WSL1 → WSL2 移行で X サーバ (VcXsrv) の ACL を残しつつアクセスできるようにする

Last updated at Posted at 2020-08-09

tl;dr

  • wsl2 はネットワーク経由で win 側にアクセスするようになった
    • 今までの DISPLAY=localhost:0.0 が効かなくなる
  • X サーバのディスカバリは /etc/resolve.conf から IP 取れば OK
  • VcXsrv のアクセスコントロールは wsl 側で IP 取得して cmd.exe 経由で xhost.exe を実行すれば OK

背景

今さらながら wsl2 に更新してみたら,
wsl2 では wsl1 の時と違って vNIC 経由で win 側にアクセスするようで,
win 側の X サーバ (VcXsrv) にアクセスできなくなった.

対策

X サーバのディスカバリどうしようかなと思ったら
resolve.conf から取れるっぽいので以下を rc に書いて wsl 側は解決.

export DISPLAY=$(grep -Po '(?<=nameserver )[\.\d]+' /etc/resolv.conf):0.0

このままだと VcXsrv のアクセスコントロール (IP 制限) にひっかかる.
-ac でアクセスコントロールを無効化する記事も見かけたけど,
(外部公開してないとはいえ) X サーバに ACL 無いのはちょっと...って感じなので,
wsl 側の IP を許可する適当なワンライナーを profile に追記.

cmd.exe /c set DISPLAY=127.0.0.1:0.0\& "C:\Program Files\VcXsrv\xhost.exe" +$(ifconfig | grep -Po '(?<=inet )172\.[\d\.]+')

これで wsl 側の rc/profile だけで X サーバへの接続設定ができる.
cmd をかませてるのは, wsl 側から直接実行すると
xhost.exe: must be on local machine to add or remove hosts.
になるため.

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?