为Hyper-V下的Ubuntu虚拟机添加静态IP用于ssh登陆

我在Hyper-V建立了一个Ubuntu Server 24.04,采用默认的虚拟网络交换机能够访问外网,通过家里的路由器能够看到为他分配了一个内部ip,安装openssh-server后能够使用<internal-ip>:22进行ssh连接。但是每次大约过了2小时后,ssh连接就会中断,然后查看ifconfig就会发现此时的ip变成和宿主机一样了,reboot或在Hyper-V里强制关机再启动都无法分配到新ip,但是外网访问正常。此问题暂时未解决,考虑到没有影响外网访问就没深究。

另外,这样每次通过路由DHCP分配动态internal-ip,配置ssh客户端的时候就很麻烦。既然是局域网内部使用的,那其实没有必要通过路由分配的ip进行ssh,给虚拟机加一个虚拟内部交换机搞一个固定ip就好了。

首先在Hyper-V的虚拟交换机管理器里添加一个新的虚拟交换机,类型为内部。

然后到“控制面板\网络和 Internet\网络连接”找到新建的连接,更改TCP/IPv4属性。

然后将这个虚拟交换机添加到Ubuntu虚拟机上。

进入Ubuntu Server进行配置。这台机器是通过cloud-init初始化的netplan,所以保险起见(防止cloud-init还原成初始化配置)我们要修改2个地方:

/etc/netplan/50-cloud-init.yaml
/etc/cloud/cloud.cfg.d/90-installer-network.cfg

#sudo cat /etc/cloud/cloud.cfg.d/90-installer-network.cfg
network:
  ethernets:
    eth0:
      dhcp4: true
    eth1:
      dhcp4: false
      addresses:
      - 10.10.10.2/24
  version: 2
Code language: PHP (php)

这里的10.10.10.2/24是和连接配置的10.10.10.1在同一网段。

sudo netplan --debug apply
#rebootCode language: CSS (css)

然后就可以通过新的内部ip 10.10.10.2进行ssh了。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理