GNU/Linux >> Linux の 問題 >  >> Linux

Windows で Tailscale を使用して、WSL2 と Visual Studio Code とのネットワークをより簡単に

Tailscale は、他のネットワーク上で実行され、ネットワークを効果的に「フラット化」し、ユーザー/サービスがより簡単に (そして安全に) 相互に通信できるようにするゼロ構成メッシュ「VPN」です。

たとえば、Windows 10 上の WSL2 に 別のマシンから SSH で接続する方法について詳しく書いています。 大量の手順があるだけでなく、複数の方法があります !

これについては SSH について話しましたが、あなたがアクティブな開発者で、現在取り組んでいるサービスやサイトを同僚や共同作業者と共有したい場合は、かなりの量のセットアップ、管理、およびメンテナンスに対処する必要があります。と。

別の言い方をすれば、「私たち全員が同じネットワークとサブネット上にいれば、もっと簡単ではないでしょうか?」

WSL1 はそのネットワーク スタックを Windows 10 と共有するため、"マシン" は同じです。 YourMachineName が何であれ、5000 でサービスを実行することは、それが Windows サービスであるか、WSL1 の下で Linux で実行されているアプリである場合と同じです。ただし、WSL2 では、Linux 環境は Windows ホストの「背後」にあります。 WSL2 では、透過的なポート転送によって http://localhost:5000 に簡単にアクセスできますが、WSL2 Linux マシンは実際には、他のデバイスと同じネットワーク上のピアではありません。

Tailscale (および同様のサービス) のような構成不要のネットワーク システムを使用すると、競争の場とネットワークが平準化されます。 WSL2 のいくつかの特性により、いくつかの落とし穴があります。

WSL2 のテイルスケール

WSL を取得

  • WSL2 をインストールします - こちらの手順に従ってください
  • Linux ディストリビューションをインストールする - Ubuntu 20.04 を使用しました
    • プロセスを経て、ユーザーを作成するなど
  • Windows ターミナルをインストールする - はるかに優れており、コマンド ライン エクスペリエンスが本当に向上します

テイルスケールを入手

  • Tailscale のインストール - Ubuntu 20.04 の手順を使用しました

WSL2 の変更

  • ipv6 インストールで、今日は Tailscale を WSL2 で起動できないので、無効にします。
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

テイルスケールを実行

ここでデーモンを起動します。 WSL2 には (まだ) systemd はありませんが、Windows 10 ビルド 21286 以上のバージョンを使用している場合、Linux 用 Windows サブシステムで起動時にコマンドを実行する方法があります。個人的には、これを bash スクリプトで行うだけです。

sudo tailscaled 

WSL には対話型のログイン プロセスを実行する方法がないため、単一のマシンを認証するための事前認証キーを作成する必要があります。次に、ここで行っているように、そのキーを使用して、WSL 内で Tailscale を起動します。

tailscale up --authkey=tskey-9e85d94f237c54253cf0

ログを確認できるように、これを別のターミナル タブまたはウィンドウ ペインで開いたままにしておくのが好きです。面白くて冗長です!

Tailscale マシンの管理パネル内で、新しい Tailscale ネットワーク上にあるすべてのマシンを確認できます。 scottha-proto は Windows としてリストされ、scottha-proto-1 は Linux としてリストされていることに注意してください。 1 つ目はホスト マシンで、2 つ目 (-1) は Linux WSL2 インスタンスです。彼らは今、フラットなネットワーク上にあります!

新しい (近日公開予定) Tailscale ノード共有機能を使用して、ネットワーク外からユーザーを招待することもできました。友人の Glenn は私の組織にはいませんが、OneDrive や DropBox を使用して、システム全体ではなく 1 つのエンティティにアクセスするためのリンクを作成するのと同じように、ここでも同じことができます。

これで、Glenn に WSL2 で実行されているサービスを 彼の家から ヒットさせることができます。

サービスを作成して Tailscale ネットワークにバインドする

WSL2 Ubuntu システムに .NET 5 をインストールし、フォルダーを作成して dotnet new web を実行しました。 Hello World マイクロサービスを作成します。

サービス (.NET やノードなど) を実行する場合、サービスが Tailscale ネットワークでリッスンすることが不可欠です。 WSL2 の Linux システムは「マルチホーム」であり、複数のネットワークに接続されています。デフォルトでは、開発者システムは localhost のみをリッスンします。

.NET の場合、すべてのネットワーク (Tailscale を含む) をリッスンする方法はいくつかありますが、私は次の方法を使用しました:

dotnet run --urls http://*:5100;https://*:5101

ここでは、WSL2 インスタンスに関連付けられている Tailscale IP に接続し、以下で実行されている Linux サービスにアクセスしています。

これをどこまで進めることができるでしょうか?さて、私は Tailscale ネットワークにいて、Glenn がそれに接続しているので、ネットワーク全体はフラットなので、私のサービスにアクセスするのは簡単です!ここでは、私は Teams を使用しており、私のデスクトップが下に、Glenn のデスクトップが上にあります。

涼しい。どこまで行けるかな?

Visual Studio Code とリモート開発 SSH 拡張機能を追加

OK、フラットで安全なネットワーク、制限なし! WSL2 インスタンスを Glenn のリモート開発システムとして扱うことはできますか?もちろん?

<ブロック引用>

明確にする - これは私が話し、実験しているだけですが、ここには何かがあります。これは、クロス プラットフォーム、Mac から Windows、WSL2 などにも対応できます。また、このセクションを使用して、任意のクラウド ホストまたはホストで VM を作成し、Tailscale をインストールし、ポート フォワーディングについて心配する必要がなくなり、開発ボックスとして使用することもできます。はい、WSL ローカルをそのまま使用できますが、これは楽しく、他の優れた方法で利用できます。

私の WSL2 マシンで、ssh サービスを開始します。公開鍵を共有して適切な鍵ベースのログインを行うこともできますが、そのためにはユーザー名で行います。

/etc/ssh/sshd_config を編集します ポート、ListenAddress、および PasswordAuthentication を Yes に設定します。以下に例を示します:

Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

PasswordAuthentication yes

WSL2 インスタンスだけで glenn をローカル スーパー ユーザーにしました:

sudo adduser glenn
usermoid -aG sudo glenn

次に、Glenn は VS Code Remote Development パックをインストールし、Remote を使用して SSH 経由で私の Tailscale IP に接続します。ここでは、Glenn のマシンの VS Code が実際に VS Code Server とリモート開発者をインストールしていることがわかります。Glenn と VS Code のコードはアーキテクチャ的に 半分に分割されています クライアントは彼の Windows マシンに、サーバーは私の WSL2 インスタンスに。

左下隅に、彼の VS Code が私の WSL2 Linux インスタンスの Tailscale IP に接続されていることがわかります!

どう思いますか?

Tailscale を、開発者向けの localhost トンネラーを提供する NGrok などと比較することもできますが、重要な違いがいくつかあります。あなたの研究をしてください!ファンであること以外、この会社とは何の関係もありません。

スポンサー: 今週のスポンサーは…私です!このブログと私のポッドキャストは、19 年間、愛情のこもった仕事でした。あなたのスポンサーシップは、ホスティングの請求書の両方を支払い、レビュー用のガジェットを購入し、時折タコスを購入することを可能にします。私に参加してください!


Linux
  1. VisualStudioコード拡張機能をインストールする方法

  2. CentOS7にVisualStudioCodeをインストールするにはどうすればよいですか?

  3. Visual Studio Code で Qt を使用する方法

  1. Linuxを使用してWindowsでpodmanを起動して実行する

  2. LinuxでのVisualStudioCode(VSC)の使用を開始する

  3. LinuxにMicrosoftVisualStudioCodeをインストールする

  1. LinuxへのMicrosoftVisualStudioCodeのインストール

  2. NitroShareを使用してLinux、Windows、Mac間でファイルを簡単に共有

  3. ターミナルを使用してUbuntuにVisualStudioCodeをインストールする3つの方法