著作一覧 |
突然Hyper-VのNATが動かなくなってしまって面倒になってRASをアンインストールして、さてどうしようかと仮想アダプタとかを眺める。ケチがついてレジストリかメタデータベースの奥底にゴミが残っているのだろうと、全部まず削除した。当然、Hyper-Vゲストはネットワーク無し状態となる。
ホストOSは、固定IPアドレスが1つふられているだけなので、これをうまく利用する必要があるわけだ(ふられているIPアドレス以外で外に出ようとするとルータ警察に見つかって連行されることになるからNATを使うしかないのだった)。
とりあえず、NAT Hyper-Vで検索しているとWindows10 Hyper-Vというのが目についた。Power Shellのコマンドレットにいろいろ用意してあるようだ。試しにWindows 2012R2のPower Shellで動かしたらパラメータが違って怒られるのもあるが入るのもある。
いろいろ試してこうなった。
; 仮想スィッチを作ってみる。 New-VMSwitch -SwitchName "Hyper-V-Switch" - SwitchType Internal ; 作った仮想スィッチを見てみる。 Get-NetIPAddress -InterfaceAlias "vEthernet (Hyper-V-Switch)" IPAddress : 169.254.141.105 ……… 適当なアドレスが振られた InterfaceIndex : n ………………… 後で使う InterfaceAlias : vEthernet (Hyper-V-Switch) AddressFamily : IPv4 Type : Unicast PrefixLength : 16 …… ; IPアドレスを振りなおした New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex n IPAddress : 192.168.0.1 InterfaceIndex : n InterfaceAlias : vEthernet (Hyper-V-Switch) AddressFamily : IPv4 Type : Unicast …… ; NATを設定する。Windows 10のWebで見かける例だとInternalIPInterfaceAddressPrefixというパラメータがあるが、2012R2だとExternalIPInterfaceAddressPrefixで逆なのが不思議きわまりない。 New-NetNat -Name Hyper-V-NAT -ExternalIPInterfaceAddressPrefix 外部IPアドレス/32 ; ところがそれだけではだめで外部へ通じているIPアドレスをAddする必要がある(このあと嫌な障害が出るのは上のコマンドレット入力が悪いのかもしれない) Add-NetNatExternalAddress -Natname Hyper-V-NAT -IPAddress 外部IPアドレス
で、無事にHyper-Vのゲストにここで作った内部スィッチを割り当てると外に出られるようになったし、StaticMappingで受けもできるようになった。
こんな楽ちんなものがあったのか。今までRASでさんざんわけのわからないパラメータで苦労したのは何だったのだ?
が、ホストのDNSクエリがすべて失敗する(IPアドレス指定のTCP/IPはすべて成功するので、どうもこのNATは何かがおかしい。ちゃんと動作していたときのRASではホストはホスト、ゲストもホストで動いていたわけだが)。
Message Analyzerで見るとDNSクエリに対してレスポンスは返っているのだが(なんで*Module=DNSでフィルタリングできないんだろう?)、ホストOS上のDNSクライアント(nslookupとか)にはレスポンスが戻っていないようでみんなタイムアウトする。これはやってられないなぁ。
しかしHyper-Vのゲスト群は元気に動く。多数決でホストに犠牲になってもらうことにするのだが、実に釈然としない。
ジェズイットを見習え |