Подтвердить что ты не робот

Переадресация порта с порта 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

Однако этот параметр не работает. Я ценю, если вы направляете меня на правильный путь.

4b9b3361

Ответ 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