Vagrant не может открыть eth1 на гостевой ОС Xubuntu 16.04

Vagrant не может открыть eth1 на гостевой ОС Xubuntu 16.04

Я относительно новичок в Linux и Vagrant. Я обновил свою гостевую систему VM (VirtualBox 5.0.18 + Vagrant 1.8.1 на хосте Windows) с Xubuntu 15.10 до Xubuntu 16.04 некоторое время назад. В тот момент или вскоре после этого я заметил некоторые странности, например, смещенный курсор мыши (на несколько пикселей) и отсутствующие общие каталоги. Я предполагаю, что это из-за следующей ошибки, о которой сообщалось во время vagrant up:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 8080 (guest) => 8080 (host) (adapter 1)
    default: 9000 (guest) => 9000 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
GuestAdditions 5.0.18 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

/sbin/ifup eth1

Stdout from the command:

Failed to bring up eth1.


Stderr from the command:

mesg: ttyname failed: Inappropriate ioctl for device
run-parts: /etc/network/if-up.d/ubuntu-fan exited with return code 1

Я искал ошибку в сочетании с Vagrant и VirtualBox в сети, но случаи, которые я нашел, казались немного отличными от моих. Люди пишут о /etc/udev/rules.d/70-persistent-net.rules- но, похоже, на моей машине ее нет, как и /etc/sysconfig.

Попытка получить /sbin/ifup eth1дополнительную информацию после входа в систему приводит к следующему:

vagrant@IDE-machine ~ $ sudo /sbin/ifup -v eth1
Configuring interface eth1=eth1 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/bridge
run-parts: executing /etc/network/if-pre-up.d/ethtool
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
/bin/ip addr add 192.168.56.21/255.255.255.0 broadcast 192.168.56.255     dev eth1 label eth1
RTNETLINK answers: File exists
Failed to bring up eth1.

Мой файл Vagrant выглядит так:

Vagrant.configure(2) do |config|
  # a locally stored box
  config.vm.box = "IDE-machine"

  config.ssh.private_key_path = "ssh/id_rsa"

  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 9000, host: 9000

  config.vm.network "private_network", ip: "192.168.56.21"

  config.vm.provider "virtualbox" do |vb|
      vb.gui = true

      vb.memory = "12288"
      vb.cpus = 2
      vb.name = "my_IDE-machine"

      vb.customize ["modifyvm", :id, "--monitorcount", "1"]
      vb.customize ["modifyvm", :id, "--vram", "64"]
      vb.customize ["storageattach", :id, "--storagectl", "SATA", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "V:/BoxStorage/Projects.vdi"]
  end
  config.vm.provision "shell", inline: "/vagrant/provision.sh"
end

Гостевые дополнения установлены, я использую vagrant-vbguestплагин, который ранее настроил нужную версию гостевого дополнения.

Есть ли у кого-нибудь идеи, в чем может быть проблема, или подсказки, как мне копать дальше?

Обновлять: Мне указали на это:https://github.com/mitchellh/vagrant/issues/7155(что не совсем относится к моему случаю) Что привело меня к следующему:https://askubuntu.com/questions/689070/изменения-имени-сетевого-интерфейса-после-обновления-до-15-10-udev-изменения/732638#732638

Я попробовал изменить его /etc/default/grubс помощью GRUB_CMDLINE_LINUX="net.ifnames=0", затем update-grubкак root и перезагрузиться, но безрезультатно.

Еще немного покопавшись, я обнаружил следующее:

vagrant@IDE-machine ~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
      address 192.168.56.21
      netmask 255.255.255.0
#VAGRANT-END

Обновление 2:Как и просили, вот вывод dmesg и содержимое ubuntu-fan:

vagrant@IDE-machine ~ $ dmesg | grep eth
[    1.692133] e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:af:31:b4
[    1.692144] e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
[    2.068113] e1000 0000:00:08.0 eth1: (PCI:33MHz:32-bit) 08:00:27:94:1e:dc
[    2.068120] e1000 0000:00:08.0 eth1: Intel(R) PRO/1000 Network Connection
[    5.732516] e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[    5.732980] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[    5.733061] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[    6.790923] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.793512] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.795646] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
[    6.796069] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

vagrant@IDE-machine ~ $ cat /etc/network/if-up.d/ubuntu-fan 
#!/bin/sh

set -e

case "$IFACE" in
lo) exit 0 ;;
fan-*)  exit 0 ;;
esac

case "$ADDRFAM" in
inet) ;;
*) exit 0 ;;
esac

# NOTE: NetworkManager simply does not call out to the normal
#       down hooks as it only checks _after_ the interface has
#       been lost.  Roll with this.
case "$PHASE::$METHOD" in
post-up::static|post-up::dhcp|post-up::NetworkManager)          ;;
pre-down::static|pre-down::dhcp|post-down::NetworkManager)      ;;
*) exit 0 ;;
esac

case "$MODE" in
start|stop) ;;
*) exit 0 ;;
esac

/usr/sbin/fanctl net "$MODE" "$IFACE"

решение1

Вы проверили ваши /etc/network/interfacesфайлы конфигурации? Возможно, у вас есть несколько шлюзов, как указаноздесь.

В любом случае, немного подправив этот файл и поигравшись с ним, ifconfigвы можете вытащить проблему. Проверьте также разрешения, я сомневаюсь, что это оттуда, но все же :/

Вы можете попробовать вернуться к более простой конфигурации, /etc/network/interfacesесли это еще не так, и вернуться по частям к исходному файлу конфигурации. Я бы так и сделал, я думаю.

EDIT: Из вашего dmesgвывода видно, что ссылки готовы, поэтому сетевая часть должна быть в порядке. Если вы сделаете dmesg | grep eth, есть ли какая-либо соответствующая информация?

А еще, можешь ли ты cat /etc/network/if-up.d/ubuntu-fan? Он вышел с кодом выхода 1, было бы интересно проверить, что там происходит.

ОБНОВЛЯТЬ:

Ваш dmesgвывод кажется правильным, соединения eth0/1 в конечном итоге готовы, так что сеть должна работать.

Вам следует попробовать выполнить ubuntu-fanскрипт построчно и проверить коды выхода ( echo $?должно быть 0). Интересно, не исходит ли проблема из fanctlпрограммы в конце. Обычно она используется для управления вентиляторами на машине, но здесь это виртуальная машина, так что ... Если проблема исходит из этой строки, вы можете попытаться посмотреть, почему она дает сбой, но я бы удалил строку fanctl, а затем, возможно, и весь файл. Я полагаю, что другие строки здесь для обработки событий, чтобы вызвать fanctl.

Я проверил свои виртуальные машины Vagrant (правда, в основном Ubuntu 14.04) и нигде ничего не вижу fanctl... Я не уверен, имеет ли смысл пытаться управлять вентиляторами внутри виртуальной машины.

Связанный контент