Если вы посмотрите на таблицу маршрутизации вашего экземпляра виртуальной машины, вы увидите, что маршрут по умолчанию настроен на основном сетевом интерфейсе eth0
:
vm-instance:$ ip route
default via 10.156.0.1 dev eth0
...
Будь то эфемерный или статический c Внешний IP-адрес настроен, этот внешний IP-адрес неизвестен операционной системе экземпляра виртуальной машины. Внешний IP-адрес прозрачно отображается на внутренний адрес виртуальной машины с помощью VP C. Вы можете проверить это с помощью команды
vm-instance:$ ip -4 address show
. Вы увидите, что внешние IP-адреса не привязаны. Кроме того, пересылка IP-пакетов отключена как между сетевыми картами экземпляра виртуальной машины, так и сетевыми интерфейсами предоставленного Google Linux. Приведенные ниже команды могут проверить, что:
CloudShell:$ gcloud compute instances describe vm-instance --zone=your-zone | grep canIpForward
vm-instance:$ sudo sysctl net.ipv4.ip_forward
Следовательно, когда пакет ping получен вторичным интерфейсом, он не может ответить.
Чтобы немного изучить это поведение, вы можете запустить tcpdump
на экземпляре виртуальной машины, чтобы прослушивать вторичный интерфейс, например eth1
:
vm-instance:$ sudo apt-get install tcpdump
vm-instance:$ sudo tcpdump -i eth1
, затем узнать внешний IP-адрес вашего устройства Cloud Shell и проверить связь с вторичным внешним IP-адресом вашего экземпляра виртуальной машины. из Cloud Shell:
CloudShell:$ curl ifconfig.me/ip
CloudShell:$ ping [secondary_ip_of_vm_instance]
В выводе tcpdump
на консоли вашего экземпляра виртуальной машины вы увидите, как ICMP-пакеты поступают на интерфейс eth1
с внешнего IP-адреса вашей рабочей станции. Но на них не отвечают.
Google предоставляет объяснение этого поведения в разделе «Устранение неполадок» документации VP C и предлагает возможные обходные пути:
Virtual Private Cloud> Do c> Создание экземпляров с несколькими сетевыми интерфейсами> Устранение неполадок> Я не могу подключиться к дополнительному интерфейсу с помощью внешнего IP-адреса :
DHCP-сервер программирует маршрут по умолчанию только на основном сетевом интерфейсе ВМ. Если вы хотите подключиться к вторичному интерфейсу с помощью внешнего IP-адреса, есть два варианта. Если вам нужно подключиться за пределами сети только через дополнительный сетевой интерфейс, вы можете установить маршрут по умолчанию для этого сетевого интерфейса. В противном случае вы можете использовать Configuring Policy Routing для настройки отдельной таблицы маршрутизации с использованием маршрутизации политики на основе источника в вашей виртуальной машине.