2017-08-06 51 views
0

我正在測試nginx設置與vagrant,但我似乎缺少一些細節,因爲當我嘗試從主機到達nginx靜態ip時,連接超時。我的流浪文件:Vagrant - 專用網絡端口轉發行爲

# -*- mode: ruby -*- 
    # vi: set ft=ruby : 
    $script = <<-SCRIPT 
    sudo apt-get -y update 
    sudo apt-get install -y nginx 
    SCRIPT 

    ################################### 
    Vagrant.configure("2") do |config| 
    # webserver server 
    config.vm.define "webserver" do |webserver| 
     webserver.vm.box = "bento/ubuntu-16.04" 
     webserver.ssh.insert_key = false 
     webserver.vm.network "private_network", ip: "192.168.10.101" 
     webserver.vm.network "forwarded_port", guest: 80 , host: 4000, host_ip: "127.0.0.1" 
     webserver.vm.hostname = "webserver" 
     webserver.vm.provision "shell", inline: "sed 's/127\.0\.0\.1.*webserver.*/192\.168\.10\.101 webserver/' -i /etc/hosts" 
     webserver.vm.provider "virtualbox" do |vb| 
     # Customize VM 
     vb.name = "webserver" 
     vb.memory = "1024" 
     vb.cpus = "2" 
     end 
    end 
end 

我能夠達到nginx的六本地主機:4000,但如果我這樣做http://192.168.10.101:4000,連接超時。我也試圖阻止如下的防火牆:

[email protected]:~$ sudo ufw disable 
Firewall stopped and disabled on system startup 

沒有幫助。有關於此的任何指導?

編輯 - 1

我在https://www.vagrantup.com/docs/virtualbox/networking.html閱讀文檔後取出VirtualBox虛擬專用網絡。然而,這個問題有點令人困惑,因爲現在我可以訪問nginx測試頁面: http://192.168.10.101但不是在http://192.168.10.101:4000。雖然我可以訪問http://localhost:4000。可能是我錯過了一些東西。

編輯 - 2

然VM中的蟒蛇simplehttpserver和轉發端口:

python -m SimpleHTTPServer 8000 

Vagrantfile

dbserver.vm.network "forwarded_port", guest: 8000 , host: 5000, host_ip: "127.0.0.1" 

但我可以訪問我的測試頁:

http://192.168.10.102:8000/

但不能作爲

http://192.168.10.102:5000/

所以這讓我覺得有一些規則,讓我來訪問我的VirtualBox的端口,而不會在專用網絡上實際的端口轉發。

$> netstat -nr 
    Routing tables 

    Internet: 
    Destination  Gateway   Flags  Refs  Use Netif Expire 
    default   192.168.0.1  UGSc   40  0  en0 
    127    127.0.0.1   UCS    0  0  lo0 
    127.0.0.1   127.0.0.1   UH    4 57934  lo0 
    169.254   link#4    UCS    0  0  en0 
    192.168.0   link#4    UCS    0  0  en0 
    192.168.0.1/32  link#4    UCS    1  0  en0 
    192.168.0.1  c0:a0:bb:c6:f5:58 UHLWIir  48  6051  en0 1188 
    192.168.0.101/32 link#4    UCS    0  0  en0 
    192.168.10   link#17   UC    2  0 vboxnet 
    192.168.10.102  8:0:27:1b:d5:98 UHLWI   0  73 vboxnet 586 
    224.0.0/4   link#4    UmCS   2  0  en0 
    224.0.0.251  1:0:5e:0:0:fb  UHmLWI   0  0  en0 
    239.255.255.250 1:0:5e:7f:ff:fa UHmLWI   0  1067  en0 
    255.255.255.255/32 link#4    UCS    0  0  en0 
+0

儘量評論'forwarded_port'線,做'無業遊民up'。並驗證你是否能夠訪問? – Haranadh

+0

我做了,它現在只轉發端口22。 ==> webserver:轉發端口... webserver:22(guest)=> 2222(host)(adapter 1)。我仍然可以訪問端口80上的nginx測試頁面。如果您能夠修復,我似乎錯過了有關轉發機制 –

+0

的一些觀點,這非常棒。如果仍然存在問題,請告訴我,但我需要在本地系統中執行該設置並嘗試。 :)我會盡力做到這一點,並更新你,如果你仍然有問題。 – Haranadh

回答

1

試圖分析和發現在vagrant site.

即使他們給出了Defining a Forwarded Port,他們也提到免責聲明爲以下內容。

對於大多數提供者,默認情況下轉發的端口綁定到所有接口。這意味着網絡上的其他設備可以訪問轉發的端口。如果您想限制訪問,請參閱下面的guest_ip和host_ip設置。

virtualbox提供者似乎在這種情況下做的伎倆。它是默認訪客機器端口。 我也覺得這個forwarded_port選項對網絡配置沒有效果。


我試着在我的機器上給出上述vagrant文​​件的相同設置。

我的意見:在我的本地vagrant你流浪的文件沒有安裝nginx

  • 腳本的一部分。
  • 我嘗試在我的本地vagrant中手動安裝nginx,並使其運行。
  • 我可以從主機瀏覽器看到客戶機的nginx主頁。
  • 在默認80端口上運行的guest-machine nginx。在主機上可以從端口80本身訪問。從鏈接

結論是:

對於大多數供應商,默認綁定到所有接口轉發端口。


編輯: 甚至試圖用樣品蟒蛇服務器在運行guest-machine和測試,可以在不安裝流浪漢任何fwding端口訪問蟒蛇,網絡服務器。

以下是蟒蛇服務器輸出的無業遊民:

(envflask) [email protected]:~/test$ ls 
flasktest.py 
(envflask) [email protected]:~/test$ python flasktest.py 
Starting RestServer at port 9595 
* Running on http://0.0.0.0:9595/ (Press CTRL+C to quit) 
127.0.0.1 - - [08/Aug/2017 13:35:01] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [08/Aug/2017 13:35:16] "GET/HTTP/1.1" 200 - 
+0

@ f-z-n:如果我的回答澄清了您的問題,並且您喜歡我的回答,請接受。 – Haranadh

+0

謝謝@haranadh。這是有道理的。接受的答案 –