堺風の頭部

徘徊、カメラ、PC、その他。

Hyper-Vのネットワークを初めて触ったメモ

 記録。ちゃんと理解してるわけじゃないから参考にされるとまずそうだが、とりあえず「LAN内だけでアクセスできればいい仮想サーバー」がほしい場合はこうやればよかったみたい。

 

前提

  • Windows 10上のHyper-Vに構築された仮想マシンLinuxで、業務用サービスが動いている
    • LAN内の他端末からブラウザでアクセスして使う
    • ローカルIPアドレスの固定は必要
    • IPアドレスでアクセスできればよく、名前解決はしていない
    • 仮想マシンからインターネットにアクセスできる必要はない
  • それが、VPNでつながった別拠点から移されて、IPアドレスが192.168.aaa.xxxから192.168.bbb.xxxに変わる

 で、IPを192.168.aaa.xxxに設定してるとこ変えたらええやろ、と思ったらなにか違うところをいじったらしく、サービスに接続できなくなった。
 結局ほぼ全部組み立て直す感じになっちゃった。

 そもそもHyper-Vにおけるネットワークの扱い方がぜんぜんわかってないのがいけない。

 

最終的にできた形

  • 192.168.bbb.xxxに設定するのは、ホストのWindowsで見えている物理NIC
  • Hyper-Vの仮想スイッチは、「内部」で作成する
    • 「仮想スイッチ」というのだが、ルーターとスイッチとNICを包含した内容っぽい
    • 物理NICの192.168.bbb.xxxに外部からアクセスすると、通信が一旦仮想スイッチの仮想ルーターに入り、仮想スイッチに繋がっている仮想NICにNAT(NAPTも?)で接続される
      • おそらくホストのWindowsにも見えない仮想NICがあって、デフォルトだとすべての通信がNATでホストOSの仮想NICに繋がれるっぽい
  • 仮想マシンIPアドレスは、10.xxx.xxx.170と設定されていた
    • これはOS側で設定できることで、仮想マシンLinuxが指定していた。仮想マシンを起動したらそのIPになっているとHyper-Vマネージャーに表示される
    • ホストのWindowsから仮想マシンのサービスにアクセスするなら、10.xxx.xxx.170をブラウザで開く
  • Hyper-Vは仮想ルーターとしても働いているので、IPアドレスを持つ
  • PowerShellを使うと、仮想ルーターのNATを設定できる
    • これも設定済みで、10.xxx.xxx.168/30がhttp通信の転送先になっていた
    • であるから、仮想マシンと同じセグメントになるように、仮想ルーターIPアドレスは10.xxx.xxx.169と設定した

 これで、ホストのWindowsからは10.xxx.xxx.170:8080で、LAN内の他のPCからは192.168.bbb.xxxにアクセスできるようになった。

 

 図示するとこんな感じになるようだった。青の部分がHyper-Vで「内部仮想スイッチ」を作ると発生するっぽい。