Hyper-V下Internal vSwitch的配置和Linux虛擬機的SSH連接


最近工作中要在Windows Server 2016/Hyper-V 10中運行Ubuntu16實例,需要制作出“即插即用”的鏡像文件,也就是安裝好后即可從外部SSH進去。之前我使用Hyper-V,習慣於內網動態分配IP模式下,采用External vSwitch作為虛擬機對外通信的接口。這種模式下虛擬機相當於局域網內新的一台主機,通過DHCP獲取自己的IP、Gateway等信息,非常方便。

但是這次內網實行的是靜態IP配置方案,每一台物理機有固定的且只能有1個IP。由於虛擬機內的進程需要和其他虛擬機進行通信,只能采用Internal vSwitch。這種模式下,相當於將物理機和虛擬機組件為一張新的子網,物理機扮演Gateway的角色,虛擬機對外通信必須經由物理機的轉發。熟悉VMVare的同學一定會發現,這種拓撲結構就是常說的NAT。

1.基於Ubuntu的ISO創建虛擬機,這一步比較簡單,Hyper-V提供了非常方便的圖形化界面進行操作。由於后續步驟需要聯網下載安裝包,所以此處先為Ubuntu實例配置External vSwitch。

2.安裝SSH服務端程序。用Hyper-V Connect進去,鍵入Shell:

1 sudo apt-get purge openssh-server
2 sudo apt-get install -y openssh-server
3 sudo service sshd start

3.向/etc/network/interfaces文件追加如下內容:

1 cat >> /etc/network/interfaces << EOF
2 auto eth0
3 iface eth0 inet static
4 address 192.168.1.100
5 netmask 255.255.255.0
6 gateway 192.168.1.1"
7 EOF

  建議先用ifconfig命令確認一下網卡的名稱是不是為eth0。

  鍵入Shell,重啟網絡:

1 sudo /etc/init.d/networking restart

4.關閉Ubuntu實例,然后將其導出。鍵入PowerShell:

1 $VmName = "Ubuntu16"
2 $Destination = "F:\vm-export"
3 Stop-VM -Name $VmName
4 Export-VM -Name $VmName -Path $Dstination

由此完成虛擬機鏡像的創建,復制虛擬機依賴的是$Destination目錄下的vhdx格式文件。換一台物理機,開始虛擬機鏡像的安裝。

1.創建Internal vSwitch,用PowerShell:

1 $HyperVVirtualSwitchName = "ISInternalSwitch"
2 New-VMSwitch -Name $HyperVVirtualSwitchName -SwitchType Internal
3 Get-NetAdapter | where { $_.Name -Match $HyperVVirtualSwitchName } | New-NetIPAddress -IPAddress "192.168.1.1" -PrefixLength 24

2.基於導出的Ubuntu鏡像和vSwitch,創建新的實例。鍵入PowerShell:

1 $VMName = "Ubuntu16"
2 $HyperVVirtualSwitchName = "ISInternalSwitch"
3 $VMPath = "F:\vm-import\$VMName"
4 $VHDX = "$VMPath\Virtual Hard Disks\Ubuntu16-TensorFlow10.vhdx"
5 New-VM -Name $VMName -SwitchName $HyperVVirtualSwitchName -Path $VMPath -VHDPath $VHDX -Generation 1
6 Start-VM -Name $VMName

3.最后一步,設置端口轉發和開啟防火牆。鍵入Windows批處理命令:

1 netsh interface portproxy delete v4tov4 listenport=22
2 netsh interface portproxy add v4tov4 listenport=22 connectport=22 connectaddress=192.168.1.100
3 netsh advfirewall firewall delete rule name="Ubuntu_SSH"
4 netsh advfirewall firewall add rule name="Ubuntu_SSH" protocol=TCP dir=in localport=22 action=allow

於此,Internal vSwitch的配置完成,用Putty對本機localhost或虛擬機所在遠程機器的局域網IP發起SSH連接請求,成功!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM