Есть ли возможность перенаправить весь трафик на указанные хосты за NAT?
Например, у меня есть сервер, домен mydomain.com и 3 хоста за NAT. Я хочу настроить 3 поддомена:
host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
и каждый из них перенаправляет все порты на указанный хост в локальной сети.
Это перенаправление должно обеспечивать такую функциональность:
http://host1.mydomain.com (может быть достигнуто с помощью apache)
ssh user@host1.mydomain.com (???)
и другие протоколы на разных портах
Спасибо за любую помощь.
Это можно сделать для HTTP и HTTPS с помощью «обратного прокси», который проверяет информацию заголовка хоста в HTTP-запросе, получает соответствующее содержимое и возвращает его. Это может сделать Microsoft ISA (Internet Security and Acceleration), как и apache / squid в Linux.
Для всех других портов у вас сложнее, потому что большая часть трафика не включает желаемое имя хоста, а только целевой IP (например: «Я хочу использовать SSH для 1.2.3.4» вместо «Я хочу использовать SSH для host1.mydomain». com)
Сопоставить определенные внешние порты внутренним портам легко (порт 22 -> host1: 22, порт 23 - host2: 22, порт 24 -> host3: 22 и т. Д.), И иногда это все, что нужно.
Если вам действительно нужно сопоставить все порты с разными внутренними серверами, вам понадобится несколько внешних IP-адресов, которые могут предоставить большинство интернет-провайдеров (по крайней мере, если у вас есть бизнес-соединение).
apache mod_proxy?
Нет, переадресацию портов на основе имени DNS невозможно. Доменное имя не является частью IP-пакета, поэтому ваш маршрутизатор не может использовать его для распознавания входящих соединений.
Когда удаленный хост подключается к host1.mydomain.com, он преобразует это имя в IP-адрес, который помещается в IP-пакет. Если host2.mydomain.com разрешает тот же IP-адрес, созданный пакет будет выглядеть точно так же, как для host1.mydomain.com.
По этой причине это возможно, если на вашем сервере настроено несколько IP-адресов.
Apache может различать входящее доменное имя, но это на уровне приложения. В HTTP 1.1 браузер отправляет доменное имя в заголовках HTTP, по которым apache может фильтровать с помощью виртуальных хостов.