web-dev-qa-db-ja.com

Hyper-vデフォルトスイッチの静的IP

Hyper-Vの既定のスイッチアダプターに静的IPアドレスを設定することはできますか? PCを再起動するたびにアドレスが変更されます。

7
Vladimir

コントロールパネル>ネットワーク接続>アダプター設定の変更でvEthernetスイッチを右クリックして静的アドレスを設定できますが、Windowsはそれをランダムにリセットします再起動後のアドレス、およびそのアクションを無効にすることはできません。

解決策は、 netshコマンド またはその代替PowerShellを使用して、常に同じ値にリセットすることです。 Netshは管理者として実行する必要があります。

コマンド構文は次のとおりです。

netsh interface ip set address [name=]InterfaceName [source=]{dhcp | static [addr=]IPAddress[mask=]SubnetMask [gateway=]{none | DefaultGateway [[gwmetric=]GatewayMetric]}}

スイッチを192.168.100.1の静的IP、マスク255.255.255.0、ゲートウェイなしに設定するコマンドの例は次のとおりです。

netsh interface ip set address name="vEthernet (Default Switch)" static 192.168.100.1 255.255.255.0 none

必要に応じて、Windowsの起動時またはユーザーログオン時に実行するコマンドを含むスクリプトを設定できます。

別の解決策は、デフォルトスイッチとは異なり、IPアドレスが保持される新しいスイッチを作成することです。

3
harrymc

少し外れているかもしれませんが、SSH経由でHyper-Vインスタンスに接続するためにこのIPを設定しているので、静的MACアドレスを割り当てて"self-discovery"スクリプトなので、毎回assign ip to vEthernetを使用する必要はありません。

静的MACを割り当てます。

Hyper-Vインスタンスを右クリック->設定>ネットワークカード>拡張機能->静的MACを選択してMACを埋める

enter image description here

私の場合、それはその静的MACに基づいてarp検出からIPを抽出し、次にSSH経由でそれに接続するPowershellスクリプトです

$str = ((arp -a | findstr /i 00-15-5D-01-83-0B)[0]); 
$ip = $str.Split(" ")[2].Trim()
ssh root@$ip

説明:

arp

Displays and modifies the IP-to-Physical address translation tables used by
address resolution protocol (ARP).

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

  -a            Displays current ARP entries by interrogating the current
                protocol data.  If inet_addr is specified, the IP and Physical
                addresses for only the specified computer are displayed.  If
                more than one network

arp -a | findstr/i 00-15-5D-01-83-0B

/i =大文字と小文字を区別しない

戻り値:

 192.168.1.31          00-15-5d-01-83-0b     dynamic
 192.168.43.170        00-15-5d-01-83-0b     static

[0]インデックス

ピック:

192.168.1.31          00-15-5d-01-83-0b     dynamic

$ str.Split( "")[2] .Trim()

戻り値:

192.168.1.33

次に、sshがそれに接続します

1
Axelly