GCP, базовая настройка IPv6 для экземпляра виртуальной машины Linux

Вопрос или проблема

Я пытаюсь настроить простую виртуальную машину в Google Cloud Platform, которая сможет успешно пинговать ipv6.google.com. Я использую эти документы GCP по поддержке IPv6, включая:

[ПРИМЕЧАНИЕ: Отредактировано/обновлено для предоставления полных команд]

Вот моя простая и повторяемая концепция:

  1. В рамках проекта создайте VPC сеть
$ gcloud config set project my-test-project

$ gcloud compute networks create targetnet \
   --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional
  1. Создайте подсеть с поддержкой IPv6
$ gcloud compute networks subnets create targetnet-1 \
   --network=targetnet --range=10.9.9.0/24 \
   --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL \
   --region=us-west2
  1. Создайте экземпляр с поддержкой IPv6
$ gcloud compute instances create test-1 \
   --stack-type=IPV4_IPV6 --ipv6-network-tier=PREMIUM \
   --subnet=targetnet-1 --zone=us-west2-a \
   --image-family=debian-10 --image-project=debian-cloud \
   --machine-type=e2-micro 
  1. Добавьте правило брандмауэра для предоставления доступа SSH к экземпляру
$ gcloud compute firewall-rules create target-ssh-home \
   --network targetnet --allow tcp:22 --source-ranges <мой IPv4 адрес>
  1. SSH на экземпляр, посмотрите сетевые адреса и маршрут:
$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 state UP qlen 1000
    inet6 2600:1900:xxxx:xxxx:0:1::/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::4001:aff:fe04:2d2/64 scope link 
       valid_lft forever preferred_lft forever

$ ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2600:1900:xxxx:xxxx:0:1:: dev ens4 proto kernel metric 256 pref medium
fe80::/64 dev ens4 proto kernel metric 256 pref medium
default via fe80::4001:aff:fe04:201 dev ens4 proto ra metric 1024 expires 85sec pref medium
  1. Попытайтесь пинговать внешний ресурс IPv6:
$ ping6 ipv6.google.com
PING ipv6.google.com(lax31s01-in-x0e.1e100.net (2607:f8b0:4007:80e::200e)) 56 data bytes
From fe80::4001:ff:fe00:0%ens4 (fe80::4001:ff:fe00:0%ens4): icmp_seq=1 Destination unreachable: No route

Документы указывают, что настройки брандмауэра по умолчанию должны разрешать исходящий ICMP. Тем не менее, я также пробовал добавлять правила брандмауэра для разрешения ICMP (и каждого) сервиса в различных формах, чтобы увидеть, поможет ли это. Это не изменило результат. Также я подтвердил, что GCP добавил маршрут IPv6 по умолчанию для сети. (::/0).

Согласно документации, GCP должен предоставить /64, и сетевому интерфейсу следует назначить первый адрес из этого диапазона. Я этого здесь не вижу. Нужно ли мне что-то сделать на хосте, чтобы это получить? Или есть что-то, что я пропустил и что необходимо в GCP?

Подключение к API и службам Google из VPC через внешние IPv6 адреса в настоящее время не поддерживается. Попытки пинговать ‘ipv6.google.com’ из облачной виртуальной машины через IPv6 часто приводят к ответу ICMP “назначение недоступно”.
Я воспроизвел вашу настройку с шагами, которые вы упомянули, и также получал ту же ошибку “Destination unreachable: No route”, пытаясь пинговать ipv6.google.com, однако мне удалось успешно пинговать другие сайты IPv6, такие как ‘wikipedia.org’.

введите описание изображения здесь

Кроме того, чтобы наилучшим образом использовать ВМ с сетью IPv6, вы можете предпочесть использование балансировки нагрузки GCP с поддержкой IPv6.

Я обнаружил, что даже после открытия брандмауэров на уровне GCP и ufw, мне нужно было добавить inet6 к интерфейсу по умолчанию ens4, который настроил GCP.

На debian я отредактировал: /run/network/interfaces.d/ens4

И добавил: iface ens4 inet6 dhcp

Так что оба inet dhcp и inet6 dhcp были присутствуют.

Ответ или решение

Настройка IPv6 для виртуальной машины в Google Cloud Platform (GCP)

Настройка IPv6 на виртуальной машине (VM) в Google Cloud Platform (GCP) — это важный шаг для обеспечения совместимости с современными сетевыми технологиями. Давайте подробно рассмотрим, как настроить вашу виртуальную машину на GCP для успешной работы с IPv6.

Шаг 1: Создание VPC сети

Первым делом создадим виртуальную частную сеть (VPC). Это делается с помощью следующей команды:

$ gcloud config set project my-test-project
$ gcloud compute networks create targetnet \
   --subnet-mode=custom --mtu=1460 --bgp-routing-mode=regional

Эта команда создаёт новую сеть с кастомной конфигурацией, подходящей для использования IPv6.

Шаг 2: Создание подсети с поддержкой IPv6

Далее, создадим подсеть, которая будет поддерживать IPv6:

$ gcloud compute networks subnets create targetnet-1 \
   --network=targetnet --range=10.9.9.0/24 \
   --stack-type=IPV4_IPV6 --ipv6-access-type=EXTERNAL \
   --region=us-west2

Важно указать параметр --stack-type=IPV4_IPV6, чтобы включить поддержку IPv6.

Шаг 3: Создание виртуальной машины с поддержкой IPv6

Теперь создадим саму виртуальную машину:

$ gcloud compute instances create test-1 \
   --stack-type=IPV4_IPV6 --ipv6-network-tier=PREMIUM \
   --subnet=targetnet-1 --zone=us-west2-a \
   --image-family=debian-10 --image-project=debian-cloud \
   --machine-type=e2-micro

Эта команда создаёт VM с поддержкой IPv6 с использованием образа Debian 10.

Шаг 4: Настройка правил брандмауэра

Чтобы получить доступ к виртуальной машине через SSH, необходимо добавить правило брандмауэра:

$ gcloud compute firewall-rules create target-ssh-home \
   --network targetnet --allow tcp:22 --source-ranges <ваш IPv4 адрес>

Замените <ваш IPv4 адрес> на ваш фактический IP-адрес, чтобы открыть доступ к вашим ресурсам.

Шаг 5: Подключение к виртуальной машине и проверка настроек сети

Подключитесь к вашей VM через SSH и выполните команды для проверки настроек.

$ ip -6 addr
$ ip -6 route

Убедитесь, что ваша сеть настроена правильно и у вас есть глобальный IPv6-адрес.

Шаг 6: Пинг до внешнего IPv6 ресурса

Попробуйте выполнить пинг до внешнего ресурса, например:

$ ping6 ipv6.google.com

Если вы получите сообщение об ошибке с указанием "Destination unreachable: No route", это может означать, что ваше сетевое подключение настроено неправильно или существует конфликт маршрутизации.

Решение потенциальных проблем

Если вы столкнётесь с проблемами, попробуйте следующее:

  1. Проверьте брандмауэр: Убедитесь, что вы открыли необходимые порты и разрешили трафик IPv6.

  2. Настройка интерфейса: Если использование DHCP для получения IPv6-адреса не настроено, выполните следующие действия. Откройте файл конфигурации сетевого интерфейса и добавьте следующую строку:

    iface ens4 inet6 dhcp

    После чего перезагрузите сетевой интерфейс, чтобы изменения вступили в силу.

  3. Используйте IPv6 DNS: Проверьте, что DNS-серверы настроены на поддержку IPv6. Вы можете использовать публичные DNS-серверы от Google, например, 2001:4860:4860::8888.

Заключение

Настройка IPv6 на виртуальной машине GCP включает в себя создание сети и подсети с поддержкой IPv6, настройку брандмауэра и сети на самой VM. Используйте приведенные выше шаги, чтобы уверенно настроить свою среду и обеспечить возможность выполнения запросов к внешним IPv6-ресурсам. Не забудьте протестировать соединение и удовлетворение требованиями конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...