vagrant / etc / hosts: IP машины против localhost

У меня есть бродячая машина с этим IP-адресом:

Vagrant.configure("2") do |config|
    config.vm.network :private_network, ip: 192.168.33.11
    config.vm.network "forwarded_port", guest: 80, host: 8080
    config.vm.hostname = "my-devenv"
...
end

Все работает нормально. Но меня смущает файл / etc / hosts на виртуальной машине: в чем разница между использованием localhost и IP-адресом виртуальной машины (127.0.0.1 some-dev-site.dev против 192.168.33.11 some-dev-site.dev)?

127.0.0.1 localhost
127.0.0.1 some-dev-site.dev
192.168.33.11 some-dev-site.dev

person numediaweb    schedule 06.02.2018    source источник


Ответы (1)


Общие

Локальный хост обычно всегда один и тот же на разных машинах: 127.0.0.1 (локальный шлейф), а IP-адрес виртуальной машины - это внешний IP-адрес в «сети». Вы можете, например, подключиться со своего компьютера к виртуальной машине, получив доступ к IP-адресу виртуальной машины, но если вы подключаетесь к localhost с вашего компьютера на виртуальную машину, вы окажетесь на своем собственном компьютере.

Если вы привяжете службу к 127.0.0.1, вы не сможете получить к ней доступ «за пределами» «машины».

Возможно, это лучшее объяснение, если вы хотите узнать больше: https://www.lifewire.com/network-computer-special-ip-address-818385

Более конкретно для вашей ситуации

Не уверен, правильно ли я понял ваш вопрос, но я предполагаю, что ваш вопрос: каковы имена хостов в / etc / hosts вашей виртуальной машины? Это потому, что они не существуют в DNS, и если вы подключаетесь к этим хостам, они должны оказаться в нужном месте, и в данном случае это сама виртуальная машина.

person Jørgen    schedule 06.02.2018
comment
Итак, если я хорошо понимаю: когда я вызываю some-dev-site.dev на своей локальной машине (которая также имеет на своих хостах: 192.168.33.11 some-dev-site.dev), он разговаривает с виртуальной машиной, используя some-dev-site.dev, тогда виртуальная машина переводит это на 127.0.0.1? - person numediaweb; 06.02.2018
comment
что означает в конце: IP 192.168.33.11 виртуальной машины == 127.0.0.1 виртуальной машины - person numediaweb; 06.02.2018
comment
Если бродяга добавил 192.168.33.11 some-dev-site.dev в ваш локальный / etc / hosts на вашем компьютере, тогда вы получите доступ к веб-сервису на своей виртуальной машине через внешний интерфейс. Когда вы находитесь внутри своей виртуальной машины и получаете доступ к some-dev-site.dev, он, скорее всего, подключится к веб-сервису через локальный интерфейс обратной петли 127.0.0.1. Вам нужно смотреть на ваш / etc / hosts как на простой локальный «DNS-сервер». А адрес 127.0.0.1 как частный IP-адрес виден только той машине, на которой вы находитесь. - person Jørgen; 06.02.2018
comment
И 192.168.33.11! = 127.0.0.1 виртуальной машины - это два отдельных интерфейса. Запустите команду: ifconfig на своей виртуальной машине, и вы увидите что-то вроде eth0 192.168.33.11 и lo0 127.0.0.1 - person Jørgen; 06.02.2018