![](/img/trans.png)
[英]Unable to connect to Vagrant private network from host - Destination host unreachable
[英]Unable to connect to Vagrant private network from host
我有一個無用的虛擬盒子並且正在運行。 到目前為止,我一直無法連接到Web服務器。 這是啟動:
[jesse@Athens VVV-1.1]$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> 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: 22 => 2222 (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: Warning: Connection timeout. Retrying...
==> 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: 4.2.0
default: VirtualBox Version: 4.3
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /home/jesse/vagrant/vvvStable/VVV-1.1
default: /srv/www => /home/jesse/vagrant/vvvStable/VVV-1.1/www
default: /srv/config => /home/jesse/vagrant/vvvStable/VVV-1.1/config
default: /srv/database => /home/jesse/vagrant/vvvStable/VVV-1.1/database
default: /var/lib/mysql => /home/jesse/vagrant/vvvStable/VVV-1.1/database/data
==> default: VM already provisioned. Run `vagrant provision` or use `--provision` to force it
==> default: Checking for host entries
在我的主機控制台上,ip addr show yields:
4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
5: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
在來賓上它產生:
vagrant@vvv:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:12:96:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fe12:9698/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:2c:d4:3e brd ff:ff:ff:ff:ff:ff
inet 192.168.50.4/24 brd 192.168.50.255 scope global eth1
現在,我想做的就是以任何可行的方式訪問虛擬機上的Web服務器。 我嘗試了各種各樣的事情,只是在黑暗中拍攝。 我很樂意提供任何具體信息。 任何幫助或建議,將不勝感激
根據提供的輸出,該框具有2個網絡接口,其中1個是默認NAT,另一個是專用-請問您說。
您無法通過私有接口訪問VM中托管的網站的原因:可能是主機eth0
或wlan0
IP地址與私有接口不在同一網絡中-> 192.168.50.4/24
那里不是路線。
要訪問來賓中Web服務器托管的站點,您可以使用以下選項:
將Web端口(例如80)轉發到主機的8080(您不能使用80,因為它是* NIX上的特權端口)。 添加以下內容
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080,
auto_correct: true
end
注意:如果主機上的端口已在使用中,則auto_correct將解決端口沖突。
進行vagrant reload
,您就可以通過http://localhost:8080/
訪問該網站
添加公共網絡接口
Vagrant.configure("2") do |config|
config.vm.network "public_network"
end
在啟動並運行虛擬機后獲取其IP,端口轉發不適用於橋接網絡。 因此,您將使用http://IP_ADDR
訪問該站點,如果它在VM中綁定到80,否則請指定端口。
另一種可能性僅供將來參考。
通常,當您使用專用網絡創建VM時,Vagrant(不確定Virtualbox?)會在主機的路由表中創建相應的條目。 您可以使用查看這些
netstat -rn
不知何故,我的主機進入了一種狀態,即創建VM並不會導致新的路由出現在路由表中,並且相應地無法連接。 同樣,您可以使用上述命令查看未出現的路由。
手動創建路由使我可以訪問虛擬機。 例如:
sudo route -nv add -net 10.0.4 -interface vboxnet
(替換適當的網絡和接口。)但是我不想這樣做。
基於這個問題 ,我嘗試重新啟動主機,Vagrant重新開始自動創建路由表條目。
不確定到底是什么問題,但希望這可以對某人有所幫助。
我遇到過同樣的問題。 是我的vboxnet0接口出現故障。 在上市的ip addr
,你有<BROADCAST,MULTICAST>
為您的界面,但它應該是<BROADCAST,MULTICAST,UP,LOWER_UP>
這意味着您的界面已關閉。
您可以使用sudo ifconfig
進行確認。 該界面將不會顯示,但是如果您添加-a
,則會看到它: sudo ifconfig -a
。
因此,您可以執行以下操作:
sudo ifconfig vbox
要么
sudo ip link set vboxnet0 up
兩者都可以。
我最終通過在Virtual Box中刪除專用網絡來使專用網絡正常工作。 當我用流浪漢重新創建它時,ip config變成了:
vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.1/24 brd 192.168.50.255 scope global vboxnet0
valid_lft forever preferred_lft forever
另外,您可以通過SSH(SSH隧道)使用手動端口轉發:
ssh -L 80:127.0.0.1:80 vagrant@127.0.0.1 -p 2222
通過與虛擬機的SSH會話將主機端口80綁定到虛擬機端口80。
我的Mac上有類似的問題。 VirtualBox僅將主機用於專用網絡。 要用作內部網絡,我必須將其添加到專用網絡配置中:
"virtualbox__intnet: true"
這可能不完全適用,但是標題中的“專用網絡”將我帶到這里,而其他嘗試在Mac OS X上運行多個來賓箱的用戶可能會受益:
我使用“ private_network” ,不做任何端口轉發。 即,我通過“ project1.local”,“ project2.local”之類的主機訪問我的VM。
因此,當我嘗試啟動第二個盒子(用於LAMP的蘇格蘭威士忌/盒子ubuntu)時,我感到驚訝, 它拒絕啟動並出現錯誤 (摘錄):
"...The forwarded port to 2222 is already in use on the host machine..."
錯誤消息的建議解決方案不起作用。 即將此添加到您的Vagrantfile:
config.vm.network :forwarded_port, guest: 22, host: 1234
#Where 1234 would be a different port.
我不確定為什么會這樣,因為我之前已經運行了多次運算(但不是蘇格蘭威士忌/盒子)。 問題是,即使您使用private_network,Vagrant也會將端口轉發用於SSH。
解決方案是通過將端口添加到您的Vagrant文件中來為SSH專門設置端口:
# Specify SSH config explicitly with unique host port for each box
config.vm.network :forwarded_port,
guest: 22,
host: 1234,
id: "ssh",
auto_correct: true
注意:auto_correct可能會使非唯一端口正常工作,但我尚未對此進行測試。
現在,您可以使用專用網絡同時運行多個VM。
(感謝Aaron Aaron及其在此處發布的文章: https : //groups.google.com/forum/#!topic/ vagrant-up/ HwqFegoCXOc )
Arch(2017-01-01)遇到了相同的問題。 必須安裝net-tools
: sudo pacman -S net-tools
虛擬盒子5.1.12r112440,流浪漢1.9.1。
您已為游盪機器設置了專用網絡
如果該IP不可見,則SSH到您的無業游民的計算機上並觸發此命令
sudo /etc/init.d/networking restart
檢查也停止您的防火牆和iptables
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.