У меня есть VPC с двумя экземплярами ВМ Compute Engine. Один из них, vpn-server
, действует как VPN для кластера локальных компьютеров. Другой, test-instance
, настроен с тегом экземпляра route-through-vpn
который направляет трафик в vpn-server
если это будет 10.10.0.0/19
.
Существует также экземпляр AppEngine с route-through-vpn
тег экземпляра. Работающее в нем веб-приложение может напрямую подключаться к нашему локальному кластеру.
Эта установка отлично проработала больше года. Затем вчера внезапно перестало работать небольшое количество IP-адресов.
Под "перестала работать" я имею в виду следующее:
vpn-server
.test-instance
не может получить доступ к этим IP-адресам.Один из неверных IP-адресов - 10.10.0.8
. Один IP-адрес, который все еще работает, - 10.10.0.47
. Насколько я могу судить, все адреса правильно соответствуют диапазону адресов 10.10.0.0/19
.
Для отладки я вошел в vpn-server
и test-instance
и попытался отправить ICMP-пакеты из test-instance
на различные IP-адреса в кластере. Я также побежал tcpdump
на vpn-server
чтобы я мог видеть движение транспорта.
Для IP-адресов, которые все еще работают, я видел пакеты ICMP в выводе tcpdump
, как и ожидалось. Но для IP-адресов, которые больше не работают, я ничего не вижу в tcpdump
, указывая на то, что уровень маршрутизации Gcloud даже не отправляет трафик на мой vpn-server
.
Для дальнейшего тестирования я выключил одну из локальных машин, трафик которой маршрутизируется должным образом, и попытался пропинговать ее. Пакеты эхо-запроса ICMP появились в выводе tcpdump
без ответов, как и ожидалось.
У маршрутов Google Cloud не так много вариантов, и нет доступной информации, которая помогла бы мне продолжить расследование, так что теперь кому-то просто нужно знать, почему это произошло.
Кто-нибудь решил такую проблему или есть идеи, в чем может быть причина?
Это больше похоже на проблему с конфигурацией экземпляра или таблицей маршрутизации. Если я правильно понял, IP-адрес 10.10.x.x / 19 принадлежит вашей локальной сети. Мы можем отказаться от правил брандмауэра, поскольку я предполагаю, что у вас есть правило, подобное «разрешить входящий / исходящий трафик из источника / пункта назначения 10.10.0.0 / 19», и если вы видите, что IP-адрес 10.10.0.47 все еще работает, означает, что правило брандмауэра работает, похоже, больше, чем поведение маршрутизации, вы пытались очистить таблицу маршрутов внутри своего экземпляра? Это может помочь обновить вашу таблицу маршрутизации. Я знаю, что у GCP есть возможность использовать экземпляр как шлюз Это похоже на то, что вы делаете.