Verbindung von außerhalb der Vagrant-Box mit privatem Netzwerk abgelehnt

8

Ich habe CentOS 6 auf einer Vagabundbox mit einer privaten Netzwerk-IP eingerichtet. Ich kann mit der IP in die Box ssh, damit das funktioniert. Beim Einrollen wird jedoch eine Verbindung an Port 80 abgelehnt. Es gibt einen sehr einfachen Nginx, der seine Standard-Begrüßungsseite enthält. Das Einrollen aus der Box heraus funktioniert.

Vagrant.configure("2") do |config|
  config.vm.box = "Centos-6.3-minimal"
  config.vm.box_url = "https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box"

  config.vm.network :private_network, ip: "192.168.33.44"
  config.vm.hostname = "local.example.com"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
end

Hier sind einige Dinge, die ich versucht habe:

  • Wechsel zur Portweiterleitung 80 -> 8080. Curling on localhost:8080hängt einfach da.
  • Versuch einer anderen IP-Adresse. Kein Unterschied.
  • Öffnen eines python -m SimpleHTTPServerauf dem Server, von dem bekannt ist, dass er ihn abhört 0.0.0.0. Die Verbindung wird immer noch abgelehnt.

Diese Dinge funktionieren bekanntermaßen:

  • SSHing auf dem Server unter Verwendung der angegebenen privaten Netzwerk-IP funktioniert.
  • Das Einrollen aus der Box heraus funktioniert.
  • Das gleiche Setup funktioniert auf einem realen Server.

Ich habe Guest Additions installiert, aber ihre Versionen unterscheiden sich bei Gast und Host. Das könnte das Problem sein. Aber warum funktioniert SSH und nicht Port 80? Dies ist die Ausgabe, wenn ich dies tue vagrant reload: https://gist.github.com/magnars/496e553f07ad5c770c54

Aktualisieren

Dies funktioniert zwar nicht:

config.vm.network :forwarded_port, guest: 80, host: 8080

Das macht:

ssh -f [email protected] -L 8080:127.0.0.1:80 -N

Irgendwelche Ideen?

Magnar
quelle

Antworten:

4

Obwohl es viele Dinge gibt, die falsch sein könnten, ist die Firewall im Gast die erste, die überprüft wird: Es könnte so einfach sein, wie eine Regel für Port 22, aber nicht für Port 80.

kdt
quelle
Danke für den Vorschlag! Aber ist dies nicht daran gehindert, dass genau dasselbe Setup (bereitgestellt) auf einem echten Server einwandfrei funktioniert?
Magnar
hängt davon ab, was Sie mit dem gleichen Setup meinen, nehme ich an. Denken Sie daran, dass Vagrant-Boxen nicht mit Neuinstallationen des Upstream-Betriebssystems identisch sind.
kdt
Ah ja, das ist natürlich ein guter Punkt. Auf der von mir verwendeten Minimal-Centos-Box wird möglicherweise eine Firewall ausgeführt. Wie würde ich das herausfinden?
Magnar
Okay, ich sehe, dass iptables eine gemeinsame Centos-Firewall ist, die mit allen Versionen geliefert wird. Ich schaue mir das an.
Magnar
1
Tatsächlich. In meiner Minimal-Centos-Box wurden Iptables nur an Port 22 geöffnet. Auf dem Server-Betriebssystem gibt es so etwas nicht. Danke für Ihre Hilfe!
Magnar
1

Das gleiche Problem wurde gelöst, indem die Firewall im Gasthost deaktiviert wurde

sudo service iptables stop
sudo service ip6tables stop 

Und Sie können verwenden iptables --list, um zu überprüfen

[vagrant@c6401 ~]$ sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   
zhaoqing
quelle