Bagaimana menghubungkan ke VM tamu dari sistem host?


15

Saya memiliki pengaturan server web VM dan saya telah menginstal dan memulai Apache. VM memiliki antarmuka jaringan yang dijembatani dan dapat di-ping dari host menggunakan 192.168.0.2.

Namun, jika saya mengetikkan alamat IP yang sama ke dalam browser di mesin host, saya berharap untuk melihat halaman default apache yang dihasilkan pada VM, tetapi sebaliknya, saya mendapatkan can't connect to 192.168.0.2di browser mesin host.

Saya jelas telah melewatkan sesuatu. Adakah yang tahu apa yang saya lewatkan atau lakukan salah?

Output dari VM netstat -tnlp

tcp     0     0 0.0.0.0:22        0.0.0.0:*     LISTEN     950/sshd
tcp     0     0 127.0.0.1:25      0.0.0.0:*     LISTEN    1026/master
tcp     0     0 :::22                  :::*     LISTEN     904/sshd
tcp     0     0 ::1:25                 :::*     LISTEN     980/master

Gambaran kasar tentang apa yang saya pikirkan akan terlihat seperti aktivitas / konektivitas jaringan.

                               masukkan deskripsi gambar di sini


Jika Anda hanya melihat :::80, maka Apache hanya mendengarkan koneksi IPv6. Sudahkah Anda mencoba memeriksa Listenarahan Anda ?
Lekensteyn

Coba tambahkan -pbendera untuk netstatmemverifikasi bahwa Anda benar-benar mendengarkan Apache pada port 80, dan bukan layanan lain. Bisakah kamu lari curl localhostdari tamu? Apa yang grep -C3 -rni Listen /etc/httpd/ditunjukkan?
Lekensteyn

Tolong saya, jika petunjuk arah ini berfungsi, tuliskan itu sebagai jawaban, karena Anda akan memiliki akses ke tangkapan layar. Pertanyaan ini muncul dalam jumlah yang wajar, saya tidak percaya solusinya telah ditangkap secara akurat.
slm

Jawaban:


14

Masalah # 1 - tipe jaringan VM

Ada 3 mode jaringan:

  1. NAT
  2. Tuan Rumah Saja
  3. Dijembatani

Detail tentang pengaturannya

Kapan harus menggunakan masing-masing?

  • # 1 : Untuk pengembangan aplikasi Facebook / web yang ada di server lain
  • # 2 : Jika Anda ingin membangun aplikasi Anda sendiri, dan mengujinya dari host VirtualBox (bukan hanya VM tamu)
  • # 3 : Jika Anda ingin membangun aplikasi dan mengujinya dari sistem lain di LAN

Masalah # 2 - pemblokiran firewall?

Bergantung pada distro mana yang Anda gunakan, firewall mungkin memblokir browser web Anda dari mengakses instance Apache Anda. Ini masuk akal mengingat Anda dapat melakukan ping sistem, tetapi tidak mengaksesnya melalui port 80, yang merupakan port tempat Apache mendengarkan.

untuk sementara menonaktifkannya

Pada CentOS Anda menggunakan perintah ini untuk menonaktifkannya.

$ /etc/init.d/iptables stop

periksa apakah Apache mendengarkan

Anda juga dapat mengonfirmasi bahwa ia mendengarkan di port ini.

$ netstat -antp | grep :80 | head -1 | column -t
tcp  0  0  :::80  :::*  LISTEN  3790/httpd

konfirmasi firewall tidak aktif

Firewall dapat dipastikan terbuka lebar.

$ iptables -L
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      

Jika ini menyelesaikan masalah Anda, maka Anda dapat secara permanen menambahkan aturan yang memungkinkan lalu lintas masuk melalui port TCP 80.

menambahkan aturan untuk port TCP 80

$ /etc/init.d/iptables restart
$ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ /etc/init.d/iptables save

CATATAN: Ini akan membuat aturan tetap ada di antara reboot.

firewall menerima port TCP 80

Sistem yang memiliki port 80 terbuka akan terlihat seperti ini:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:8834 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Masalah # 3 - Apache mendengarkan?

Dalam masalah di atas kita melihat bahwa Apache mendengarkan, tetapi kadang-kadang Apache tidak dikonfigurasi sehingga hanya mendengarkan pada 1 alamat IP, atau mendengarkan pada antarmuka jaringan yang berbeda. Perintah netstatini dapat digunakan untuk memeriksa ulang ini serta meninjau file konfigurasi Apache.

$ netstat -anpt | grep :80 | column -t
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  1750/httpd

Ini menunjukkan bahwa Apache mendengarkan pada semua antarmuka (IP 0.0.0.0).

Saya tidak akan mengulangi apa jawaban @ Lekensteyn yang mencakup masalah khusus ini lebih detail di sini.

Referensi


sekarang saya benar-benar bingung. Saya sudah mendapatkan VM dalam mode bridged, saya dapat melakukan ping VM dari host tetapi saya tidak bisa mendapatkan alamat IP yang sama dari browser web pada host meskipun VM telah apache terinstal dan mulai, saya akan melihat yang it worked!halaman apache.
oshirowanen

@oshirowanen - terima kasih karena tidak frustrasi ketika kami mencoba dan menyelesaikan masalah 8-). Pastikan Apache berjalan pada CentOS /etc/init.d/httpd status,, harus menampilkan running.
slm

1
Saya menghentikan firewall pada VM dan sekarang saya dapat melihat halaman IP default ketika menggunakan browser web pada mesin host untuk mengakses url dari VM !!!
oshirowanen

1
@oshirowanen - WOOHOO! OK jadi seluruh masalahnya hanya firewall, saya akan menambahkan perintah untuk menambahkan aturan ke firewall Anda, Anda juga dapat membuatnya permanen dengan perintah ini /sbin/service iptables save,.
slm

Iya! Saya melakukan instalasi minimal CentOS dan saya seharusnya tidak berasumsi bahwa firewall dinonaktifkan secara default ... Sejujurnya, firewall bahkan tidak muncul di pikiran saya. Terima kasih telah meluangkan waktu Anda untuk membantu.
oshirowanen

2

Instalasi Apache Anda kemungkinan dikonfigurasi untuk mendengarkan di localhost saja. Anda dapat memverifikasi itu dengan menjalankan di tamu Anda:

$ netstat -tnl | grep :80
Proto Recv-Q Send-Q Local Address      Foreign Address  State
tcp        0      0 0.0.0.0:80         0.0.0.0:*        LISTEN
tcp6       0      0 :::80              :::*             LISTEN

Jika dikatakan 0.0.0.0:80, ia mendengarkan semua antarmuka. Dalam kasus Anda, saya harapkan 127.0.0.1:80sebagai gantinya. Untuk mengatasi ini, edit konfigurasi Apache Anda (di suatu tempat di /etc/httpd/conf/) dan ubah:

Listen 127.0.0.1:80

untuk:

Listen 80

Anda juga dapat menggunakan nmapuntuk memverifikasi layanan yang tersedia di mesin Anda. Seharusnya terlihat seperti:

$ nmap 192.168.0.2

Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-11 15:22 CET
Nmap scan report for localhost (192.168.0.2)
Host is up (0.0036s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.