
Я хотел бы создать TCP-прокси, который поддерживает несколько хостов. Пример, который я видел, был, когда DNS-сервер использовался для указания определенного хоста на TCP-прокси, в котором хост был жестко закодирован. TCP-прокси не может обрабатывать несколько хостов, потому что если бы все хосты были направлены на TCP-прокси, прокси не знал бы, куда отправлять данные. Есть ли способы обойти эту проблему?
решение1
TCP работает поверх IP, а IP не имеет понятия хоста (имен), а только IP-адреса.
Таким образом, TCP знает только IP-адреса, но не имена хостов.
Если вы хотите, чтобы что-то обрабатывало имена хостов, вам нужен протокол поверх TCP (например, HTTP, SSH и т. д.) или нужно преобразовывать имена в IP-адреса перед использованием TCP, как это обычно делает DNS.
Или вам нужно, чтобы ваш "TCP" прокси слушал отдельные порты и проксировал вещи в зависимости от того, к какому порту осуществляется доступ. Однако у вас все еще есть проблема сопоставления имен не только с IP-адресом (прокси), но и с его портом, что возможно, но сложнее с DNS (если вы контролируете клиента, вы можете сделать это с помощью SRV
записей или в будущем SVCB
).