Centos7 с частной сетью потерял фиксированный IP

У меня проблема с сетью с бродячей коробкой centos7. Когда я настраиваю частную сеть с фиксированным IP-адресом, она сначала хорошо связывается, но теряется через несколько секунд/минут.

 vagrant up
 ==> default: Forcing shutdown of VM...
 ==> default: Destroying VM and associated drives...
 ==> default: Running cleanup tasks for 'shell' provisioner...
 Bringing machine 'default' up with 'virtualbox' provider...
 ==> default: Importing base box 'sfeirbenelux/centos7'...
 ==> default: Matching MAC address for NAT networking...
 ==> default: Checking if box 'sfeirbenelux/centos7' is up to date...
 ==> default: Setting the name of the VM: poc_docker
 ==> default: Fixed port collision for 22 => 2222. Now on port 2200.
 ==> 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: 22 => 2200 (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:2200
     default: SSH username: vagrant
     default: SSH auth method: private key
     default: Warning: Connection timeout. Retrying...
     default:
     default: Vagrant insecure key detected. Vagrant will automatically replace
     default: this with a newly generated keypair for better security.
     default:
     default: Inserting generated public key within guest...
     default: Removing insecure key from the guest if its present...
     default: Key inserted! Disconnecting and reconnecting using new SSH key...
 ==> default: Machine booted and ready!
 ==> default: Checking for guest additions in VM...
     default: The guest additions on this VM do not match the installed version of
     default: VirtualBox! In most cases this is fine, but in rare cases it can
     default: prevent things such as shared folders from working properly. If you see
     default: shared folder errors, please make sure the guest additions within the
     default: virtual machine match the version of VirtualBox you have installed on
     default: your host and reload your VM.
     default:
     default: Guest Additions Version: 5.0.2
     default: VirtualBox Version: 4.3
 ==> default: Setting hostname...
 ==> default: Configuring and enabling network interfaces...
 ==> default: Running provisioner: shell...
     default: Running: inline script
 ==> default: net.ipv4.ip_forward = 1
 ==> default: Setting up swapspace version 1, size = 2097148 KiB
 ==> default: no label, UUID=170723d8-1782-4915-a877-4d9874ac7396
 ➜  install git:(master) ✗ ping 192.168.100.20
 PING 192.168.100.20 (192.168.100.20): 56 data bytes
 64 bytes from 192.168.100.20: icmp_seq=0 ttl=64 time=0.390 ms
 64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=0.252 ms
 64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=0.461 ms
 ^C
 --- 192.168.100.20 ping statistics ---
 3 packets transmitted, 3 packets received, 0.0% packet loss
 round-trip min/avg/max/stddev = 0.252/0.368/0.461/0.087 ms
 ➜  install git:(master) ✗ ping 192.168.100.20
 PING 192.168.100.20 (192.168.100.20): 56 data bytes
 64 bytes from 192.168.100.20: icmp_seq=0 ttl=64 time=0.273 ms
 Request timeout for icmp_seq 1
 Request timeout for icmp_seq 2
 Request timeout for icmp_seq 3
 Request timeout for icmp_seq 4

С этим бродячим файлом:

vagrant.configure(2) do |config|

 config.vm.box = "centos7"
 config.vm.hostname = "docker-registry"
 config.vm.box_url = "https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box"

 #config.vm.network "public_network"
 config.vm.network "private_network", ip: "192.168.100.20"
 #config.vm.synced_folder ".", "/vagrant", type: "nfs"

 # VirtualBox
 config.vm.provider :virtualbox do |vb|
   vb.name = "poc_docker"
   vb.memory = 3072
   vb.cpus = 2
   vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
   vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
 end


end

При подключении на боксе кажется, что ip теряется.

sudo /sbin/ifup eth1

Исправить проблему временно, но IP-адрес снова когда-нибудь теряется. Перезагрузка коробки (vagrant halt && vagrant up), кажется, навсегда решает проблему. Я попытался создать собственный ящик Centos 7 с помощью Packer ( https://atlas.hashicorp.com/sfeirbenelux/boxes/centos7), и я тоже воспроизвел проблему.

Я полагаю, что это конкретная проблема Centos 7? У вас уже есть такая же проблема? Есть ли способ исправить это, добавив бродячую команду?

Моя среда:

OS X Yosemite ➜ ~ vagrant --version Vagrant 1.7.2 ➜ ~ VBoxManage --version 4.3.26r98988


person Gildas Cuisinier    schedule 11.09.2015    source источник
comment
странно, у меня почти такие же настройки, но я все еще использую Centos 6.5, и он отлично работает. Можете ли вы поместить сценарий оболочки, который вы запускаете, он мешает сети? также вы можете обновить гостевую виртуальную коробку   -  person Frederic Henri    schedule 11.09.2015
comment
Я удалил сценарий оболочки. Все такой же   -  person Gildas Cuisinier    schedule 11.09.2015


Ответы (3)


Кажется, это проблема из-за конфигурации DHCP (проблема: https://github.com/mitchellh/vagrant/issues/5590 )

сетевая служба не перезагружает NetworkManager, поэтому она будет продолжать ждать аренды dhcp ... и после тайм-аута dhcp фиксированный IP-адрес удаляется.

Добавление сценария обеспечения оболочки с помощью

sudo nmcli connection reload
sudo systemctl restart network.service

Устраняет проблему

EDIT: vagrant 1.7.3+ также исправляет ошибку;)

person Gildas Cuisinier    schedule 11.09.2015
comment
Да, это исправило это для меня, используя Centos 7 с Vagrant 1.9.1. - person Rudi Starcevic; 03.02.2017
comment
У меня работало на 1.9.1, используя базовую установку Centos Box с веб-сайта. - person chadpeppers; 05.04.2017

Похоже, что в более новых версиях Vagrant (1.9.1) есть аналогичная проблема.

Запрос на извлечение, который устраняет проблему, уже был объединен (еще не выпущен):

https://github.com/mitchellh/vagrant/pull/8148

Если вы хотите применить это исправление, вы можете попробовать это (может потребоваться sudo, в зависимости от прав доступа к файлу):

  1. Найдите локальную установку Vagrant (в Fedora это /opt/vagrant/)
  2. Перейдите в папку бродячего драгоценного камня:

    cd embedded/gems/gems/vagrant-1.9.1
    
  3. Инициализируйте новый репозиторий Git и добавьте удаленный GitHub:

    git init
    git remote add origin https://github.com/mitchellh/vagrant.git
    git fetch --all
    
  4. Изучите новую ветку и сбросьте ее до текущей версии (например, 1.9.1).

    Если вы не уверены, есть ли у вас локальные изменения, не используйте --hard и выполните git diff / git checkout после сброса:

    git checkout -b hotfixes
    git reset --hard v1.9.1
    
  5. Теперь примените исправление:

    git cherry-pick 96611341a96d7d19fdade5556a110b22c6add22b
    

После этого vagrant reload должен нормально работать в локальной сети.

person Alex    schedule 09.01.2017
comment
Спасибо вам большое за размещение этого. Я провел большую часть дня, пытаясь понять это. - person user1071847; 12.01.2017
comment
Большое спасибо, это решает проблему. Я действительно не понимаю, почему это исправление было объединено 11 дней назад, и его до сих пор нет в загружаемом бинарном файле :/ Похоже, это довольно важная проблема. - person Tim Strijdhorst; 16.01.2017