Как подключить к гостю VM от хост-системы?

Постараться не нуждаться в специальном синтаксисе оболочки и избегать проблем с вещами как sudo, использовать env:

env MYVAR=value sh -c "blah"
15
18.05.2014, 07:56
3 ответа

Выпуск № 1 - типы сетевого взаимодействия VM

Существует 3 режима сетей:

  1. NAT
  2. Хост только
  3. Соединенный мостом

Детали об установке их

Когда использовать каждого?

  • 1.: Для разработки Facebook/веб-приложений, которые находятся на других серверах
  • 2.: Если Вы хотите создать свое собственное приложение и протестировать его от хоста VirtualBox (не только гость VM)
  • 3.: Если Вы хотите создать приложение и протестировать его от других систем на LAN

Выпуск № 2 - блокирование брандмауэра?

В зависимости от которого дистрибутива Вы используете, брандмауэр мог бы блокировать Ваш веб-браузер от доступа к Вашему экземпляру Apache. Это имело бы смысл, учитывая, Вы можете проверить с помощью ping-запросов систему, но не получить доступ к ней через порт 80, который является портом, на котором слушает Apache.

временно отключение его

На CentOS Вы используете эту команду для отключения его.

$ /etc/init.d/iptables stop

проверьте что слушание Apache

Можно также подтвердить, что это слушает на этом порте.

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

подтвердите брандмауэр прочь

Брандмауэр может быть подтвержден, что это широко открытое.

$ 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      

Если это решает Вашу проблему затем, можно постоянно добавить правило, которое позволяет трафику на пути порт TCP 80.

добавление правила для порта TCP 80

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

Примечание: Это заставит правило сохраниться между перезагрузками.

брандмауэр принимает порт TCP 80

Система, которая имеет порт 80 открытых, выглядела бы примерно так:

$ 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         

Выпуск № 3 - слушание Apache?

В вышеупомянутой проблеме мы видели, что Apache слушал, но иногда это неправильно конфигурируется так, чтобы это только послушало на 1 IP-адресе, или что это слушает на другом сетевом интерфейсе. Команда netstat может использоваться для проверения дважды этого, а также рассмотрения конфигурационных файлов Apache.

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

Это показывает, что Apache слушает во всех интерфейсах (IP 0.0.0.0).

Я не повторю, какой ответ @Lekensteyn, который охватывает эту конкретную проблему более подробно здесь.

Ссылки

14
27.01.2020, 19:50
  • 1
    теперь я полностью смущен. Я уже получил VM в режиме моста, я могу проверить с помощью ping-запросов VM от хоста, но я не могу добраться до того же IP-адреса от веб-браузера на хосте даже при том, что VM установили апача и запустился, я должен видеть it worked! апачская страница. –  oshirowanen 11.01.2014, 18:41
  • 2
    @oshirowanen - благодарит то, чтобы не быть разбитым, поскольку мы пытаемся решить вопрос 8-). Удостоверьтесь, что Apache работает на CentOS, /etc/init.d/httpd status, должен показать выполнение. –  slm♦ 11.01.2014, 19:22
  • 3
    я остановил брандмауэр на VM и я могу теперь видеть страницу IP по умолчанию при использовании веб-браузера на хост-машине для доступа к URL VM!!! –  oshirowanen 11.01.2014, 19:22
  • 4
    @oshirowanen - WOOHOO! Хорошо, таким образом, целой проблемой был просто брандмауэр, я добавлю команду для добавления правила к брандмауэру, можно также сделать это постоянным w/эта команда, /sbin/service iptables save. –  slm♦ 11.01.2014, 19:24
  • 5
    Да! Я сделал минимальную установку CentOS, и я не должен был предполагать, что брандмауэр был отключен по умолчанию... Честно говоря, брандмауэр даже не прибыл по моему мнению. Спасибо за то, что провели Ваше время для помощи. –  oshirowanen 11.01.2014, 19:27

Ваша установка Apache, вероятно, настроена для слушания на localhost только. Можно проверить что путем выполнения в госте:

$ 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

Если это говорит 0.0.0.0:80, это слушает во всех интерфейсах. В Вашем случае я ожидал бы 127.0.0.1:80 вместо этого. Для решения этого отредактируйте конфигурацию Apache (где-нибудь в /etc/httpd/conf/) и изменение:

Listen 127.0.0.1:80

кому:

Listen 80

Можно также использовать nmap проверить доступные сервисы на Вашу машину. Это должно быть похожим:

$ 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
2
27.01.2020, 19:50

В CentOS 7 firewalld заменил iptables в качестве межсетевого экрана по умолчанию.

Мне пришлось использовать

systemctl stop firewalld

, чтобы приостановить брандмауэр, чтобы проверить соединение от хоста к CentOS VM.

Подробнее см. Здесь: https://stackoverflow.com/questions/24756240/how-can-i-use-iptables-on-centos-7

2
27.01.2020, 19:50

Теги

Похожие вопросы