Virtualbox "port forward" dari Guest to Host [ditutup]

162

Ini pengaturan saya:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

Saya menetapkan server web Apache pada Tamu, tetapi saya ingin dapat melakukan ini pada mesin Windows:

- go to the browser, type http://localhost:8000

Juga, saya mencoba mengubah jaringan saya menjadi jembatan dan saya mendapat IP baru. Tetapi ketika saya mencoba untuk melakukan http: //: 8000, ia mengatakan bahwa itu tidak dapat terhubung.

Carmen
sumber
1
Saya memiliki masalah yang sama. Ternyata OS tamu memiliki firewall aktif yang memblokir port 80.
Nicholas Shanks
149
Sebagai pengembang web yang menggunakan VirtualBox sebagai bagian dari alur kerja harian saya, tidak setuju dengan ini yang ditandai sebagai off topic. Silakan pertimbangkan untuk membuka kembali.
sparecycle
1
1. Pergi ke VM 2. ifconfig (dapatkan IP lokal - harus 10.0.2.X) 3. ssh 10.0.2.2 untuk sampai ke mesin host
Mark Roberts
@deeperDATA Mungkin dalam lingkup pekerjaan pengembang web, tetapi stack overflow tidak dimaksudkan untuk merangkum setiap bagian dari pekerjaan. Ini adalah bukti kompleksitas profesi kami bahwa persyaratannya menjangkau beberapa situs pertukaran tumpukan.
Kevin Lawrence
1
Butuh waktu lama bagi saya untuk membuatnya bekerja. Masalah kami adalah pengikatan ip aplikasi dalam sistem tamu, itu diikat ke nama mesin, yang berarti 127.0.1.1 di ubuntu. Kami mengubah ikatan menjadi 0.0.0.0. Pengaturan penerusan port: Host IP = DNS Host IP, Host Port = 8080, IP Tamu = IP eth0, Port Tamu = 8080.
lambat

Jawaban:

222

Host komunikasi jaringan -> Tamu

Sambungkan ke Tamu dan temukan alamat ip:

ifconfig 

contoh hasil (alamat ip adalah 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Buka jendela contoh Vbox -> Menu -> Adapter jaringan:

  • adaptor harus NAT
  • klik pada "port forwarding"
  • masukkan catatan baru (+ ikon)
    • untuk host ip masukkan 127.0.0.1, dan untuk alamat ip tamu Anda dapatkan dari prev. langkah (dalam kasus saya ini 10.0.2.15)
    • dalam port kasus Anda adalah 8000 - letakkan di keduanya, tetapi Anda dapat mengubah port host jika Anda mau

Buka sistem host dan coba di browser:

http://127.0.0.1:8000

atau alamat ip jaringan Anda (cari tahu di mesin host dengan menjalankan: ipconfig).

Komunikasi jaringan Guest -> Host

Dalam hal ini penerusan port tidak diperlukan, komunikasi berjalan melalui LAN kembali ke host.

Di mesin host - cari tahu alamat ip netw Anda:

ipconfig

contoh hasil:

IP Address. . . . . . . . . . . . : 192.168.5.1

Pada mesin tamu Anda dapat berkomunikasi langsung dengan tuan rumah, mis. Periksa dengan ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...
Robert Lujo
sumber
11
kedua port tidak akan menjadi 8000. Port host akan menjadi 8000 atau apa pun yang Anda inginkan, tetapi port tamu harus 80
Yasin
5
Mendapatkan dari VM ke host dalam hal ini harus dimungkinkan dengan pergi ke VM dan mendapatkan alamat IP ITS (10.0.2.15 seperti di bawah ini). Untuk sampai ke mesin host dari VM, IP adalah 10.0.2.2 (berdasarkan konvensi).
Mark Roberts
5
Jika menggunakan NAT untuk tamu ... Jika layanan yang berjalan pada host terikat hanya 127.0.0.1, maka tamu tidak dapat menggunakan ip publik dari host untuk terhubung ke layanan itu (layanan contoh: privoxy). Sebagai gantinya, Anda perlu menggunakan 10.0.2.2 seperti yang disebutkan oleh Mark, atau apa pun yang menunjukkan 'route -n' (dijalankan pada tamu) sebagai gateway default.
desm
4
Dalam hal CentOS, kita mungkin harus menonaktifkan firewall atau mengedit aturan khusus di iptable
Reddy
2
Saya telah menemukan bahwa tidak perlu menentukan Host atau alamat IP Tamu, dan Anda dapat membiarkan kotak-kotak itu kosong. Meskipun jika Anda hanya ingin terhubung dari localhost, mungkin ide yang bagus untuk menempatkan 127.0.0.1 sebagai Host.
mwfearnley
14

Itu tidak mungkin. localhostselalu default ke perangkat loopback di sistem operasi lokal.
Ketika mesin virtual Anda menjalankan sistem operasinya sendiri, ia memiliki perangkat loopback sendiri yang tidak dapat Anda akses dari luar.

Jika Anda ingin mengaksesnya mis. Di peramban, sambungkan dengan IP lokal:

http://192.168.180.1:8000

Ini hanya contoh saja, Anda dapat mengetahui IP yang sebenarnya dengan mengeluarkan ifconfigperintah pada shell di sistem operasi guest.

Chris
sumber
Saya mencoba ini juga, tetapi tidak berhasil untuk NAT dan jembatan. Log apache di tamu tidak memberikan kesalahan dan apache aktif dan berjalan di tamu.
Carmen
Apakah Anda yakin menggunakan IP yang benar? Anda dapat memverifikasi itu dengan mencoba mengakses alamat dari dalam mesin virtual. Jika gagal, Anda salah menggunakan IP yang salah atau apache Anda tidak diatur untuk mendengarkan pada port 8080.
Chris
Bekerja untuk saya - terima kasih!
Matt Frear
Bekerja untuk saya juga. Sebelum mengganti "localhost" dengan alamat IP OS host, saya selalu mendapat "Server menolak kunci Anda" dan "Akses ditolak" tanpa penjelasan di /var/log/auth.log meskipun LogLevel DEBUG3 di / etc / ssh / sshd_config
VR
@ Chris apakah ini berarti bahwa pada host, dengan entri virtual host seperti mysite.localhosttidak akan dapat diakses oleh mesin Guest, karena saya harus merujuk ke Host menggunakan alamat IP saja?
danjah