Vagrant가 Xubuntu 16.04 게스트에서 eth1을 가져오지 못함

Vagrant가 Xubuntu 16.04 게스트에서 eth1을 가져오지 못함

저는 Linux와 Vagrant를 비교적 처음 접했습니다. 얼마 전에 VM 게스트 시스템(Windows 호스트의 VirtualBox 5.0.18 + Vagrant 1.8.1)을 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/network-interface-name-changes-after-update-to-15-10-udev-changes/732638#732638

나는 루트 /etc/default/grub로 변경 GRUB_CMDLINE_LINUX="net.ifnames=0"하고 update-grub재부팅을 시도했지만 아무 소용이 없었습니다.

좀 더 살펴보니 다음과 같은 내용이 나에게 나타났습니다.

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원래 구성 파일로 조금씩 돌아갈 수 있습니다. 나는 그렇게 할 것이라고 생각합니다.

편집: dmesg출력 결과에 따르면 링크가 준비된 것으로 나타나므로 네트워크 부분은 정상이어야 합니다. 만드신다면 dmesg | grep eth관련된 정보가 있나요?

그리고 고양이도 할 수 있나요 /etc/network/if-up.d/ubuntu-fan? 종료 코드 1로 종료되었습니다. 거기서 무슨 일이 일어나고 있는지 확인하는 것이 흥미로울 수 있습니다.

업데이트:

출력 dmesg이 괜찮은 것 같습니다. eth0/1 링크가 결국 준비되었으므로 네트워크가 작동할 것입니다.

ubuntu-fan스크립트를 한 줄씩 실행 하고 종료 코드( echo $?, 이어야 함 0)를 확인해야 합니다. fanctl결국 프로그램 에서 문제가 발생하지 않는지 궁금합니다 . 일반적으로 컴퓨터의 팬을 제어하는 ​​데 사용되지만 여기는 VM이므로 ... 이 줄에서 나오는 경우 실패한 이유를 찾아볼 수 있지만 줄을 제거한 다음 fanctl전체 파일을 사실. 트리거할 이벤트를 처리하기 위해 다른 라인이 여기에 있는 것 같습니다 fanctl.

내 방랑하는 VM(주로 우분투 14.04)을 확인했는데 아무 fanctl데도 표시되지 않습니다. VM 내부의 팬을 제어하려고 시도하는 것이 타당하지 않습니다.

관련 정보