最近工作中要在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连接请求,成功!

最新文章

  1. iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
  2. HTML5移动Web开发(八)——避免文本字体大小重置
  3. [Leetcode] Interleaving String
  4. Android弱网测试中关于网络检测的一些借鉴方法
  5. 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
  6. HDU5002 Tree(LCT)
  7. objective-C 中两种实现动画的方法
  8. topcoder 673
  9. 微信小程序开发系列(一)小程序开发初体验
  10. Fox And Two Dots
  11. Composer使用笔记
  12. 一天浓缩学习webpack经过
  13. [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
  14. C语言第二次作业
  15. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)
  16. 多文档界面的实现(DotNetBar的superTabControl)
  17. PHP 支付类库, cURL开源HTTP类库
  18. docker之故障问题解决方案
  19. SSIS 发送邮件
  20. iOS开发者证书-详解/生成/使用

热门文章

  1. VBS脚本编程(2)——运算符
  2. es6快速入门 系列 - async
  3. R语言--读取文件(数据输入)
  4. jenkins 修改端口后无法启动的解决思路
  5. python3.6虚拟环境
  6. 4、git和gitlab的配置(2)
  7. idea debug无法启动 Error running &#39;Tomcat8&#39;: Unable to open debugger port (127.0.0.1:50168): java.net.SocketException &quot;socket closed
  8. PHP7与php5
  9. bugkuCTF
  10. CURL 实战下载