Перенаправить весь трафик на указанные хосты за NAT

Перенаправить весь трафик на указанные хосты за NAT

Есть ли возможность перенаправить весь трафик на указанные хосты за NAT?

Например, у меня есть сервер, домен "mydomain.com" и 3 хоста за NAT. Я хочу настроить 3 поддомена:

host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
и каждый из них перенаправляет все порты на указанный хост в локальной сети.

Это перенаправление должно обеспечивать такую ​​функциональность:
http://host1.mydomain.com(можно сделать с помощью apache)
ssh[email protected](???)
и другие протоколы на разных портах

Спасибо за любую помощь.

решение1

Это можно сделать для HTTP и HTTPS с помощью «обратного прокси», который проверяет информацию заголовка хоста в HTTP-запросе, получает соответствующий контент и возвращает его. ISA (Internet Security and Acceleration) от Microsoft может это сделать, так же как и apache/squid на Linux.

Для всех остальных портов у вас возникнут трудности, поскольку большая часть трафика не содержит желаемого имени хоста, а только целевой IP-адрес (например: «Я хочу подключиться по SSH к 1.2.3.4» вместо «Я хочу подключиться по SSH к host1.mydomain.com»).

Сопоставление определенных внешних портов с внутренними портами выполняется просто (порт 22 -> хост1:22, порт 23 -> хост2:22, порт 24 -> хост3:22 и т. д.), и иногда этого достаточно.

Если вам действительно нужно сопоставить все порты с разными внутренними серверами, вам понадобится несколько внешних IP-адресов, которые может предоставить большинство интернет-провайдеров (по крайней мере, если у вас есть бизнес-подключение).

решение2

апачский mod_proxy?

решение3

Нет, невозможно сделать переадресацию портов на основе имени DNS. Доменное имя не является частью IP-пакета, поэтому ваш маршрутизатор не может использовать его для различения входящих соединений.

Когда удаленный хост подключается к host1.mydomain.com, он преобразует это имя в IP-адрес, который помещается в IP-пакет. Если host2.mydomain.com преобразуется в тот же IP-адрес, то сконструированный пакет будет выглядеть точно так же, как для host1.mydomain.com.

По этой причине это возможно, если на вашем сервере настроено несколько IP-адресов.

Apache может различать входящее доменное имя, но это на уровне приложения. В HTTP 1.1 браузер будет отправлять доменное имя в заголовках HTTP, по которым Apache может фильтровать с помощью виртуальных хостов.

Связанный контент