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

发布于:2024-04-28 ⋅ 阅读:(27) ⋅ 点赞:(0)

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
    
  8. 新建双网卡配置文件:

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

    然后粘贴:

    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
    

    保存并退出:

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

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

全文完。


网站公告

今日签到

点亮在社区的每一天
去签到