Настраивать:
Одна виртуальная машина CentOS 7.1, работающая на сервере Windows 10 Pro (предварительная версия 10074) внутри Virtualbox 5 beta 4 (также протестирована на 4.3.8). Используется nginx/1.9.0 для обслуживания статических HTML-файлов.
Виртуальная машина подключена к моей интрасети с помощью настройки NAT в Virtualbox. Я перенаправил порты 22, 80 и 443 с сервера на виртуальную машину, используя стандартные настройки Virtualbox.
Проблема:
В виртуальной машине я могу использовать curl для извлечения любой страницы ( curl localhost
возвращая ожидаемый результат). Однако, если я попытаюсь извлечь страницу с хост-сервера Windows или любого другого клиента интрасети — по IP или локальному хосту на хосте, я получу ошибки «невозможно подключиться» или «сброс подключения».
Используя netstat на виртуальной машине, я убедился, что nginx прослушивает порты 80 и 443 как на 0.0.0.0, так и на [::]. Я также проверил на сервере Windows, что порты 80 и 443 не используются, когда виртуальная машина не работает, и прослушиваются, когда она работает.
Проверяя журналы, созданные nginx, я обнаружил, что access.log содержит только мои curl-запросы, а в error.log ничего соответствующего не отображается.
Однако я также запускаю sshd на сервере (на порту 22) и могу подключиться к нему с любой машины в моей интрасети (и извне, если я перенаправляю порты на своем интернет-маршрутизаторе), поэтому я не думаю, что это проблема брандмауэра.
Попытки решения:
Я пробовал и открыть брандмауэр Windows, чтобы разрешить входящие соединения на порты 80/443, и добавить Virtualbox в исключения программы. Я также пробовал полностью отключить брандмауэр.
Я пробовал перейти на порты > 1000 на хост-сервере, но поскольку порт 22, похоже, работает нормально, это не имеет особого смысла.
К сожалению, я не могу изменить тип подключения виртуальной машины с NAT на любой другой. Virtualbox пока не поддерживает мостовое соединение адаптеров в Windows 10 (я пробовал несколько переустановок и новую бета-версию).
решение1
Мне нужно было использовать firewall-cmd
для разрешения http и https трафика через брандмауэр виртуальной машины. Более старые версии CentOS использовали бы iptables
.