Назад | Перейти на главную страницу

Есть ли способ перенаправить порт на основе поддомена?

Возможный дубликат:
Как использовать DNS для перенаправления домена на определенный порт на моем сервере

В основном я хочу иметь что-то вроде этого:

name1.mydomain.com:1234 -> my.internal.ip.address: 10001
name2.mydomain.com:1234 -> my.internal.ip.address: 10002
name3.mydomain.com:1234 -> my.internal.ip.address: 10003
name4.mydomain.com:1234 -> my.internal.ip.address: 10004
name5.mydomain.com:1234 -> другой.internal.ip.address: 10001
name6.mydomain.com:1234 -> другой.internal.ip.address: 10002

Может быть на уровне маршрутизатора, на уровне внутреннего DNS-сервера или даже на каком-либо другом компьютере в локальной сети, на котором запущено какое-то приложение, которое просто передает трафик на соответствующий компьютер через соответствующий порт.

Дополнительные пояснения: это не HTTP-трафик, а наш собственный протокол (наше собственное клиент-серверное приложение, использующее удаленное взаимодействие в .NET).

Хорошо, давайте проясним здесь некоторую путаницу ...

Во-первых, в вашем вопросе нет явного требования, чтобы все эти имена разрешались в один и тот же IP-адрес, поэтому вы можете назначить блок адресов своему маршрутизатору, настроить записи DNS для обеспечения взаимно-однозначного соответствия сопоставление имени с IP-адресом, а затем использование DNAT (преобразование сетевых адресов назначения) для перенаправления трафика на внутренние устройства.

Я продолжу при условии, что у вас нет возможности бросить кучу IP-адресов на проблему.

В общем, для произвольного протокола, работающего внутри TCP или UDP (поскольку другие протоколы, работающие поверх IP, не обязательно имеют какое-либо понятие портов), вы не можете делать то, что хотите, потому что нет гарантии, что там любая информация внутри «потока» трафика, позволяющая выполнять такую ​​маршрутизацию. Некоторые протоколы, пытаясь обойти эту проблему, делать встраивать информацию об имени в свой протокол (например, HTTP, с Host заголовок), и для этих протоколов есть являются обычно прокси-серверы, которые получают запрос, определяют представленное имя и затем направляют запрос в соответствующее место. Некоторые из этих прокси были упомянуты в других ответах, и если их недостаточно, вы, несомненно, получите соответствующие ответы, если сообщите нам, какой протокол уровня 7 вы пытаетесь использовать для прокси.

Однако обширный большинство протоколов не идентифицируют их предполагаемое место назначения на основе имен, и для тех, у кого нет другого выбора, кроме как использовать IP-адреса для управления потоком трафика к различным внутренним конечным точкам.

РЕДАКТИРОВАТЬ: Если вы определяете свой собственный протокол, должна быть возможность встроить имя хоста, к которому вы подключаетесь, где-нибудь внутри него, и тогда вам просто нужно будет написать свой собственный прокси (возможно, как плагин для некоторых существующих часть программного обеспечения), чтобы принять эти запросы, сопоставить их с правильным сервером и передать их.

нет - вы не можете сделать это для общего протокола, хотя это можно сделать для определенных протоколов - например, http путем размещения обратного прокси-сервера, который принимает решение не только на основе IP-адреса / порта, но также - запрошенного имени домена.