Предположим, у меня есть выделенный сервер в host.com
с IPv4-адресом 1.2.3.4
, статически назначаемый IPv6-адрес и достаточное количество дополнительных IPv6-адресов. Этот хост обслуживает несколько KVM в guest.com
, guest0.com
, guest1.com
и так далее, со статически назначенными адресами IPv6. Каков наиболее эффективный способ сделать этих гостей доступными только для клиентов IPv4, использующих IPv4 host.com
?
Примечание. Все хосты работают под управлением Ubuntu 18.04 и различных служб, и доступность должна быть на именованном базовом уровне, а не просто на отдельной службе или порту / сокете.
Учитывая, что для каждой машины только с IPv6 требуется размещение произвольного количества различных сервисов, я думаю, вам не повезло.
По сути, это та же проблема, что и с одним общедоступным IPv4-адресом и набором серверов за ним в сети с диапазоном RFC1918. (например, настроен домашний широкополосный доступ)
Если бы все они размещали службу, которая инкапсулирует имя хоста в протоколе (например, HTTP или HTTPS с SNI), то машина с двойным подключением могла бы легко прокси для них. Но на чистом уровне IP это невозможно сделать, поскольку клиент, работающий только с IPv4, будет использовать DNS для разрешения адреса цели, это может вернуть 2 варианта:
Лучший промежуточный подход, о котором я могу думать, - это использовать SSH для настройки переадресации локального порта клиента через шлюз (как Бастиан хозяин) к целевой машине. Это будет означать, что вам нужно будет запускать SSH-соединение на каждом клиенте, прежде чем пытаться получить доступ к целевому серверу. И вам нужно будет знать, какие службы предлагает этот сервер, перед запуском сеанса ssh, так как ему нужно будет заранее настроить пересылку для каждой службы.