Нужно сделать переходник только в бродяге, Нат

так что у меня возникли проблемы с бродячей установки "hashicorp / precise64" на моем Mac книги.

во-первых, мой конфиг:

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.network "public_network", type: "dhcp", :bridge => 'en4: Thunderbolt Ethernet'
  config.vm.hostname = "mddirector"
end

это oupput из "бродяга вверх"

==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'hashicorp/precise64' is up to date...
==> 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: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> 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: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
GuestAdditions 4.3.10 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /Users/garthm/Projects/vagrant
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

'ifconfig' показывает следующее:

[email protected]:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:88:0c:a6
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe88:ca6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:725 errors:0 dropped:0 overruns:0 frame:0
          TX packets:544 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:90824 (90.8 KB)  TX bytes:63375 (63.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:2f:bb:6a
          inet addr:10.0.24.118  Bcast:10.0.31.255  Mask:255.255.248.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3490 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:345981 (345.9 KB)  TX bytes:1102 (1.1 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

моя проблема в том, что я могу пинговать виртуальную машину с моей хост-машины (IP: 10.0.24.112), другие люди могут пинговать мою виртуальную машину тоже (10.0.24.XXX), моя виртуальная машина может пинговать мой devbox (IP: 10.10.116.254), я могу пинговать других разработчиков виртуальных наладки станков с моей devbox (не залет, ИС: 10.10.116.254), но я не могу пинг мой ВМ от моего devbox и других разработчиков не могу пинг мой ВМ из их devbox.

настройки виртуальной машины у них есть только с мостовым NIC, но бродяга по какой-то причине имеет как NAT, так и мост, хотя я указал мост в конфигурации. Как вы можете видеть, есть два IP-адреса для виртуальной машины Vagrant, что кажется неправильным. Вы также можете, когда он загружается, он делает порт вперед на адаптере 1, который является адаптером NAT, что означает, что похоже, что он использует адаптер NAT по умолчанию для всего.

Как избавиться от адаптера NAT и использовать только мостовые?

если я редактирую настройки VirtualBox и отключаю адаптер NAT, поэтому есть только мостовой адаптер и загружаю коробку через VirtualBox (т. е. не используя vagrant up), тогда у него есть только eth0 с IP-адресом, который можно проверить с помощью моего devbox, что я и ищу. Если я попытаюсь бродяга до коробки после редактирования настроек VirtualBox и отключение адаптера NAT, я получаю следующую ошибку:

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"]

Stderr: VBoxManage: error: A NAT rule of this name already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component NATEngine, interface INATEngine, callee nsISupports
VBoxManage: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 1655 of file VBoxManageModifyVM.cpp

если я сразу же сделаю vagrant снова, он снова включил адаптер NAT, и у нас снова будет та же проблема.

32
задан SynackSA 2014-05-13 18:19:58
источник

4 ответов

eth0 как NAT фундаментальное требование Бродяги в ее нынешнем состоянии. Но вы можете переопределить конфигурацию маршрутизатора по умолчанию для eth1.

С Vagrant docs:

Маршрутизатор По Умолчанию

В зависимости от настроек может потребоваться вручную переопределить конфигурацию маршрутизатора по умолчанию. Это требуется, если вы нужен доступ к бродячей коробке из других сетей через публичную сеть. Для этого можно использовать скрипт provisioner оболочки:

config.vm.network "public_network", ip: "192.168.0.17"

# default router
config.vm.provision "shell",
  run: "always",
  inline: "route add default gw 192.168.0.1"

# default router ipv6
config.vm.provision "shell",
  run: "always",
  inline: "route -A inet6 add default gw fc00::1 eth1"

# delete default gw on eth0
config.vm.provision "shell",
  run: "always",
  inline: "eval `route -n | awk '{ if ( ==\"eth0\" &&  != \"0.0.0.0\") print \"route del default gw \" ; }'`"

обратите внимание, что вышесказанное является довольно сложным и может быть специфичным для гостевой ОС, но мы документируем приблизительную идею о том, как это сделать, потому что это общий вопрос.

18
отвечен ostrokach 2015-09-10 22:38:00
источник

(извините, совсем наивен по поводу vagrant / virtualbox так что простите за отсутствие правильной сетевой терминологии)

твой выбор мост: en4) Thunderbolt скорее всего проблема.

вот что я предполагаю, что вы хотите/нужно, а не то, что вы просили:

  • SSH войти возможность для vagrant контролировать свой vm, от вашего dev box (хост). Это то, что делает NAT с переадресацией портов. Это не беспорядок что - нибудь еще, поэтому просить его уйти не так уж полезно. И это отображается на адаптере 1 в VirtualBox.

  • подключение из локальной сети, а не только ваш хозяин. Скажем, что-то в 192.168.1.диапазон ХХХ. Вот что важно, на адаптере 2.

  • вы просто заботитесь о своей обычной сетевой карте / сетевом адаптере и не имеете особой причины запускать Ethernet через порт Thunderbolt.

т. е. довольно многое, что вы получите от виртуальной машины VirtualBox с мостом и без бродяги.

вот SSH ifconfig от одного из тех VirtualBox только машины у меня есть на моей локальной сети. Он запускает веб-сервер, к которому я могу подключиться, и мой Mac может SSH в него и подключиться к базе данных на нем. Я буду называть это reference.

[[email protected] ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:9A:85:1A
          inet addr:192.168.1.143  Bcast:192.168.1.255  Mask:255.255.255.0

в VirtualBox сетевая панель для этой виртуальной машины показывает Adapter1 как Мостовую. Все остальные адаптеры отключены.

OK, так что теперь я собираюсь попробовать для того же результата подключения к локальной сети от Vagrant, но я принимаю, что у меня будет NAT на адаптере 1, это механизм связи vagrant-VB ssh.

Try #1-который не удается.

отправной точкой является бродяга init.

потом в Vagrantfile, я изменил только 2 вещи:

config.vm.box = "opscode-ubuntu-14.04"
config.vm.network "public_network"

если я бродяга это, я получаю диалоговое окно с просьбой, какой интерфейс использовать:

==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) en0: Ethernet
3) en3: Thunderbolt 1
4) p2p0
5) bbptp0
6) bridge0

теперь, глядя на него, я сначала выбрал 2) потому что я думал, что я хотел Ethernet и хорошо,1) казалось слишком Яблока'.

это работает, но с неподходящим IP 10.0.xx.xx запись, на которую мой провайдер блокирует пинг, см. ниже. Я думаю, что они действительно имеют в виду общественности, когда он говорит общественной сети.

бродяга ssh

[email protected]:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:0c:41:3e
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe0c:413e/64 Scope:Link

eth1      Link encap:Ethernet  HWaddr 08:00:27:ca:f4:64
          inet6 addr: fe80::a00:27ff:feca:f464/64 Scope:Link

попробуйте #2-правильная версия

залетный остановке, затем удалить каталог, создать это снова и снова бродяга init. (Я обнаружил, что слишком много возиться с сетью может запутать бродяга и / или virtualbox, который полное удаление и перезапуск будет исправить)

config.vm.box = "opscode-ubuntu-14.04"
config.vm.network "public_network"

но, на этот раз, выберите 1) en1: Wi-Fi (аэропорт).

бродяга ssh

что eth1 с 192.168.1.123 выглядит намного лучше, не так ли?

[email protected]:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:0c:41:3e
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

eth1      Link encap:Ethernet  HWaddr 08:00:27:53:6e:1d
          inet addr:192.168.1.123  Bcast:192.168.1.255  Mask:255.255.255.0

и, действительно, я могу пинговать 192.168.1.123 из моей ссылки vm, или из другого физического машина на моей локальной сети.

[[email protected] ~]# ping 192.168.1.123
PING 192.168.1.123 (192.168.1.123) 56(84) bytes of data.
64 bytes from 192.168.1.123: icmp_seq=1 ttl=64 time=1039 ms
64 bytes from 192.168.1.123: icmp_seq=2 ttl=64 time=40.4 ms

FWIW, VirtualBox показывает NAT на адаптере 1 и мост на адаптере 2.

окончательной установки -

добавлен автоматический выбор интерфейса, а также статический IP (который вам не нужен). Проблема решена, по крайней мере для меня.

  config.vm.network "public_network", bridge: 'en1: Wi-Fi (AirPort)', ip: "192.168.1.201"
8
отвечен JL Peyret 2015-05-22 04:11:37
источник

короткий ответ, кажется, нет.

вы можете переопределить адаптер 1, но ожидать проблем, по крайней мере, с vagrant ssh

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.network "public_network", :adapter=>1 , type: "dhcp", :bridge => 'en4: Thunderbolt Ethernet'
  config.vm.hostname = "mddirector"

  # In case you get the host wrong...
  config.vm.boot_timeout = 30
  config.vm.provider "virtualbox" do |vb, override|
       vb.gui = true
  end

  config.ssh.host = '192.168.148.24'

end

выдает:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: bridged
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
    default: VirtualBox adapter #1 not configured as "NAT". Skipping port
    default: forwards on this adapter.
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...

к сожалению, кажется, затем заблокировать настройки сетевого адаптера, но, возможно, Вам повезет больше, чем мне.

если вы делаете, вы всегда можете заставить остановиться и перезагрузить с исправленной ssh.host. В качестве альтернативы я слышал о vagrant dns но никогда не пробовал.

4
отвечен KCD 2014-08-14 04:11:19
источник

нашел эта дискуссия на StackOverflow.

для меня было достаточно открыть связанный Vagrantfile и раскомментируйте следующую строку:

config.vm.network "public_network"

и затем запустить vagrant reload

2
отвечен Tyler 2017-05-23 15:41:50
источник

Другие вопросы vagrant

X