詳しくはだいたいこの通りですが、ハマりました。
動作はかなり不安定で失敗することも多いです。
Hyper-Vの仮想マシン機能自体がまだ未熟な気がします。
VPNの動作実験をするのに、リアル商売のサーバに迷惑をかけるとブラックリストに載りまくるので、おとなしく自分のパソコンにローカルサーバを建てようと思ったのがハマったきっかけである。
今回サーバを立てたのはWireGuardで、設定なんかは他のVPNなんかよりお手軽である。
設定ファイルにはネットワークの知識が少しだけ必要だが、サーバで生成した公開鍵と、クライアントのそれとを互いに書き込むだけで終わってしまう。
最初はオラクルのVertualBoxなんかを使っていたのだが、マシン内の謎のネットワークにPingが通らないので諦めた。(柔弱)
色々仮想化について調べていくうちに、なんとWindows自身にも仮想マシンを作ることができると知ってこの方法を試したら、pingが通った。
Hyper-VというのはVirtualBoxを動かすためにあるものだと思いこんでいた私は、まさかMS自身がその機能を内部に組み込んでいたとは知る由もなかった。
流石に同じ会社が作った機能だけあって、出来上がった仮想マシンには無事アクセスできる。
VPNが環境を作るのに、2台の実機を使ってクライアントサーバのシステムを作るのは無粋なので、仮想化機能を使って1代で済ませてしまうことにした。
で、このときホストマシンであるWindowsからクライアントの仮想化Linux(Ubuntu22)へ公開鍵などをクリップボードでコピペしようとしてできなかった。
このときはクリップボードのコピーの仕方なんかを調べるより、ftpでファイルを送信したほうが早かったので、そうやってVPN環境は作ってしまった。
このことは今度記事にするとして、せっかくある機能をもっと知りたいと思い、VPNができた後にちょっと調べてみた。
なぜクリップボードからクライアントにコピーできなかったのか?
システムが違うからできないのではないかと思って探してみたのだが、うまくいくのはWiondowsの中にWindowsの仮想化環境を入れたときのみで、肝心のLinuxの場合はうまくいかない。
はてこれはおかしいおかしいと探している内に上記のサイトを見つけて、試行錯誤しながらやっと動くようになった
Microsoft/linux-vm-tools: Hyper-V Linux Guest VM Enhancements
まずLinuxの場合、これをインストールしなければならないということは、商用の記事にも乗っていなかった。
ただでは動かない機能のようだ。更に、
Get-VM * | Format-Table Name, Version
で自分が入れたVMの名前を知ることができる。
そしてPowerShellを管理者モードで起動したら、
Set-VM -VMName -EnhancedSessionTransportType HvSocket(が先程のコマンドで出てきたものを指定する)
とやって、仮想マシンを起動。接続すると昔のXのような寂しい画面が出てくるので、Linuxで設定したユーザとパスワードを入力してログイン。
しばらく何もない画面を見続けることになるが、運が良ければLinuxの画面にまでたどり着ける。
このとき拡張モードとかなんとか言うのに切り替える必要があると思っていたのだが、昔のXのような画面ですでに拡張機能ができるようになっているらしく、クリップボードのメニューがない。
もしかしたらと思って、右クリックすると、なんとメニューに貼り付けの文字が!
というわけで無事ホストマシンからクリップボード経由でクライアントマシンにコピペできるようになりました。