zoukankan      html  css  js  c++  java
  • HyperV下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连接请求,成功!

  • 相关阅读:
    ConcurrentHashMap实现原理--转载
    java原子操作的实现原理--转载
    Catch Me If You ... Can't Do Otherwise--转载
    微框架spark--api开发利器
    Exploring Micro-frameworks: Spring Boot--转载
    简约之美jodd--props属性使用
    jodd-cache集锦
    java根据url获取完整域名
    Jodd-vtor验证框架
    倒排列表求交集算法 包括baeza yates的交集算法
  • 原文地址:https://www.cnblogs.com/shishaochen/p/5777240.html
Copyright © 2011-2022 走看看