• Hyper-V Ubuntu 虚拟机配置双网卡


    Hyper-V Ubuntu 虚拟机配置双网卡

    2024年4月25日10点34分 (上班时间摸鱼

    前情提要

    在学习Kubernetes集群的时候遇到了联网与SSH连接的矛盾。

    Hyper-V平台有一个缺省的虚拟交换机叫做Default Switch,并且给宿主机安装了连接到Default Switch的虚拟网卡vEthernet (Default Switch),两者都是不可删除的,其作用是保证虚拟机具备能连接到互联网的保底能力。

    然而,虚拟机的虚拟网卡连接到Default Switch后,执行的是DHCP策略,导致其IP地址会经常变化,非常不利于SSH连接,因为每次连接都要查一次IP。

    为了方便SSH连接,我们新建了一个模式为Internal的虚拟交换机,叫做Internal Switch,同时宿主机也被安装了连接到Internal Switch的虚拟网卡vEthernet (Internal Switch)。而对于虚拟机,就可以将其网卡的IP固定下来了,从而不需要每次连接前都查一次IP了。

    然而,这个模式还是有一些缺点的。首先就是默认情况下并不具备访问互联网的能力,必须先在宿主机那里配置网络共享,让宿主机可联网的网卡,向共享虚拟网卡共享网络连接,这样之后连接到Internal Switch交换机的虚拟机集群才能联网。其次就是每次共享连接之后,宿主机的虚拟网卡的IP都会被系统改为192.168.137.1,导致整个子网就变成了192.168.137.0/24,这样的话就导致所有虚拟机都必须是这个网段下的才能正常连接。最后就是这种共享连接的办法很麻烦,如果前一晚做完实验忘记取消联网共享,那么第二天开机后你会发现,虽然SSH还能上,但是已经不能联网了,必须先取消共享,然后再次共享,相当麻烦。

    截至目前,所有Linux虚拟机都是采用第二种模式。

    目标与原理

    为了达成以下目标:

    • 虚拟机固定IP方便SSH连接
    • 无需人工再次配置即可联网

    有前辈想到了给虚拟机配置双网卡的办法,链接:关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH),应该是红帽系的发行版。

    本文以安装了Ubuntu 20.04.6的虚拟机为例,其使用的netplan组件,会将Hyper-V给虚拟机设定的网卡,按照在虚拟机配置菜单里的顺序,分配eth0、eth1等的名字。而要配置这些网卡,只需要修改netplan的配置文件就行。

    现在假设:

    • eth0:是虚拟机连接到Default Switch的网卡,采用DHCP模式,不需要其他配置了;
    • eth1:是虚拟机连接到Internal Switch的网卡,采用静态IP模式,需要手动配置IP、网段、网关、DNS等;
    • vEthernet (Default Switch):是宿主机连接到Default Switch的网卡,一切保持默认状态;
    • vEthernet (Internal Switch):是宿主机连接到Internal Switch的网卡,是eth1的网关,也需要手动配置IP、网段、DNS等;
    • vEthernet (Internal Switch)与eth1处于同一子网下。

    那么,只要虚拟机需要发起任何连接时都走eth0,这样虚拟机就可以通过eth0联网了;并且能保证eth1可以接受宿主机发起的连接,这样宿主机就可以通过eth1向虚拟机建立SSH连接了。

    虽然我不能保证不会遇到路由方面的问题;但还好,亲测按照如下步骤,netplan是会自行配置好相关路由的。

    双网卡的配置步骤

    假设vEthernet (Internal Switch)的IP地址是192.168.137.1,并且没有配置DNS;期望将eth1的IP地址设为192.168.137.2,可按照如下步骤配置双网卡:

    1. 为已有的虚拟机创建一个检查点,以备不测。

    2. 正常打开该虚拟机。

    3. 在正在运行的情况下,打开该虚拟机的设置菜单。

    4. 删掉原有的那一个网卡,确保当前没有配置任何网卡。

    5. 新建第一个网卡,选择连接到Default Switch。

    6. 新建第二个网卡,选择连接到Internal Switch。

    7. 备份原有的单网卡netplan配置文件:

      sudo mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
      
      • 1
    8. 新建双网卡配置文件:

      sudo vim /etc/netplan/00-installer-config.yaml
      
      • 1

      然后粘贴:

      network:
        ethernets:
          eth0:
            addresses: []
            dhcp4: true
          eth1:
            addresses:
            - 192.168.137.2/24		# eth1
            gateway4: 192.168.137.1	# vEthernet (Internal Switch)
            nameservers:
              addresses:
              - 8.8.8.8				# Google DNS
              - 119.29.29.29			# Tencent DNS
              - 223.5.5.5				# Aliyun DNS
              search: []
        version: 2
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16

      保存并退出:

      :wq
      
      • 1
    9. 应用新的netplan配置:

      sudo netplan apply
      
      • 1
    10. 此时不必重启系统,即可实现Hyper-V虚拟机双网卡。

    全文完。

  • 相关阅读:
    带命名空间的arxml读取
    【Git】git分支的三种常见应用场景
    Linux——开发工具yum与vim
    【vue实战项目】通用管理系统:作业列表
    layui.msg第一次弹出的提示很长
    什么是需求分析,如何进行需求分析?
    加密货币三箭的崩盘华尔街LTCM的历史重演
    智己汽车数据驱动中心PMO高级经理张晶女士受邀为第十三届中国PMO大会演讲嘉宾
    es6新增-map数据结构
    firefox_dev_linux下载安装配置(部分系统自带包请看结尾)
  • 原文地址:https://blog.csdn.net/weixin_45686201/article/details/138184320