
Для сервера Centos, на котором размещено несколько виртуальных машин LAMP (используя VirtualBox), у меня есть один внешний IP. Я хотел бы иметь возможность использовать этот внешний IP-адрес одного хоста для адресации виртуальных машин. Например, переадресация портов на определенные машины извне:
2.2.2.2 > external IP [WAN]
10.0.0.1 > host IP (tiger) [LAN]
10.0.0.2 > virtual client #1 (zebra)
10.0.0.3 > virtual client #1 (mouse)
поэтому внешний IP пересылается через маршрутизатор на IP хоста (tiger), затем он смотрит на порт и отправляет его zebra или mouse. Оба виртуальных клиента могут (не должны) использовать одни и те же порты для Apache и т. д.
Предпочтительно, чтобы решение по маршрутизации было реализовано на хосте, так как у меня нет доступа к самому маршрутизатору (но я могу запросить конкретные настройки, если администратор сможет это осуществить)
Надеюсь, я ясно выразился.
решение1
Если вы просто хотите направить разные порты на 2.2.2.2 на разные виртуальные машины, вы можете сделать это с помощьюiptables. СмотритеРуководство по CentOSдля получения более подробной информации, включаякак сделать правила постоянными( iptables
изменение настроек только до следующей перезагрузки). Чтобы направить входящие TCP-запросы на порт 13080 на 10.0.0.1 на порт 80:
iptables -t nat -A PREROUTING -p tcp --dport 13080 -j DNAT --to 10.0.0.1:80
Если вы хотите выбрать VM в зависимости от имени хоста в HTTP-запросе, вам нужен HTTP-сервер, который будет выступать в качестве диспетчера. Вы можете использовать Apache, но для такой быстрой и простой задачи,Nginxпопулярен.