Переадресация порта с порта 80 порта 80 на порт 80 VirtualBox не работает
Я прочитал руководство по перенаправлению портов VirtualBox, похожие вопросы на этом сайте и других сайтах, но не смог найти решение.
UFW включен в гостевой ОС (Ubuntu), порты 80 и 22 открыты. Я могу отправить ssh с хоста на ubuntu и получить доступ к сайту ubuntu из браузера хоста.
В гостевом режиме я настраиваю адаптеры Nat и hostonly (vboxnet3).
Также открыт порт 80 маршрутизатора (192.168.1.90)
Гость ip - 192.168.70.10
Итак, в гостевых настройках > NAT > переадресация портов я поставил:
TCP host-ip: 192.168.1.90 host-port: 80 guest-ip: 192.168.70.10 guestost-port: 80
Однако этот параметр не работает. Я ценю, если вы направляете меня на правильный путь.
Ответы
Ответ 1
Как отметил Уильям, ОС Linux/Unix не позволит процессу прослушивать порты < 1024, если они не выполняются как root. Вы можете запустить VirtualBox как root, хотя я читал ужасные предупреждения об этом. Вероятно, это ужасно неуверенно.
Вместо этого настройте Apache2 на хост-системе, чтобы прослушивать порт 80 (он должен быть настроен для этого уже), но вместо того, чтобы обслуживать веб-сайт на главной машине, попросите его прокси-трафик на более высокий порт - скажем, 8080 - на хосте.
Затем, перейдите в VirtualBox к более высокому порту порта 80 гостевой ОС.
Настройка Apache будет примерно такой:
-
Установите модуль прокси-сервера HTTP
a2enmod proxy_http
-
Убедитесь, что /etc/apache2/ports.conf
имеет в нем директиву Listen 80
-
Добавить другой сайт в /etc/apache2/sites-available
или изменить сайт по умолчанию (или просто пощекотать его в ports.conf
)
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
-
bounce apache
service apache2 restart
Настройка VirtualBox будет host port: 8080, guest port: 80
.
Трафик будет идти:
client --> host:80 --> Apache --> host:8080 ---> vbox NAT ----> guest:80
Это похоже на туннель William ssh, но не требует ручного вмешательства (повторного ввода пароля) каждый раз, когда хост перезагружается.
Ответ 2
Вот еще один подход, который может работать, если вам неудобно запускать VirtualBox в качестве пользователя root. Вы можете использовать SSH для настройки переадресации портов с хост-порта 80 на некоторый не ограниченный порт (в приведенном ниже примере я использую порт 8080), который затем будет перенаправлен на гостевой порт 80. Convoluted, но он работает.
- Переслать с хост-порта 8080 в гостевой порт 80. Убедитесь, что он работает, указав браузер на порту 8080 на хост-машине.
- Убедитесь, что sshd запущен на вашем хосте. В Mac OS X перейдите к
System Preferences -> Internet & Wireless -> Sharing
и убедитесь, что отмечен Remote Login
.
-
Станьте root на своем хосте
$ sudo su -
-
Передать хост-порт 80 на хост-порт 8080 с использованием SSH (адрес привязки \*
делает порт доступным для всех интерфейсов).
# ssh [email protected] -L \*:80::8080
Обратите внимание, что он попросит вас войти в систему с любыми учетными данными, которые вы используете для вашего имени, поэтому он, скорее всего, попросит ваш пароль и когда вы добьетесь успеха, на самом деле заходите в систему.
Теперь вы можете поразить порт 80 на хост-машине и увидеть ту же службу, что и порт 8080 на хост-машине, например порт 80 на гостевой ОС.
Если вы не хотите, чтобы другие в вашей сети могли ударить порт 80 на этом компьютере, но все же хотите получить доступ к нему из браузера вашей хост-системы, привяжите порт к localhost
:
# ssh [email protected] -L localhost:80::8080
Ответ 3
Согласно http://www.virtualbox.org/manual/ch06.html#natforward
Пересылка портов хоста < 1024 невозможно:
На хостах на базе Unix (например, Linux, Solaris, Mac OS X) невозможно подключиться к портам ниже 1024 из приложений, которые не выполняются с помощью root. В результате, если вы попытаетесь настроить такую переадресацию портов, VM откажется запускать.
Можно запустить VirtualBox как root, что позволит вам переслать хост-порты < 1024, поэтому, если вы непреклонны в этом с помощью VirtualBox, вы можете стать root и выполнить VirtualBox следующим образом:
$ sudo su -
# VirtualBox