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连接请求,成功!
最新文章
- iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
- HTML5移动Web开发(八)——避免文本字体大小重置
- [Leetcode] Interleaving String
- Android弱网测试中关于网络检测的一些借鉴方法
- 转载: scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
- HDU5002 Tree(LCT)
- objective-C 中两种实现动画的方法
- topcoder 673
- 微信小程序开发系列(一)小程序开发初体验
- Fox And Two Dots
- Composer使用笔记
- 一天浓缩学习webpack经过
- [Python Study Notes]CS架构远程访问获取信息--SERVER端v2.0
- C语言第二次作业
- 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)
- 多文档界面的实现(DotNetBar的superTabControl)
- PHP 支付类库, cURL开源HTTP类库
- docker之故障问题解决方案
- SSIS 发送邮件
- iOS开发者证书-详解/生成/使用
热门文章
- VBS脚本编程(2)——运算符
- es6快速入门 系列 - async
- R语言--读取文件(数据输入)
- jenkins 修改端口后无法启动的解决思路
- python3.6虚拟环境
- 4、git和gitlab的配置(2)
- idea debug无法启动 Error running &#39;Tomcat8&#39;: Unable to open debugger port (127.0.0.1:50168): java.net.SocketException ";socket closed
- PHP7与php5
- bugkuCTF
- CURL 实战下载