Ana sistemden konuk VM'ye nasıl bağlanır?


15

Bir VM web sunucusu kurulumum var ve Apache'yi yükledim ve başlattım. VM'nin köprülü bir ağ arabirimi vardır ve 192.168.0.2 kullanılarak ana bilgisayardan pinglenebilir.

Ancak, aynı IP adresini ana makinedeki tarayıcıya yazarsam, VM'de oluşturulan varsayılan apache sayfasını görmeyi bekliyordum, ancak bunun yerine can't connect to 192.168.0.2ana makine tarayıcısına giriyorum.

Bir şeyi açıkça kaçırdım. Neyi kaçırdığımı veya yanlış yaptığımı bilen var mı?

VM'den çıktı 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

Düşündüğüm şeyin kaba çizimi / ağ etkinliği / bağlanabilirliği.

                               resim açıklamasını buraya girin


Yalnızca görürseniz :::80, Apache yalnızca IPv6 bağlantılarını dinliyor. ListenDirektiflerinizi kontrol etmeyi denediniz mi?
Lekensteyn

Apache'nin başka bir hizmeti değil, 80 numaralı bağlantı noktasını gerçekten dinlediğini doğrulamak için -pbayrağı eklemeyi deneyin netstat. Misafirden kaçabilir misin curl localhost? Ne grep -C3 -rni Listen /etc/httpd/gösteriyor?
Lekensteyn

Bana bir iyilik yap, eğer bu talimatlar işe yararsa, ekran görüntülerine erişebileceğin için bunu bir cevap olarak yaz. Bu soru adil bir şekilde ortaya çıkıyor, çözümünün doğru bir şekilde ele geçirildiğine inanmıyorum.
slm

Yanıtlar:


14

Sorun # 1 - VM ağ türleri

3 ağ modu vardır:

  1. NAT
  2. Yalnızca Ana Bilgisayar
  3. Köprülü

Kurulum hakkında ayrıntılar

Her biri ne zaman kullanılır?

  • # 1 : Diğer sunucularda bulunan Facebook / web uygulamalarının geliştirilmesi için
  • # 2 : Kendi uygulamanızı oluşturmak ve VirtualBox ana bilgisayarından test etmek istiyorsanız (yalnızca misafir VM değil)
  • # 3 : Bir uygulama oluşturmak ve LAN'daki diğer sistemlerden test etmek istiyorsanız

Sorun # 2 - Güvenlik duvarı engelleme?

Hangi dağıtımı kullandığınıza bağlı olarak, güvenlik duvarı web tarayıcınızın Apache örneğinize erişmesini engelliyor olabilir. Sisteme ping atabildiğiniz göz önüne alındığında bu mantıklı olacaktır, ancak Apache'nin dinlediği bağlantı noktası olan 80 numaralı bağlantı noktasından erişemezsiniz.

geçici olarak devre dışı bırakma

CentOS'ta bu komutu devre dışı bırakmak için kullanırsınız.

$ /etc/init.d/iptables stop

Apache'nin dinlediğini kontrol et

Ayrıca bu bağlantı noktasını dinlediğini de doğrulayabilirsiniz.

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

güvenlik duvarının kapalı olduğunu onayla

Güvenlik duvarının tamamen açık olduğu doğrulanabilir.

$ 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      

Bu sorununuzu çözerse, 80 numaralı TCP bağlantı noktası üzerinden trafiğe izin veren bir kural kalıcı olarak ekleyebilirsiniz.

TCP bağlantı noktası 80 için kural ekleme

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

NOT: Bu, kuralın yeniden başlatmalar arasında kalmasını sağlar.

güvenlik duvarı 80 numaralı TCP bağlantı noktasını kabul ediyor

Bağlantı noktası 80'in açık olduğu bir sistem şöyle görünür:

$ 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         

Sayı # 3 - Apache dinliyor musunuz?

Yukarıdaki sayımızda Apache'nin dinlediğini gördük, ancak bazen yalnızca 1 IP adresini dinleyecek veya farklı bir ağ arayüzünde dinleyecek şekilde yanlış yapılandırılmış olduğunu gördük. Komut netstat, bunu iki kez kontrol etmek ve Apache yapılandırma dosyalarını incelemek için kullanılabilir.

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

Bu, Apache'nin tüm arabirimleri dinlediğini gösterir (IP 0.0.0.0).

@ Lekensteyn'in bu konuyu daha ayrıntılı olarak ele alan cevabını tekrarlamayacağım .

Referanslar


şimdi tamamen kafam karıştı. VM'yi zaten köprülü modda aldım, VM'yi ana bilgisayardan ping atabilirim, ancak VM apache yüklü ve başlatılmış olsa bile ana bilgisayardaki web tarayıcısından aynı IP adresine ulaşamıyorum, görmeliyim it worked!apache sayfası.
oshirowanen

@oshirowanen - sorunu çözmeye çalıştığımız için hayal kırıklığına uğramadığınız için teşekkür ederiz 8-). Apache'nin CentOS üzerinde çalıştığından emin olun, çalıştığını /etc/init.d/httpd statusgöstermelidir.
slm

1
Sanal makinede güvenlik duvarını durdurdum ve ana makinede sanal makinenin URL'sine erişmek için bir web tarayıcı kullanırken varsayılan IP sayfasını görebiliyorum !!!
oshirowanen

1
@oshirowanen - WOOHOO! Tamam, tüm sorun sadece güvenlik duvarıydı, kuralı güvenlik duvarınıza eklemek için bir komut ekleyeceğim, ayrıca bu komutla kalıcı hale getirebilirsiniz /sbin/service iptables save.
slm

Evet! CentOS'un asgari bir yüklemesini yaptım ve güvenlik duvarının varsayılan olarak devre dışı bırakıldığını varsaymamalıydım ... Dürüst olmak gerekirse, güvenlik duvarı aklıma bile gelmedi. Yardım etmek için zaman ayırdığınız için teşekkür ederiz.
oshirowanen

2

Apache kurulumunuz muhtemelen yalnızca yerel ana bilgisayarları dinleyecek şekilde yapılandırılmıştır. Misafirinizde çalışarak bunu doğrulayabilirsiniz:

$ 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

O derse 0.0.0.0:80, tüm arayüzleri üzerinde dinler. Sizin durumunuzda 127.0.0.1:80bunun yerine beklerim. Bunu çözmek için Apache yapılandırmanızı (bir yerlerde /etc/httpd/conf/) düzenleyin ve değiştirin:

Listen 127.0.0.1:80

için:

Listen 80

nmapMakinenizdeki kullanılabilir hizmetleri doğrulamak için de kullanabilirsiniz . Şöyle görünmelidir:

$ 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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.