Доступ к веб-серверу LAMP, который находится за виртуальной машиной Ubuntu, действующей в качестве брандмауэра

В настоящее время у меня есть две виртуальные машины, настроенные следующим образом:

                               /-----------------------\
      /-----------------\      |  Ubuntu VM            |      /---------------\
      |   Workstation   |------|  eth1 : 192.168.0.x   |      |  Web Server   |
      |   192.168.0.x   |      |  eth0 : 169.254.71.x  |------| 169.254.71.x  |
      \-----------------/      |                       |      \---------------/
                               \-----------------------/

И у меня возникли проблемы с доступом к веб-серверу с моего локального компьютера.

Ubuntu настроен через virtualbox, чтобы иметь 2 сетевых адаптера, первый для внутренней сети, а второй для мостового соединения. Это дает мне два проводных соединения один раз внутри виртуальной машины, и я устанавливаю первое (соответствующее внутренней сети) как "только локальная ссылка", а второе как автоматический DHCP.

Веб-сервер работает под управлением операционной системы linux LAMP под ключ, сетевой адаптер настроен на внутреннюю сеть, имя сети совпадает с именем внутренней сети ubuntu.

Я следовал этому руководству (переключая eth0 и eth1, где это уместно), чтобы позволить мне пинговать с веб-сервера во внешний мир. Я могу пинговать как с локального компьютера, так и с любого веб-сайта в Интернете с веб-сервера.

Теперь моя проблема возникает из-за попытки сделать обратное выше. Я пытался безрезультатно в течение достаточно долгого времени, используя такие ресурсы, как этот и несколько других, чтобы я мог подключаться к веб-серверу с моего локального компьютера. Когда я пытаюсь пропинговать адрес 169.254.71.x моего веб-сервера, он не подключается.

Я понимаю, что моя проблема, вероятно, связана с настройкой NAT на компьютере с Ubuntu или с настройкой переадресации портов на компьютере с Ubuntu, но я не знаю, как решить эти проблемы.

1 ответ

Таким образом, я в конечном итоге выяснил свою проблему, просто опубликовав ответ для кого-либо еще, потенциально имеющего проблему.

Команда:

iptables -t nat -A PREROUTING -d outerip -p tcp --dport 80 -j DNAT --to webip

Было то, что в конечном итоге позволило ему работать. Это правило добавляет таблицу предварительной маршрутизации, чтобы позволить соединениям с внешнего ip брандмауэра, если они являются tcp-пакетами, предназначенными для порта 80, чтобы они напрямую передавались через NAT через брандмауэр к IP-адресу веб-сервера.

Также следует отметить, что я изменил внутренний адаптер моего брандмауэра с "ссылка только локальная" на "общий с другими компьютерами". Это назначило этому адаптеру eth адрес 10.42.0.x вместо 169.254.xx не уверен, исправит ли это какую-либо функциональность, другой пользователь предложил мне убрать адресное поле 169.254.xx.

Другие вопросы по тегам