Redirect to port based on requested (sub)domain (1 IP, non-HTTP request)
Возможный дубликат:
Как использовать DNS для перенаправления домена на определенный порт на моем сервере
So I've been trying to figure out how to redirect a subdomain to a specific port.
Давайте предположим, что приложение всегда будет запрашивать порт по умолчанию, и этот порт по умолчанию, скажем, 30000. У нас есть sub1.domain.com, sub2.domain.com и sub3.domain.com, все они указывают на один и тот же IP-адрес. Я хочу перенаправить запрос на sub1.domain.com:30000 на порт 31000, sub2 на 32000 и sub3 на 33000. Все они на одном IP.
Я пробовал socat/netcat и iptables, но все они разрешают домены в IP-адрес, который в данном случае одинаков, поэтому он нарушает перенаправление.
Есть идеи? Это вообще возможно? У меня есть кое-какие сетевые знания и я немного разбираюсь в уровнях... Проблема здесь межуровневая, поэтому я не уверен, что есть даже способ сделать это, если я не напишу сервер, который прослушивает этот порт и перенаправляет на основе запрашиваемого домена... \
Заранее спасибо.:)
2 ответа
Я не думаю, что iptables может сделать такой трюк. Он лучше подходит для работы с IP-адресами, а не с доменными именами.
Для HTTP-трафика вы можете сделать это, используя прокси-сервер (или HTTP-балансировщик нагрузки), который получит ваш запрос и перенаправит его в соответствии с определенными правилами.
Если это не HTTP-трафик, мы не сможем оказать вам дополнительную помощь, если вы не будете более конкретны. Тем не менее, основная идея может быть такой же, учитывая, что ваш протокол ведет себя так же, как HTTP. Одна важная заметка, упомянутая @Yvette, которая добавляет информацию о хосте (например, Host
заголовок в HTTP). В противном случае вы не сможете распознать запрошенное имя субдомена.
Вы можете попытаться добавить заголовок, определяющий, какой хост запрашивать к вашим запросам.
Это так же, как следующий запрос.
HOST: xxoo1 ** your original request data **