Hyper-V Ubuntu 虚拟机配置双网卡 [无需付费可看]

本文介绍了如何在使用Hyper-V搭建Kubernetes集群时,通过配置双网卡(默认网卡用于联网,静态IP网卡用于SSH)解决IP变动带来的不便,包括步骤、原理和验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2025年3月13日重要声明

此原创文章此前被莫名其妙设定为VIP免费,本人从未主动如此设置,现已介入取消付费,所有人均可免费查阅,大家一起进步!如再有擅自修改可见性,我会采取进一步措施维护大家的权利!特此声明!!!

背景介绍

在学习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的网卡,需要手动配置IP与网段;
  • 要求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. 在虚拟机正在运行的情况下,打开其Hyper-V设置菜单:

    1. 首先,删掉原有的那一个网卡,确保当前没有配置任何网卡;

    2. 然后,新建第一个网卡,选择连接到Default Switch;

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

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

    sudo mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
    
  5. 重建双网卡配置文件:

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

    然后粘贴:

    network:
      ethernets:
        eth0:
          addresses: []
          dhcp4: true
          nameservers:
            addresses:
            - 119.29.29.29			# Tencent DNS
            - 223.5.5.5				# Aliyun DNS
            - 8.8.8.8				# Google DNS
            search: []
        eth1:
          addresses:
          - 192.168.137.2/24
      version: 2
    

    保存并退出:

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

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

验证

如前文所述,netplan apply命令会使新配置立即生效。此时即可使用ip addr、ip route、nslookup、ping等命令来验证能否访问固定ip以及能否联网了。

下面是最终验证的步骤:

  1. 关掉虚拟机;
  2. 重启宿主机;
  3. 启动虚拟机;
  4. 查看宿主机的vEthernet (Default Switch)的IP是否更新;
  5. 查看虚拟机的eth0的IP是否更新;
  6. 使用ip addr、ip route、nslookup、ping等命令来验证能否联网。

全文完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值