
Итак, основная идея изложена в вопросе выше, но позвольте мне объяснить.
Я думал о хостинге сервера Minecraft внутри виртуальной машины (используя режим моста, чтобы я мог направлять трафик на него через переадресацию портов) на моем выделенном сервере здесь, дома. Недавно друг спросил меня, могу ли я также разместить сервер для его сравнительно небольшого сервера Discord. Естественно, я согласился. Мой план был бы просто открыть вторую виртуальную машину для его сервера и предоставить ему доступ по SSH к ней.
Однако теперь я столкнулся с проблемой использования Minecraft определенного порта для подключения по умолчанию. Я действительно не хочу требовать от людей добавлять номер порта в конце URL. Так как же мне отделить трафик, предназначенный для одной виртуальной машины, от трафика, предназначенного для другой виртуальной машины, если входящий трафик для обеих идет на один и тот же порт? Возможно ли это вообще? Могу ли я перенаправить один и тот же порт на два разных внутренних IP-адреса?
Я думал, что, возможно, стоит использовать mc1.mydomain.com и mc2.mydomain.com, чтобы трафик автоматически направлялся на разные входящие порты, т.е. привязывать порты к доменному имени.
Я понятия не имею, фантазирую ли я о чем-то невозможном. Помощь была бы оценена.
Заранее спасибо.
PS: У меня нет возможности использовать фиксированный IP-адрес, поэтому я ограничен динамическими службами DNS.
решение1
Это невозможно, поскольку один порт TCP может быть перенаправлен только на один внутренний сервер (если только вы не хотите сбалансировать нагрузку между ними, для чего вам потребуется 1) балансировщик нагрузки и 2) два сервера, на которых фактически запущено одно и то же приложение, а не два разных).
Что-то подобное можно сделать только с HTTP(S) с использованием обратного прокси, который может проверять запрошенный URL и отправлять трафик на разные серверы в зависимости от того, что было запрошено; это позволяет публиковать несколько веб-серверов через один и тот же обратный прокси. Но это возможно только потому, что HTTP(S) явно поддерживает это на прикладном уровне. На сетевом уровне ничего подобного нет, там можно работать только с IP-адресами и портами.