Я относительно новичок в 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
... Я не уверен, имеет ли смысл пытаться управлять вентиляторами внутри виртуальной машины.