WSLを介したXアクセス用のDISPLAY変数をどのように定義しますか?

WSLを介したXアクセス用のDISPLAY変数をどのように定義しますか?

私のWSLには、xウィンドウ用の.profileで定義されたDISPLAY変数があります。 resolv.confでIPを確認してください。

なぜ?私が正確に覚えている場合、resolv.confは使用するDNSを定義するためにのみ使用され、DISPLAYは私のローカルIPを指す必要があります。実際にはVirtualBox、Vmware、およびWSLを使用しているため、Windowsシステムに独自の仮想イーサネットカードを実装する複数のIPがあり、このプロファイルにデフォルトで定義されているDISPLAYを使用すると機能しません。手動で変更し、プライマリイーサネットカードの値を割り当てる必要があります(Xを機能させるには、DISPLAY = 192.168.1.8:0.0エクスポートを実行し、DISPLAY変数の値を自動的に192.168.1.1:0.0で上書きする必要があります)。私のWSLが獲得を始めたとき)。

また、NAT IP(Whatismyip.comを使用してインターネットに接続するときに使用するパブリックIPを見つける)を探して、リモートコンピュータから呼び出すことができるようにモニタをそのIPに設定しようとすると、xtermはAWSにあり、それも機能しません。なぜ?リモートシステムをssh -Xし、手動でモニターを192.168.1.8:0.0に設定すると、これが発生します。次の理由を知りたいです。 a).- 設定ファイルによって DISPLAY が自動的に誤って設定されます。 b).- DISPLAY変数c)を手動で設定すると、マイコンピュータのパブリックIPは機能しません。

いくつかの追加のコンテキストデータ:

私の現在のプロフィールは次のとおりです。

export LIBGL_ALWAYS_INDIRECT=1
export DISPLAY_NUMBER="0.0"
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):$DISPLAY_NUMBER

私のresolv.confは次のようになります。

nameserver 192.168.1.1
nameserver 192.168.1.1
nameserver fec0:0:0:ffff::1
search gorostidi-home.lan

私のifconfig:

andres@DCT00175:~$ ifconfig
eth3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.1  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::1bd8:2cef:f202:d18b  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 0a:00:27:00:00:0a  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.28.48.1  netmask 255.255.240.0  broadcast 172.28.63.255
        inet6 fe80::f389:4534:305:8a86  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 00:15:5d:16:f9:f0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.250.1  netmask 255.255.255.0  broadcast 192.168.250.255
        inet6 fe80::b10b:16fd:43b6:c962  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 0a:00:27:00:00:10  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

**eth6:** flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.8  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::2669:762c:cd7f:3da6  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 70:b3:d5:5c:0c:a1  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.115.1  netmask 255.255.255.0  broadcast 192.168.115.255
        inet6 fe80::337b:d856:e3cf:dd85  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 00:50:56:c0:00:01  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.23.1  netmask 255.255.255.0  broadcast 192.168.23.255
        inet6 fe80::6ce0:a4cb:44b5:b58f  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 00:50:56:c0:00:08  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth11: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.24.16.1  netmask 255.255.240.0  broadcast 172.24.31.255
        inet6 fe80::6319:6b32:8b9c:feeb  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 00:15:5d:18:6c:7c  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 1500
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0xfe<compat,link,site,host>
        loop  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wifi2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.223.100  netmask 255.255.255.0  broadcast 192.168.223.255
        inet6 fe80::7f7d:9903:bd01:6cb6  prefixlen 64  scopeid 0xfd<compat,link,site,host>
        ether 36:c9:3d:82:2c:29  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

現在のDNSと現在のルーターは192.168.1.1(resolv.confに設定されています)です。

ご協力ありがとうございます!

ベストアンサー1

.profile必要に応じて設定を変更できます。現在のディスプレイ設定が.profile機能していない場合は、実際に動作する設定に変更する必要があります。

a).- プロファイル自動設定が正しく表示されない

現在使用しているWSLディストリビューションの作成者よりも設定が複雑であるため、デフォルト設定は適切ではありません。

nameserver有線からローカルIPアドレスを取得することは、IPが実際のX11サーバーとDNSリゾルバー/プロキシサーバーを実行しているローカルホストを参照している場合にのみresolv.conf意味があります。これは通常のインストールのデフォルト値かもしれませんが、カスタマイズによってこれらの仮定が壊れる可能性があります。

実際の理由が何であれ、DISPLAY現在の設定.profileが間違っているという事実はまだ残っています。あなたのため、実際の状況に合わせて調整する必要があります。

Freddyがコメントで述べたように、設定は次のとおりです。https://superuser.com/a/1476160/990044あるいは、当時、WSLは独自のX11サーバーにグラフィックサポートを提供しておらず、Windowsホストオペレーティングシステムで実行されているX11サーバーをリリースする必要がありました。 WSLが最新の場合、.profile現在のWSL 2ではこれらの設定はまったく必要ないかもしれません。

b).- DISPLAY変数を手動で設定すると、マイコンピュータのパブリックIPは機能しません。

NATにポート6000 / TCP(ポート番号=ディスプレイ番号+ 6000)のポート転送ルールがないため、ローカルX11サーバーはポート転送が転送されるIPアドレスおよび/またはローカルソフトウェアファイアウォールを受信しません。 (Windowsファイアウォールを含む)このIPアドレスに対してポート6000 / TCPに着信トラフィックがブロックされています。

c).-前述のIP(192.168.1.8:0.0)はうまく機能しますが、パブリックIPではありません。

そのIPアドレスにはポート6000 / TCPをブロックするファイアウォールがなく、ローカルX11サーバーがそのポートでリッスンするため、X11クライアントはX11サーバーに接続し、そのアドレスを使用してモニターにアクセスできます。


X11仕様では、もともとコロンの前のものが次のように指定されました。CPU名(望むよりman X)。後で確認可能なホスト名が必ずしも必要ではないパーソナルワークステーションでX11サーバーを実行するときにIPアドレスを許可する機能も追加され、非常に一般化されました。 (一部の古いシステムで古いX11R5クライアントソフトウェアで作業する必要がある場合は、DISPLAYがまだIPアドレスを受け入れないことがあります。)

おすすめ記事