当宿主机改变网络时,如何改变vagrant guest vm ip?

当宿主机改变网络时,如何改变vagrant guest vm ip?

我的笔记本电脑上有一个 vagrant 客户端盒“ubuntu/trusty64”。我经常更换家庭/工作/咖啡网络,或者将笔记本电脑连接到手机热点。

我想根据我的机器所在的网络重新配置 vagrant 客户端的网络接口,从而在所有不同的网络上使用公共网络。因此,只要它有效,我就可以根据需要添加路由或取消注释配置块。

我还想在我的 ubuntu 主机上使用 ssh 配置文件,这样我就可以通过 sftp 轻松浏览 vagrant boxes 的文件系统。

问题:我该怎么办呢。

这是我尝试过的:

The initial setup that works:

Host machine:
---------------
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

...
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether a4:c4:94:5f:00:a5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global wlan0
   valid_lft forever preferred_lft forever
inet6 fe80::a6c4:94ff:fe5f:a5/64 scope link 
   valid_lft forever preferred_lft forever


Guest vm:
---------------
config.vm.network :public_network, bridge: "wlan0", ip: "192.168.1.251", netmask: "255.255.255.0"

然后我更换网络(例如连接到蜂窝热点):

Host machine:
---------------
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.43.1     0.0.0.0         UG    0      0        0 wlan0
192.168.43.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether a4:c4:94:5f:00:a5 brd ff:ff:ff:ff:ff:ff
inet 192.168.43.101/24 brd 192.168.43.255 scope global wlan0
   valid_lft forever preferred_lft forever
inet6 fe80::a6c4:94ff:fe5f:a5/64 scope link 
   valid_lft forever preferred_lft forever



Guest vm:
---------------
config.vm.network :public_network, bridge: "wlan0", ip: "192.168.43.105", netmask: "255.255.255.0"

无法通过 ssh 连接到 192.168.43.105(通过使用 ssh 配置)。经过调查,我发现网络接口甚至没有分配(我在启动期间检查虚拟盒中的 GUI 时看到了这一点):

在此处输入图片描述

旧 IP 正在被分配。

请让我知道您对故障排除的任何想法和方案。

附言

我正在从 serverfault 转移问题: https://serverfault.com/questions/798980/how-to-change-vagrant-guest-vm-ip-when-the-host-machine-changes-the-network

如果这不符合规则,我提前致歉。我真的希望如此。

答案1

有多种方法可以解决这个问题,但所有方法都涉及主机或猜测机器参与同一网络。

我只是在我的家庭和工作网络上的网络管理器管理的 wlan0 连接上创建了一个 IP 别名(网络由 IP 和子网掩码定义)。

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether a4:c4:94:5f:00:a5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global wlan0
   valid_lft forever preferred_lft forever
inet 192.168.0.158/24 brd 192.168.0.255 scope global wlan0
   valid_lft forever preferred_lft forever
inet6 fe80::a6c4:94ff:fe5f:a5/64 scope link 
   valid_lft forever preferred_lft forever

并且猜测操作系统只有 1 个 IP:

config.vm.network :public_network, bridge: "wlan0", ip: "192.168.0.159", netmask: "255.255.255.0"

因此,现在当我在家时,我可以通过 ssh 连接到计算机,因为我有一个 IP 别名,并且我的 NIC 与客户机处于同一网络中。当我在工作时,它将自动工作,因为我的 NIC 将自动处于同一子网中。

相关内容