Virtualbox Ubuntu 网络桥在机器启动时自动创建

Virtualbox Ubuntu 网络桥在机器启动时自动创建

我正在使用 Ubuntu 16.04 镜像

我跟随本教程

最后一部分,使网络永久部分在我的场景中不起作用。

此时,如果你重启机器,网桥将与 eth1 分离。因此,还有两件事可以使设置永久生效。

/etc/network/interfaces像这样更新:

auto eth1 iface eth1 inet manual    
pre-up ifconfig $IFACE up   
post-down ifconfig $IFACE down

/etc/rc.local并在(exit 0 之前)添加以下命令:

brctl addif docker1 eth1

重启机器后,无法从主机 ping 通 IP。所以我怀疑它rc.local没有起作用。

我也尝试删除文件-e中的参数rc.local,但重启后仍然不起作用。


接下来我尝试解决方案 2

docker-network.sh在目录中创建文件/etc/init.d

#!/bin/sh
sudo ip addr del 192.168.33.10/24 dev eth1
sudo brctl addif docker1 eth1

使其可执行:

sudo chmod +x /etc/init.d/docker-network.sh

为我的脚本创建适用于各种运行级别的符号链接:

sudo update-rc.d docker-network.sh defaults

在我重启虚拟机后,我仍然无法直接 ping 到该机器。但是,在我通过 SSH 连接到我运行的机器后/etc/init.d/docker-network.sh,我就可以 ping 到ping它了。

那么我如何确保它在重启后能够运行?

更新

我运行sudo systemctl enable rc-local.service并重新启动。然后我运行sudo systemctl status rc-local

vagrant@vagrant:~$ sudo systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Mon 2017-08-21 09:27:56 UTC; 10min ago
  Process: 1247 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0

Aug 21 09:27:56 vagrant systemd[1]: Starting /etc/rc.local Compatibility...
Aug 21 09:27:56 vagrant sudo[1259]:     root : TTY=unknown ; PWD=/ ; USER=root ;
Aug 21 09:27:56 vagrant sudo[1259]: pam_unix(sudo:session): session opened for u
Aug 21 09:27:56 vagrant sudo[1308]:     root : TTY=unknown ; PWD=/ ; USER=root ;
Aug 21 09:27:56 vagrant sudo[1308]: pam_unix(sudo:session): session opened for u
Aug 21 09:27:56 vagrant rc.local[1247]: bridge eth1 does not exist!
Aug 21 09:27:56 vagrant systemd[1]: Started /etc/rc.local Compatibility.

答案1

systemdUbuntu从 Ubuntu 15.04 测试版开始就已开始使用,并且rc.local在 16.04 中默认处于“关闭”状态。

您可以rc.local通过以下命令启用并重新启动 Ubuntu。

sudo systemctl enable rc-local.service

您想通过以下命令检查活动状态:

sudo systemctl status rc-local

根据上面命令结果打印的行:

8 月 21 日 09:27:56 vagrant rc.local[1247]: 网桥 eth1 不存在

这意味着rc.local触发了你的脚本并且它被执行了但有时rc.locsl执行启动时首先并且它会导致在执行中的命令/脚本时发生一些中断rc.local

我建议sleep x在您的命令/脚本运行之前放置一个rc.localx可以指定秒数的值,您可能需要增加这个x秒数来查看它何时起作用),您也可以sleep x在执行主命令之前在您的脚本中执行此操作。

相关内容